因此,我定義了一個使用組合鍵作爲行鍵的列族。所以說複合鍵是CompositeType(LongType,LongType)
。所以我測試了這種類型的存儲項目,並且工作正常,當我知道完整的密鑰時,SELECT
也按預期工作。但讓我們說我想要所有有0作爲第一個元素和任何第二個的鍵。到目前爲止,我可以看到執行此查詢的唯一方法如下:在cassandra中選擇組合類型鍵
,如果我是0所有的鍵:*然後我會做一個CQL查詢key >= 0:0 AND key < 1:0
其中只要有一個保序工作分區。
我的問題是:
1)僅僅是因爲我使用的是CQL驅動程序(僅適用於除了節儉的NodeJS)
2)選項,這個奇怪的語法是有這種類型的任何低效率查詢?基本上我使用的是組合鍵而不是超級列,因爲這些在CQL中不受支持。在代碼中處理這個邏輯沒有問題,只要沒有像這樣使用它的限制。
你說得對,它將使用列而不是行鍵作爲組合,但是有什麼理由不使用行鍵嗎?我知道即使數據均勻分佈,排序也會導致負載不平衡的問題。但是我所有的密鑰都是以sha1的至少8個字節開始的,這應該消除這個問題。 – user1084563 2012-08-03 17:32:27
現在我記得我的推理,所以從你說的我知道我可以做的關鍵作爲LongType,現在的列可以是CompositeType(LongType,UTF8Type)。但是,如果他們不完全相同,我現在不能喪失聲明價值類型的能力嗎?就像如果一列是一個很長的值,另一列是utf8的值,我現在需要說所有列都是BytesType,因爲我不再有靜態列名稱了?然後我失去了cassandra爲我進行類型轉換的功能吧?我在這裏錯過了什麼嗎? – user1084563 2012-08-03 17:35:38
根據我的理解,您將有兩個選項,按照您所說的以字節存儲,另一個選項是使用Dynamic Composites存儲值。 DC允許您擁有具有不同數據類型的單個組件。 – Mohit 2012-08-03 20:41:09