Re: Log files
- From
- Andrey Belyakov ()
- To
- All
- Date
- 2000-03-02T17:15:34Z
- Area
- RU.ALGORITHMS
From: "Andrey Belyakov" <andrejb@care.lv>
Hi, Boris Rudakov !
> RV> Есть лог файл, задача - найти самые встречающиеся
> RV> ip адреса, т.е. получить отчет типа:
> RV> ip count
> RV> -+---------------------------
> RV> 195.12.12.12 20
> RV> 203.12.32.23. 15
> RV> 195.64.23.105 8
> Что можеть проще...
>
> RV> В чем собственно проблема - формируешь обыкновенный
> RV> список, а затем просто сортируешь и выводишь результат.
> Неправильно. Сортировать надо в момент вставки. А данные
> держать например в дереве. Можно в сбалансированном.
Задача - типичная для базы. Прилеплять сюда что-то еще это...
хм-м-ммм... себе дороже.
> RV> Проблема в том, что этот список может быть очень
> RV> большым - несколько миллионов, это:
> Тогда в B-Дереве. На диске. Страничками этак по 4k.
> RV> Как быть? У кого какие идеи?
> B-Дерево. Что это и как это реализовать смотри в литературе:
> у Вирта, Кнута и т.п. Можешь взять готовую реализацию -
> поищи в ИНете, их полно.
Нужно:
Разобрать формат лога, при необходимости написать фильтр или
конвертор в фиксированный формат. По опыту - логи не содержат
более трех-четырех типов записей и конвертер пишется за пару
часов. Все что надо - привести записи в одинаковый вид.
Импортировать все записи в базу. Любую - ACCESS вполне
подойдет.
Выполнить один запрос с группировкой и получить результат.
Несколько миллионов - минут на 30-40.
Часа на три работы. И то если встраивать проверку в базу.
2BR Возможно работа со страничками 4к и B-деревьями
позволит получить более быструю программу, но суммарное
время на разработку + разовый (в месяц) расчет будет
значительно больше.
Андрей.
--- ifmail v.2.15dev4
* Origin: Demos online service (2:5020/400)