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

Eugene Ardarov spleenjack на gmail.com
Вт Дек 1 01:15:18 PST 2009


Нужно t1.iend + 1  = t2.istart :)

1 декабря 2009 г. 2:53 пользователь Ruslan Zakirov
<ruslan.zakirov на gmail.com> написал:
> 1984 стыкующихся блока (t1.iend  = t2.istart )
>
> Из них только один имеет различные значения по полям city, country,
> federal_district. И тот 1 размера с конечным нулем.
>
> 2009/12/1 spleenjack <spleenjack на gmail.com>:
>> У 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 mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
>
> --
> Best regards, Ruslan.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


Подробная информация о списке рассылки Moscow-pm