我的服務器生成大量的事務日誌。每條記錄都包含有關引薦者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}
我保存這些日誌僅一個月,然後我拋棄舊的,以騰出空間給新的。
我需要回答的問題是「每天在URL http://example.com/上顯示產品-3多少次?」或者「Firefox 10的用戶每天要求製造商-2的產品多少次?」。所有報告都是每日報道的,但分組的方式可能會隨時間而增加。另外,我應該可以將數據存儲多年。
你推薦什麼數據庫系統來靈活地聚合日誌?
我認爲,
- MySQL的:存儲友好和易於存檔,但需要改變的表和每個聚集變更時間重寫查詢。
- CouchDB:Map-Reduce方法很好,但它的修改系統不適合計數(不是嗎?)。
- Redis:完美的內存計數,但很難查詢,並需要適合所有的數據到內存。
- MongoDB:易於創建新類型的聚合,並且非常適合在磁盤上進行計數,但它看起來並不像MySQL和CouchDB那麼穩定。
我傾向於MongoDB。你怎麼看?
是否有任何理由不能使用通過您的日誌並顯示統計信息的現有軟件 - 類似AWStats的情況? – 2012-02-06 13:19:23
@Grim ...日誌由服務器爲每個事務生成,而不是每個請求(我應該指出這一點),並且有自定義字段,如manufacturer_id和product_id,這些字段不存儲在URL中。我可能會檢查AWStats如何工作。謝謝! – 2012-02-06 13:27:54
有許多不同的統計軟件包(很多可以很好地處理自定義字段),它可能是一個更好的解決方案。但只有你知道那個答案! – 2012-02-06 13:30:31