Cassandra在哪个节点上存储数据?

use*_*961 4 cassandra distributed-database

是否有命令或任何方式知道什么数据存储在Cassandra的哪些节点上?

我对Cassandra很新,并且没有太多运气在谷歌搜索这个问题.

谢谢!

Aar*_*ron 5

您可以让Cassandra通过nodetool getendpoints告诉您特定键所在的节点.

$ nodetool getendpoints mykeyspace tbl '8546200'
192.168.73.188
192.168.73.190
Run Code Online (Sandbox Code Playgroud)

我不知道这是不是你要找的.AFAIK没有办法完全查询表或键空间中所有行的负责节点.但正如Blake指出的那样,您的应用程序并不需要担心这一点.

如果您真的想知道,可以使用token分区键上的功能查询您的表.以下是使用Blake架构的示例:

SELECT token(partition_key),partition_key FROM tbl;
Run Code Online (Sandbox Code Playgroud)

这将使用您的分区键列出散列标记.然后,您可以运行a nodetool ring列出每个节点的令牌范围,并查看哪个节点负责该范围.请注意,如果您使用的是vNode,则输出会非常大(默认情况下每个输出256行).