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