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

Ruslan Zakirov ruslan.zakirov на gmail.com
Вс Ноя 29 11:13:21 PST 2009


2009/11/29 Sergey Zhuravlev <sergey.zhuravlev на gmail.com>:
> Привет.
>
> Модуль клёвый.
> Только запрос из 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 <ruz на bestpractical.com>:
>> Всем привет,
>>
>> Недавно мы обсуждали определение положения по IP адресу. Мне
>> посоветовали БД от http://ipgeobase.ru.
>>
>> Я рад, что существует такой ресурс. Был немного удивлен примерами кода
>> и очень удивлен структурой БД. Код на perl страшен, достаточно сделать
>> для него perltidy и он уже становится читабельный. Алгоритм тоже не
>> сахар, но это издержки структуры файла. Переключение на указание
>> смещения вместо номеров строк, позволит сделать быстрый поиск прямо из
>> файлов без полного сканирования или загрузки их в память.
>>
>> В итоге решил отказаться от работы с файлами и заливать все в табличку
>> БД. Написал скрипт обновления БД и модуль для работы. Пока не на
>> CPANе, но если не будет конструктивной критики и успешно уйдет в
>> продакшн, то залью на цпан и в гитхаб.
>>
>> --
>> Веселой гео локации, Руслан.
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards, Ruslan.


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