Подтвердить что ты не робот

Может ли семейство 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 сделать это для меня?

4b9b3361

Ответ 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, ответ будет отрицательным. Ключ раздела всегда будет первым компонентом. Как вы сказали, способ сделать это - это создать составной ключ самостоятельно. Вы не должны уклоняться от этого, поскольку это на самом деле довольно распространено.