Может ли семейство Cassandra/CQL3 иметь составной ключ раздела?
CQL 3 позволяет использовать "составной" первичный ключ, используя такое определение:
CREATE TABLE timeline (
user_id varchar,
tweet_id uuid,
author varchar,
body varchar,
PRIMARY KEY (user_id, tweet_id)
);
При такой схеме ключ раздела (ключ строки ядра хранилища) будет состоять из значения user_id
, а tweet_id
будет усугублен в имени столбца. Вместо этого я ищу вместо ключа раздела (ключ строки ядра хранилища) составное значение, например user_id: tweet_id. Очевидно, что я мог бы сделать что-то вроде key = user_id + ':' + tweet_id
в моем приложении, но есть ли способ заставить CQL 3 сделать это для меня?
Ответы
Ответ 1
Собственно, да, вы можете. Эта функциональность была добавлена в этот билет:
https://issues.apache.org/jira/browse/CASSANDRA-4179
Формат для вас:
CREATE TABLE timeline (
user_id varchar,
tweet_id uuid,
author varchar,
body varchar,
PRIMARY KEY ((user_id, tweet_id))
);
Ответ 2
Пока выйдет 1.2, ответ будет отрицательным. Ключ раздела всегда будет первым компонентом. Как вы сказали, способ сделать это - это создать составной ключ самостоятельно. Вы не должны уклоняться от этого, поскольку это на самом деле довольно распространено.