Cassandra 为不同的键空间/表划分位置



有一个相关的问题,即同一键空间中的表具有相同的分区键,导致这些分区的数据位于同一节点上。

如果键空间不同并且我们有相同的分区策略怎么办:具有相同分区键的两个记录(来自不同的键空间(的数据会在同一节点上吗?

简化示例:

cqlsh> CREATE KEYSPACE test_1 WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;
cqlsh> CREATE KEYSPACE test_2 WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;
cqlsh> CREATE TABLE test1.t (id int, val int, PRIMARY KEY(id));
cqlsh> CREATE TABLE test2.t (id int, val int, PRIMARY KEY(id));
cqlsh> INSERT INTO test1.t (id, val) VALUES (1,1);
cqlsh> INSERT INTO test2.t (id, val) VALUES (1,1);

现在test1.t(1,1(是否与test2.t(1,1(位于同一数据节点上?

我尝试手动处理一些记录并检查

nodetool getendpoints test1 t 1
nodetool getendpoints test2 t 1

似乎总是返回相同的节点。

是的,它们是一样的。两个表的标记是 murmur3(id(,这将是相同的环位置。如果复制策略发生更改,它只会更改哪些副本,但除非有一些 DC 限制,否则第一个副本将是相同的。

最新更新