在卡桑德拉,我可以創建一個複合分區鍵,從我的聚集鍵單獨查詢卡桑德拉:通過部分分區鍵
CREATE TABLE footable (
column1 text,
column2 text,
column3 text,
column4 text,
PRIMARY KEY ((column1, column2))
)
據我所知,quering由分區鍵是一個非常有效的(最高效?)的方法來檢索數據。但是,我不知道的是,僅查詢複合分區鍵的一部分是否也是有效的。
在MSSQL中,只要組件包含在第一個(本例中爲column1而不是column2)開頭,就會有效。卡桑德拉的情況也是這樣嗎?查詢僅基於column1的行是否高效?
如果您只想查詢主鍵的一部分,可以將其定義爲PRIMARY KEY(column1,column2)。但是,這意味着分區(數據存儲的位置)僅由column1確定。這可能會導致熱節點或其他問題,具體取決於column1的基數。如果你提供了關於你的模式的更多細節(特別是column1和column2代表什麼),我們可能會爲你提供一個有效的中間立場。 – mildewey 2014-12-03 19:23:55
我在這裏尋找更多的一般策略,而不是特別的建議。然而,我的實際問題並不是我最終會出現熱點,而是因爲我也在使用羣集密鑰(時間戳),所以在某些時候我可能會超過20億列的限制。 – Mark 2014-12-03 20:29:04
@mildewey也是非常清楚的,我在詢問基於部分*分區*鍵的查詢,而不是* primary *鍵的一部分。某種程度上,可以在分區鍵的最後部分使用IN子句。這對我的用例來說已經足夠了。 – Mark 2014-12-03 20:31:12