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

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

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

Ruslan Zakirov пишет:
Привет,

Поискал вчера пересечения. Да, есть они там и их относительно не
много. Вернее так. Есть несколько больших блоков, которые относятся к
целым регионам, но некоторые мелкие блоки внутри находятся по данным в
другой части страны. Странно все это. Можно попытаться сравнить данные
с maxmind'ом и оценить разницу, но это отдельная задача для тех, кто
нуждается в абсолютно точной локации.

2009/11/29 spleenjack <[email protected]>:
Год назад прикручивал гео-локацию с использованием этой базы. Долго
ковырялся с форматом и с самими данными.

Выяснилось, что там много неконсистентности, пропусков и ошибок с наложением
диапазонов. Например,  диапазон 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

Ответить