[Moscow.pm] Поворот массивов

Kaltashkin Eugene zhecka на gmail.com
Пн Мар 3 05:57:28 PST 2008


Доброе время суток.

Думал написать или не стоит. Решил написать.
Есть некоторая задачка.
Она уже отчасти решена, но хочется красивости.

Периодически возникает необходимость считать спам статистику за огромные 
промежутки времени.
Пример посчитанной статистики.
http://zhecka.323f.net.ru/server/18.02.2008/stat.html
Берётся база geoip и два лога от почтовой системы.
В логах есть соответствие
<IPADDR>:<SCORE> и <IPADDR>:<TYPEOFREJECT>
в базе GEOIP соответствие
<IPNET>:<COUNTRY>

просчёт идет по следующему принципу
$country = geoiplookup{$ipaddr}
потом
$zone{$country}->{parameter: ex hour}->{$type_of_count}++
Пересчёт массива в 9.000.000 записей занимает примерно 2-3 минуты.
База GEOIP примерно 85.000 записей.
Может кто сталкивался и есть ли какая схема для поворота массивов.
т.е. при выводе таблицы без дополнительных расчётов поворачивать
любые поля массива, меняя условия вывода и зависимостей не теряя значений.
Например сделать отдельно вывод по часам, по типу реджектов, по геозоне 
и т.д.
без доп.пересчёта. С двухмерниками вроде всё просто, а вот с трёхмерными ?
SQL не предлагать :) уже попробовали. Ему от таких массивов плохо 
становится.










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