[Moscow.pm] Написал интерфейс к базе от ipgeobase.ru

spleenjack spleenjack на gmail.com
Пн Ноя 30 14:21:59 PST 2009


У maxmind база по России точно хуже.
Насчет мелких блоков, которые сильно не связаны географически с внешним 
большим - думаю, это нормально. Видимо когда-то были выделены большие 
диапазоны, потом начало не хватать, ну и наделили как смогли.

Есть еще предложения:
   - сделать возможность сжатия следующих друг за другом диапазонов 
одного и того же региона (например, 1-4 + 5-8 + 9 + 10-20 = 1-20)
   - хранение сжатой базы в памяти в таком виде, чтобы можно было быстро 
найти вхождение ip в нужный диапазон (можно как раз с индексом, который 
ранее был описан, или подобрать какое-нибудь подходящий алгоритм)

ЗЫ: Кстати, я тогда это сжатие реализовал. Как сильно уменьшилось кол-во 
записей не могу сказать, но если посмотреть на данные - соседей там 
очень много, должен хороший выигрыш получится.

Ruslan Zakirov пишет:
> Привет,
> 
> Поискал вчера пересечения. Да, есть они там и их относительно не
> много. Вернее так. Есть несколько больших блоков, которые относятся к
> целым регионам, но некоторые мелкие блоки внутри находятся по данным в
> другой части страны. Странно все это. Можно попытаться сравнить данные
> с maxmind'ом и оценить разницу, но это отдельная задача для тех, кто
> нуждается в абсолютно точной локации.
> 
> 2009/11/29 spleenjack <spleenjack на gmail.com>:
>> Год назад прикручивал гео-локацию с использованием этой базы. Долго
>> ковырялся с форматом и с самими данными.
>>
>> Выяснилось, что там много неконсистентности, пропусков и ошибок с наложением
>> диапазонов. Например,  диапазон 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