Первичный ключ в кассандре уникален?
Это может быть немного хромой, но в 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
Первичный ключ уникален. С вашей моделью данных вы можете иметь только один возраст (имя, фамилия).