回答
你可以得到卡桑德拉告訴你哪個節點(或多個)特定的鍵與nodetool getendpoints 。
$ nodetool getendpoints mykeyspace tbl '8546200'
192.168.73.188
192.168.73.190
我不知道這是你在找什麼或不是。 AFAIK沒有辦法平坦地查詢表或鍵空間中所有行的負責節點。但正如Blake指出的那樣,您的應用程序並不需要擔心這一點。
如果你真的想知道,你可以使用分區鍵上的token
函數來查詢你的表。這裏有一個使用Blake模式的例子:
SELECT token(partition_key),partition_key FROM tbl;
這會列出你的分區密鑰的散列標記。然後,您可以運行一個nodetool ring
列出每個節點的令牌範圍,並查看哪個節點負責該範圍。請注意,如果您使用的是vNode,則輸出會非常大(默認情況下,每個輸出爲256行)。
Cassandra對行的分區鍵使用一致的哈希來確定數據的存儲位置。令牌被分配給節點,並且分區密鑰的一致散列決定哪個節點將存儲該行。
分區鍵是主鍵在你的表定義或嵌套的括號環和一致性哈希上
CREATE TABLE tbl (
partition_key INT,
clus_key TEXT,
...,
PRIMARY KEY((partition_key), clus_key);
一些閱讀here第一部分。您可能正在使用vNodes,所以我也會在這裏讀一下。
在查詢的時候,你不必擔心哪個節點有什麼。您的C *驅動程序將從列表中選擇一個協調節點,該節點將根據您的查詢查找行。
如果你想看到什麼查詢在CQLSH做,嘗試啓用跟蹤的詳細信息:
> TRACING ON;
> SELECT * FROM table;
> Tracing session: 1f6b4440-050f-11e5-ba41-672ef88f159d
> ....
> <Details about the query>
> ....
感謝您的快速響應!環和一致的哈希值是有道理的,但有沒有辦法看到幕後所有這些事情。特別是,有沒有辦法知道給每個節點分配了哪些散列值範圍,以及分區鍵產生的散列值(然後知道哪些數據存儲在哪個節點)? – user3376961
Bryce提供的答案有一些答案: nodetool getendpoints
- 1. 確定哪些行鍵存儲在Cassandra的哪個節點上
- 2. 在本地節點上製作cassandra存儲數據
- 3. Cassandra:控制哪個節點接收數據
- 4. 元數據是否存儲在Cassandra集羣的每個節點中?
- 5. 我應該連接哪個Cassandra節點?
- 6. Cassandra數據存儲大小
- 7. npm存儲節點模塊在哪裏?
- 8. 節點:如何存儲JSON數組在谷歌數據存儲
- 9. cassandra中的數據存儲問題
- 10. Apache Cassandra磁盤上的數據存儲
- 11. 如何僅使用Cassandra節點上的存儲引擎?
- 12. HDFS中哪個節點要求數據?
- 13. 將多節點Cassandra集羣中的數據移動到單個節點實例
- 14. cassandra如何查詢另一個節點的SSTable中存在的數據
- 15. 哪個變量在gcc中存儲C GENERIC AST的根節點?
- 16. 存儲類別(多個父節點)的數據模型
- 17. 分佈式數據存儲 - Hazelcast與Cassandra
- 18. 在cassandra中存儲冗餘數據
- 19. Mongodb和Cassandra數據存儲機制
- 20. Cassandra在BLOB中存儲數據
- 21. Cassandra具有相同節點的多個數據中心
- 22. Cassandra從一個關閉的節點請求數據?
- 23. 存儲在節點
- 24. 在哪裏存儲數據?
- 25. 數據存儲在哪裏?
- 26. Cassandra數據庫,哪個python接口?
- 27. Cassandra NoHostAvailableException存在活動節點時
- 28. cassandra節點限制
- 29. Cassandra nodetool命令查看每個節點中有多少數據存在
- 30. Cassandra DB:可以在Cassandra數據庫中存儲XML文件嗎?
謝謝!這正是我所期待的 – user3376961