Первичный ключ в кассандре уникален?

Это может быть немного хромой, но в cassandra есть первичный ключ, чтобы быть уникальным? Например, в следующей таблице:

CREATE TABLE users (
  name text,
  surname text,
  age int,
  adress text,
  PRIMARY KEY(name, surname)
);

Итак, возможно ли в моей базе данных иметь 2 человека в моей базе данных с тем же именем и фамилией, но с разными возрастами? Это означает тот же первичный ключ.

Ответы

Ответ 1

Да, первичный ключ должен быть уникальным. В противном случае не было бы способа узнать, какая строка вернется при запросе с дублирующимся ключом.

В вашем случае вы можете иметь 2 строки с тем же именем или с одинаковой фамилией, но не оба.

Ответ 2

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

Прежде всего, если вы расслабляете свою цель иметь первичный ключ с именем + фамилия, вы можете сделать следующее:

CREATE TABLE users ( name text, surname text, age int, address text, PRIMARY KEY((name, surname),age) );
insert into users (name,surname,age,address) values ('name1','surname1',10,'address1');
insert into users (name,surname,age,address) values ('name1','surname1',30,'address2');
select * from users where name='name1' and surname='surname1';

 name  | surname  | age | address
-------+----------+-----+----------
 name1 | surname1 |  10 | address1
 name1 | surname1 |  30 | address2

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

CREATE TABLE users2 ( name text, surname text, age set<int>, address text, PRIMARY KEY(name, surname) );
insert into users2 (name,surname,age,address) values ('name1','surname1',{10,30},'address2');
select * from users2 where name='name1' and surname='surname1';

 name  | surname  | address  | age
-------+----------+----------+----------
 name1 | surname1 | address2 | {10, 30}

Итак, он возвращается к тому, что вам действительно нужно выполнить. Надеемся, что приведенные выше примеры дают вам некоторые идеи.

Ответ 3

Первичный ключ уникален. С вашей моделью данных вы можете иметь только один возраст (имя, фамилия).