在給定的物理節點上,給定分區鍵的行按聚簇鍵引發的順序存儲,使得以該聚類順序檢索行特別有效。 http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt集羣密鑰引發了什麼樣的排序?在Cassandra中聚類密鑰
18
A
回答
34
假設你的集羣鍵
k1 t1, k2 t2, ..., kn tn
其中,ki是第i個鍵名和Ti是第i個密鑰類型。然後訂單數據以字典順序存儲,其中使用該類型的比較器比較每個維度。
所以(A1,A2,...,AN)<(B1,B2,...,BN)如果A1 < B1使用T1比較,或A1 = B1和a2 < B2使用T2比較,或( a1 = b1和a2 = b2)和a3 < b3使用t3比較器等。
這意味着找到具有某個k1 = a的所有行是有效的,因爲數據一起存儲。但是,對於i> 1來說,找到所有具有ki = x的行是低效的。實際上,這樣的查詢是不允許的 - 唯一允許指定零個或多個集羣密鑰的集羣密鑰約束,從第一個開始沒有丟失。
例如,考慮架構
create table clustering (
x text,
k1 text,
k2 int,
k3 timestamp,
y text,
primary key (x, k1, k2, k3)
);
如果你做了以下插入:
insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 1, '2013-09-10 14:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 13:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 2, '2013-09-10 13:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 14:00+0000', '1');
然後它們被存儲在該訂單上盤(順序select * from clustering where x = 'x'
回報):
x | k1 | k2 | k3 | y
---+----+----+--------------------------+---
x | a | 1 | 2013-09-10 14:00:00+0000 | 1
x | a | 2 | 2013-09-10 13:00:00+0000 | 1
x | b | 1 | 2013-09-10 13:00:00+0000 | 1
x | b | 1 | 2013-09-10 14:00:00+0000 | 1
排序佔優,則k2
,然後k3
。
相關問題
- 1. 在cassandra中複製密鑰?
- 2. cassandra中的密鑰庫密碼如何加密?
- 3. Cassandra的最大密鑰大小
- 4. Cassandra:沒有密鑰空間的環
- 5. Cassandra CQL克隆密鑰空間模式
- 6. Cassandra集羣密鑰無法訂購
- 7. 創建密鑰空間時出錯 - cassandra
- 8. Cassandra IllegalArgumentException創建密鑰空間
- 9. 如何查詢cassandra的一組密鑰?
- 10. Python Cassandra不會創建密鑰空間
- 11. Cassandra:獲取密鑰空間大小
- 12. Cassandra密鑰空間不能複製
- 13. 從Cassandra的密鑰類型TimeUUID獲取價值-PHP
- 14. 如何使用R在cassandra中創建密鑰空間和表?
- 15. Cassandra CLI:RowKey with RandomPartitioner =在明文中顯示密鑰?
- 16. 在cassandra中擁有多個集羣密鑰有什麼好處?
- 17. 如何在cassandra中創建密鑰空間?
- 18. 在Cassandra中獲取密鑰空間的創建時間
- 19. Cassandra如何在表中添加集羣密鑰?
- 20. Cassandra聚合
- 21. 聚合火焰同步空密鑰
- 22. SQL聚合密鑰並獲取主鍵
- 23. elasticsearch聚合排序存儲桶密鑰
- 24. 過濾聚合存儲桶密鑰?
- 25. MongoDB的聚合:獲取密鑰,值對
- 26. 只用一個密鑰在密鑰中查找密鑰名稱?
- 27. Cassandra在其中一個聚類列中更新值
- 28. Cassandra數據聚合
- 29. 如何在cassandra中爲聚類列選擇所有行?
- 30. 當多個sstables中存在相同的密鑰時,cassandra密鑰緩存如何工作?
謝謝理查德。你能舉個例子嗎? – Vinodh
我給我的答案添加了一個例子。 – Richard
非常感謝Richard。在您的示例中,我能夠理解集羣列和CQL文檔「爲PRIMARY KEY定義列的順序」。從http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt。 – Vinodh