2014-10-05 108 views
1

我想弄清楚Casandra的計數器功能的適當用例。我想到了一種情況,我想知道這是否可行。我不太確定,因爲我仍在嘗試使用Cassandra,所以我們將不勝感激。卡桑德拉計數用例

假設你有一個小視頻服務,你記錄卡桑德拉的視圖日誌,同時記錄播放的視頻,哪個用戶播放它,國家,引用等。你顯然要顯示的次數每次插入播放事件時播放的視頻都會增加一個計數器是一個很好的解決方案?或者會有更好的選擇。對每次讀取的所有事件進行計數將會帶來相當大的性能下降,即使緩存了結果,如果您的網站很繁忙,緩存也會很快失效。

任何意見將不勝感激!

回答

2

計數器可用於任何需要在應用程序中統計的數據 - 「前端」數據和「後端」數據。我個人使用它們來存儲用戶的行爲信息(用於後端分析)和前端評級(用戶在我的平臺中進行的每項操作都向用戶提供了一些要點)。有上使用的情況下,沒有真正的限制 - 該限制是由幾個技術限制給出更大的來到我的腦海裏:

  1. 計數器CF只能通過櫃檯列進行(除了PK,很明顯)
  2. 計數器不能復位:0值設置爲你需要閱讀和計算的反寫(沒有的事實保證別人在你面前更新)
  3. 沒有TTL和無索引/刪除之前

至於你的視頻服務,這一切都取決於你如何選擇模式l數據 - 如果你發現一個有效的模型在每次你寫/讀的時候擊中幾個分區,並且你有一個很好的密鑰分發,我沒有看到它的實現有任何真正的問題。

順便說一句:你標記的卡珊德拉2.0,但如果你必須使用計數器,你應該想到的理由約2.1描述here

+0

感謝卡羅,最後一兩件事。你有沒有在櫃檯的完整性問題。防爆。如果我記錄每個事件的日誌並在寫入時增加計數器,我應該關心計數器值最終不正確嗎?如果我正在尋找準確度,應該使用cassandra計數器嗎?另外對於視頻用例,有沒有更好的方法可以讓你知道保持精確的計數而不會影響性能,我真的不希望依賴讀取,因爲我希望擁有數百萬的日誌。 Redis想到了嗎? – 2014-10-05 12:09:28

+0

傑西我到目前爲止沒有任何關於櫃檯的問題(我已經使用了至少3年) - 但我嚴格遵守有關櫃檯的規則。在Cassandra 2.1中,您可以調整它們以獲得更好的性能。對於您的使用情況,爲了更好地實施,您應該提供您需要保存的準確數據以及您想要執行的查詢(統計用戶看到的視頻,統計有多少用戶看過視頻等) 。我建議你在一個關於數據模型的新干淨文章中這樣做。問候,卡羅 – 2014-10-05 12:35:43

+0

是的,我剛剛閱讀2.1計數器的文章,這聽起來像一個重大的改進。我的查詢是非常簡單的,我只想每個項目準確的全球統計。沒有奇特的疑問。如果你能回答我會很感激,但非常感謝卡羅的洞察力。 – 2014-10-05 12:40:26