Я пытаюсь смоделировать стол в Кассандре, я совершенно новый и наткнулся на одну проблему. У меня есть следующие:Cassandra сортировать не по первичному ключу
CREATE TABLE content_registry (
service text,
file text,
type_id tinyint,
container text,
status_id tinyint,
source_location text,
expiry_date timestamp,
modify_date timestamp,
create_date timestamp,
to_overwrite boolean,
PRIMARY KEY ((service), file, type_id)
);
Так как я понимаю:
service
мой ключ разделов и на основе этого значения хэшей будет сгенерирован и значения будут разделены в кластереfile
является ключ кластеризацииtype_id
является ключом кластеризации- Эти три тела объединяют первичный ключ составной (составной)
То, что я понял, что каждый раз, когда я буду вставлять новые данные, Cassandra будут upsert (либо вставить или обновить, если значение с этим составным первичным ключом существует)
Теперь то, что я изо всех сил заключается в том, что я хочу, чтобы мои данные возвращались отсортированы по create_date
в порядке убывания, однако create_date
не является частью первичного ключа.
Если добавить create_date
в мой первичный ключ, я не буду в состоянии upsert данных, поскольку create_date
означает временную метку, когда запись была вставлена, так что если я добавляю его первичный ключ каждый раз, когда есть вставка, я закончу с несколькими записями.
Какие существуют другие варианты? Заказать в заявке? Это не кажется очень эффективным.
Возможно, мне следовало бы более четко рассказать о моем вопросе.Каждый раз, когда вставлена новая запись, она будет иметь текущую временную метку в качестве значения. скажем, если я вставляю такие значения, как '('service1', '2017-01-09 19:35:33', 'fileName1', 1)', а затем '('service1', '2017-01-09 19: 35:34 ',' fileName1 ', 1) ', я получаю две записи, потому что это первичные ключи, и они разные, не так ли? То, что я хотел бы, это сохранить только последнюю запись. Я отредактирую. –
Если вы хотите иметь самую последнюю запись, за исключением отметки времени, метка времени не должна быть частью вашего ключа. – questionare
@questionare Я понимаю это, но мне также нужно иметь данные, отсортированные по этой метке времени, поэтому я сказал _Если я добавлю create_date к своему первичному ключу, я не смогу обновить данные_ :). Кажется, что сортировка на уровне приложения - это опция go-to. –