2014-10-18 64 views
0

我想學習卡桑德拉。我不清楚的一件事是如何讓Cassandra發佈各種表格。即說我有時間序列數據進入表t1,t2,t3卡桑德拉 - 分佈式數據和多表(數據建模)

T1是重負載(比例爲2000:2:4的行數)。 我希望給定日期的T1數據與T2或T3不在同一臺機器上;所以我的查詢分佈均勻,即不會在一臺機器上投入太多負載。

此外,隨着數據變老,查詢次數減少,我該如何考慮這個因素。

問候

回答

1

Cassandra是自動分發,你沒有上得到的數據是如何分佈的直接控制。在大多數情況下,默認情況下,它使用行密鑰上的md5,並根據它選擇將使用哪些節點(計算機)來保存數據。

你說的是更多的標準SQL數據庫規劃。但是,如果生成的數據量非常大,只能由一些後端進程和用戶使用,則可以有一個由2個或3個節點組成的獨立羣集。這樣你的其他表格就不會受到這些統計數據的影響。

然而,卡桑德拉的真正力量是用於一個大集羣。如果速度變慢,請爲其添加節點並進行必要的修復以正確傳播數據。這就是...非常多。

至於表格的使用方式,您可以使用表格中定義的所有參數來調整其設置。如果你主要寫一個表,那麼你可以調整參數來獲得更快的寫入和更慢的讀取。反過來也是可用的:一次寫入,多次讀取。還有許多寫作和許多讀物。要調整這些設置,在大多數情況下,您需要運行軟件並收集各種統計信息並隨着時間的推移進行更改。


更新:

其實有一個解決方案,想着它,只是......我從來沒有使用該模式,所以我沒有去想它。

當您使用支持排序行的羣集時,可以使用特定的行名稱,然後數據將轉到特定的節點。再一次,你不能直接控制哪裏發生了什麼,但如果你真的想這樣做,那可能是你正在尋找的解決方案。

在這種情況下,行名稱將以數字開頭,例如T1數據爲0x0001,T2和T3爲0x0100和0x0200。既然你不知道數據到底在哪裏以及Cassandra如何決定使用它,在這裏獲得正確的結果相當複雜。如果你改變了你的羣集(即添加節點),那麼你對數據所在的位置的所有假設都可能去廁所! (這不是說升級到Cassandra的新版本......)