2009/11/29 Sergey Zhuravlev <[email protected]>: > Привет. > > Модуль клёвый. > Только запрос из intersections - это index range scan, в среднем на > половину таблички.
Не уверен, что это будет половина таблички. Нужно посмотреть логи. Конечно для нагруженного пректа я бы сделал по другому. Разбил бы все на три структуры и индекс в памяти: my $index_length = 8; # индекс - массив из 2^$index_lenght элементов my @index = ( <индекс первого блока, где $index_lenght первых бит начала блока == 0> <индекс первого блока, где $index_lenght первых бит начала блока == 1> <индекс первого блока, где $index_lenght первых бит начала блока == 2> .... ); В зависимости от размера маски меняется объем используемой памяти. Уже с этого момента можно посылать в БД, то есть указатели у нас просто дополнят условия поиска, а можно в память смотреть: my @blocks = ( [start, end, coordinates], ... ); my @coordinates = ( [long, lat, city], ... ); my @cities = ( [name, region, federal_district], ); Есть лучше идеи? > На нагруженных проектах это может вызвать проблемы, хотя, в случае > mysql и 128'000 записей это достаточно быстро. Мне нужно было простое решение. Десяток поисков в день в окружении, где и так памяти не очень много. > 2009/11/29 Ruslan Zakirov <[email protected]>: >> Всем привет, >> >> Недавно мы обсуждали определение положения по IP адресу. Мне >> посоветовали БД от http://ipgeobase.ru. >> >> Я рад, что существует такой ресурс. Был немного удивлен примерами кода >> и очень удивлен структурой БД. Код на perl страшен, достаточно сделать >> для него perltidy и он уже становится читабельный. Алгоритм тоже не >> сахар, но это издержки структуры файла. Переключение на указание >> смещения вместо номеров строк, позволит сделать быстрый поиск прямо из >> файлов без полного сканирования или загрузки их в память. >> >> В итоге решил отказаться от работы с файлами и заливать все в табличку >> БД. Написал скрипт обновления БД и модуль для работы. Пока не на >> CPANе, но если не будет конструктивной критики и успешно уйдет в >> продакшн, то залью на цпан и в гитхаб. >> >> -- >> Веселой гео локации, Руслан. >> >> -- >> Moscow.pm mailing list >> [email protected] | http://moscow.pm.org >> >> > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- Best regards, Ruslan. -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
