Мой сервер генерирует огромное количество журналов транзакций.Каждая запись содержит информацию об URL-адресе, пользователе, производителе и соответствующем продукте.Пример записи может быть следующим:
{transaction_id: 1, url: "http://example.com/", user_agent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7", manufacturer_id: 2, product_id: 3}
Я сохраняю эти журналы только в течение месяца, затем отбрасываю старые, чтобы освободить место для новых.
Что мне нужно, так этоотвечать на вопросы типа «Сколько раз Продукт-3 отображался по URL http://example.com/ каждый день?»или «Сколько раз пользователь с Firefox 10 запрашивал продукт производителя-2 каждый день?».Все отчеты ежедневные, но способы группировки могут со временем увеличиваться.Кроме того, я должен иметь возможность хранить данные в течение многих лет.
Какую систему баз данных вы рекомендуете для гибкого объединения журналов?
Я рассмотрел,
- MySQL : хранилище удобно и легко архивировать, но требует изменения таблиц и переписывания запросов при каждом изменении агрегации.
- CouchDB : картаПодход -reduce хорош, но его система ревизий не подходит для подсчета (не так ли?).
- Redis : идеально подходит для подсчета в памяти, но его сложно запросить инеобходимо поместить все данные в память.
- MongoDB : Легко создавать новые типы агрегаций и идеально подходит для подсчета на диске, но, похоже, не так уж и удобно для хранения, и этоне выглядит так же стабильно, как MySQL и CouchDB.
Я склонен к MongoDB.Что ты думаешь?