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

时间:2018-08-28 03:35:33

标签: 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

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

1 个答案:

答案 0 :(得分:1)

是的,它们将相同。两个表的令牌都是murmur3(id),它将是相同的环位置。如果复制策略发生更改,则只会更改哪些副本,但是除非存在某些DC限制,否则第一个副本将是相同的。