Cassandra 将数据存储在什么节点上?
What node does Cassandra store data on?
是否有命令或任何方式可以知道哪些数据存储在 Cassandra 的哪些节点上?
我是 Cassandra 的新手,谷歌搜索这个问题时运气不佳。
谢谢!
Cassandra 在行的分区键上使用一致性哈希来确定数据的存储位置。令牌被分配给节点,分区键的一致散列决定了哪个节点将存储该行。
分区键是您的 table 定义或嵌套括号
中 PRIMARY KEY 的第一部分
CREATE TABLE tbl (
partition_key INT,
clus_key TEXT,
...,
PRIMARY KEY((partition_key), clus_key);
一些阅读 here on the ring and consistent hashing. You're probably using vNodes 所以我也在这里阅读了一些内容。
在查询的时候,不用担心哪个节点有什么。您的 C* 驱动程序将 select 提供的列表中的协调器节点,它将根据您的查询查找行。
如果您想查看有关查询在 CQLSH 中执行的操作的详细信息,请尝试打开跟踪:
> TRACING ON;
> SELECT * FROM table;
> Tracing session: 1f6b4440-050f-11e5-ba41-672ef88f159d
> ....
> <Details about the query>
> ....
您可以让 Cassandra 告诉您特定键在哪个节点上 nodetool getendpoints。
$ nodetool getendpoints mykeyspace tbl '8546200'
192.168.73.188
192.168.73.190
我不知道这是否是您要找的。据我所知,没有一种方法可以完全查询 table 或键空间中所有行的负责节点。但正如 Blake 所指出的,您的应用程序并不真正需要为此担心。
如果您真的想知道,可以使用分区键上的 token
函数查询 table。这是一个使用 Blake 架构的示例:
SELECT token(partition_key),partition_key FROM tbl;
这将列出带有您的分区键的散列令牌。然后,您可以 运行 a nodetool ring
列出每个节点的令牌范围,并查看哪些节点负责该范围。请注意,如果您使用 vNodes,您的输出将非常大(默认情况下每行 256 行)。
是否有命令或任何方式可以知道哪些数据存储在 Cassandra 的哪些节点上?
我是 Cassandra 的新手,谷歌搜索这个问题时运气不佳。
谢谢!
Cassandra 在行的分区键上使用一致性哈希来确定数据的存储位置。令牌被分配给节点,分区键的一致散列决定了哪个节点将存储该行。
分区键是您的 table 定义或嵌套括号
中 PRIMARY KEY 的第一部分CREATE TABLE tbl (
partition_key INT,
clus_key TEXT,
...,
PRIMARY KEY((partition_key), clus_key);
一些阅读 here on the ring and consistent hashing. You're probably using vNodes 所以我也在这里阅读了一些内容。
在查询的时候,不用担心哪个节点有什么。您的 C* 驱动程序将 select 提供的列表中的协调器节点,它将根据您的查询查找行。
如果您想查看有关查询在 CQLSH 中执行的操作的详细信息,请尝试打开跟踪:
> TRACING ON;
> SELECT * FROM table;
> Tracing session: 1f6b4440-050f-11e5-ba41-672ef88f159d
> ....
> <Details about the query>
> ....
您可以让 Cassandra 告诉您特定键在哪个节点上 nodetool getendpoints。
$ nodetool getendpoints mykeyspace tbl '8546200'
192.168.73.188
192.168.73.190
我不知道这是否是您要找的。据我所知,没有一种方法可以完全查询 table 或键空间中所有行的负责节点。但正如 Blake 所指出的,您的应用程序并不真正需要为此担心。
如果您真的想知道,可以使用分区键上的 token
函数查询 table。这是一个使用 Blake 架构的示例:
SELECT token(partition_key),partition_key FROM tbl;
这将列出带有您的分区键的散列令牌。然后,您可以 运行 a nodetool ring
列出每个节点的令牌范围,并查看哪些节点负责该范围。请注意,如果您使用 vNodes,您的输出将非常大(默认情况下每行 256 行)。