背景/意圖:一次增加數百個計數器,redis或mongodb?
所以我要從頭開始創建一個事件跟蹤器,並有幾個關於如何做到這一點的想法,但我不確定的最佳方式與數據庫方面着手東西的。我有興趣做的一件事是允許這些事件是完全動態的,但同時允許報告關係事件計數器。
例如,所有國家按操作系統細分。預期的效果將是:
- 美事件#
- 的iOS - 事件#,在美國發生
- 的Android - 事件#,在美國發生
- CA#的事件
- iOS - 發生在CA的事件數#
- Android - 發生在CA中的事件數#
- 等
我的意圖是要能夠接受這些事件的名字,像這樣:
/?country=US&os=iOS&device=iPhone&color=blue&carrier=Sprint&city=orlando&state=FL&randomParam=123&randomParam2=456&randomParam3=789
爲了做關係計數器像上面我這意味着每個請求可能會增加100+個計數器。
假設每天會有上千萬的上述請求。
我想讓事情完全保持動態,而且我也希望以這種方式進行,以便數據查找保持超級快速。因此,我一直在研究如何使用redis或mongodb。
問題:
有沒有更好的辦法,同時保持動態的領域做到這一點,然後櫃檯?
如果這是全部在一個文件中(結構像一棵樹),將在mongodb中使用$ inc操作符在一次操作中同時增加100個以上的計數器是可行的而不是緩慢的?這裏的好處是,我可以在單個查詢中快速檢索一個「廣告系列」的所有統計信息。
這會更適合於redis併爲事件的所有適用計數器執行鋅比?
感謝
如何「動態」你需要它?即什麼延遲?另一種方法是爲每個事件存儲文檔,然後定期使用map-reduce來彙總數據。這樣的方法也可以讓你改變事後報告的內容(例如添加'奧蘭多'的自定義報告)。 – 2012-07-11 22:38:43
由於這是更多的市場營銷信息,它將是理想的儘快提供。爲什麼我認爲櫃檯可能很適合的另一個原因。 – Ataraxy 2012-07-12 00:51:02