Год назад прикручивал гео-локацию с использованием этой базы. Долго
ковырялся с форматом и с самими данными.
Выяснилось, что там много неконсистентности, пропусков и ошибок с
наложением диапазонов. Например, диапазон 1-10 отмечен как Москва, и
далее идет три поддиапазона: 3-5 на Владивосток, 5-7 на Питер, 9 на
Тверь. Здесь перекрытие 5-ки (непонятно, куда именно она относится), нет
поддиапазонов для 1-2, 8 и 10.
А так как каждый ip нужно было определять быстро и однозначно, пришлось
такие ошибки отлавливать, правильно разбивать вложенные диапазоны,
отлавливать дырки и прочее. (Плюс была причина в связке с украинскими
диапазонами, взятыми из базы от maxmind, но это в принципе неважно).
Может такие заморочки и не нужны вовсе, да и база сама наверняка уже
стала точнее и правильнее. Так, а я вообще к чему все это?.. :) Либа
может такие непонятки отлавливать?
Ruslan Zakirov пишет:
Всем привет,
Недавно мы обсуждали определение положения по IP адресу. Мне
посоветовали БД от http://ipgeobase.ru.
Я рад, что существует такой ресурс. Был немного удивлен примерами кода
и очень удивлен структурой БД. Код на perl страшен, достаточно сделать
для него perltidy и он уже становится читабельный. Алгоритм тоже не
сахар, но это издержки структуры файла. Переключение на указание
смещения вместо номеров строк, позволит сделать быстрый поиск прямо из
файлов без полного сканирования или загрузки их в память.
В итоге решил отказаться от работы с файлами и заливать все в табличку
БД. Написал скрипт обновления БД и модуль для работы. Пока не на
CPANе, но если не будет конструктивной критики и успешно уйдет в
продакшн, то залью на цпан и в гитхаб.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org