Расположение разделов Cassandra для различных клавишных пространств / таблиц - PullRequest
0 голосов
/ 28 августа 2018

Был связан вопрос о том, что таблицы в одном и том же пространстве ключей имеют один и тот же ключ раздела, в результате чего данные этих разделов находятся на одном узле.

Как быть, если пространство ключей отличается и у нас одна и та же стратегия разбиения: будут ли две записи (из разных пространств ключей) с одним и тем же ключом разделения иметь данные на одном и том же узле?

Упрощенный пример:

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 голосов
/ 28 августа 2018

Да, они будут одинаковыми. Токеном для обеих таблиц является murmur3 (id), который будет в той же позиции кольца. Если стратегия репликации изменится, то изменится только то, какие реплики, но 1-я реплика останется такой же, если только не будут некоторые ограничения DC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...