我的服务器生成大量事务日志。每条记录都包含有关引用 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}
我只存储这些日志一个月,然后我丢弃旧的为新的腾出空间。
我需要回答诸如“Product-3每天在 URL http://example.com/上显示多少次?”之类的问题。或“使用 Firefox 10 的用户每天请求制造商 2 的产品多少次?”。所有报告都是每日报告,但分组方式可能会随着时间的推移而增加。此外,我应该能够将数据存储多年。
您推荐什么数据库系统以灵活的方式聚合日志?
我考虑过,
- MySQL:存储友好且易于归档,但每次更改聚合时都需要更改表和重写查询。
- CouchDB:Map-reduce 方法很好,但它的修订系统不适合计数(不是吗?)。
- Redis:非常适合内存计数,但很难查询,需要将所有数据都放入内存。
- MongoDB:易于创建新的聚合类型,非常适合磁盘计数,但它似乎对存储不太友好,而且它似乎也不像 MySQL 和 CouchDB 那样稳定。
我倾向于 MongoDB。你怎么看?