Как спроектировать таблицу cassandra для одного запроса с порядком и лимитом?

Теперь я создал таблицу:

CREATE TABLE posts_by_user(
  user_id    bigint,
  post_id    uuid,
  post_at    timestamp,
  PRIMARY KEY (user_id,post_id)
);

Я хочу выбрать последние 10 строк с оператором IN для user_id и упорядочить по полю post_at.

Также я прочитал хорошую статью: http://planetcassandra.org/blog/the-in-operator-in-cassandra-cql/

Я не могу использовать запрос: WHERE post_at = time AND user_id IN (1,2), потому что мне нужны все записи, а не конкретная дата.

Как я могу изменить свою схему дизайна? Спасибо.

Я меняю на:

CREATE TABLE posts_by_user (
  user_id    bigint,
  post_id    uuid,
  post_at    timestamp,
  PRIMARY KEY (user_id, post_at)
) WITH CLUSTERING ORDER BY (post_at DESC);

Считай, что это хорошо...


person Alice    schedule 29.08.2014    source источник


Ответы (1)


Как насчет использования этого подхода: http://www.datastax.com/documentation/cql/3.1/cql/cql_using/use-slice-partition.html

person catpaws    schedule 29.08.2014
comment
Мне помогло, вот осталась одна беда, можно тут спросить или надо создавать новый вопрос? - person Alice; 30.08.2014
comment
Если ответ лишь частично решает проблему, вы можете объяснить, чего ему не хватает. Если оставшаяся проблема является отдельной, новый вопрос был бы лучше. Одна из идей SO заключается в том, что вопросы и ответы остаются для тех, у кого возникнут проблемы в будущем. Итак, ценность отдельного вопроса в том, что кто-то другой с большей вероятностью найдет необходимую помощь. - person Don Branson; 30.08.2014