2012-10-22 54 views
1

我每秒鐘收到1000個不同的事件,(4個節點羣集)。每次事件之後,我需要增加一些計數器。我的問題是,是不是最好有一個正常的家庭列其中只有一列,所有的櫃檯都像字符串處理逗號「」分隔(例如:‘1,3,5,6,0,2’)或創建一個具有多個列的Counter Column系列會更好嗎?我讀了一些文檔說它的櫃檯系列可以讀取和寫入一致性級別爲1的快速讀取。我不太關心寫作表現。cassandra 1大列vs多列閱讀表現中的小列?

回答

0

我想這取決於你是如何接收事件和延遲的要求。

如果從同時在多個來源接收他們需要儘快它似乎櫃檯將是更好的方法寫入數據。隨着一個大列,你就需要序列所有寫入任何柱以及讀取當前值。這也可能使應用程序代碼不必要地複雜化。如果性能出現問題,您可以嘗試啓用計數器列家族的行緩存。我從來沒有試圖緩存一個櫃檯專欄,但我沒有看到任何文檔說它不被支持。您可以嘗試一下並檢查JMX統計信息以查看它是否正常工作。

如果您收到事件單線程,可以爲1000個事件做這樣的事情讀取數據,然後寫一次卡桑德拉,同時保持在內存中當前的計數器值,則單個列可能被罰款。但是你需要認識到,如果你碰巧需要一次讀取一些計數器值,那麼在每次讀取時都會獲取大量不必要的數據。除非你做了一些測試,表明一列顯着更好,我會傾向於使用計數器。