Я хочу использовать cassandra в качестве БД для хранения сообщений, когда в моей модели сообщения агрегированы по каналам. 3 основных важных поля сообщения:
- channel_id
- created_by
- message_id (уникальный)
Основной API чтения / выборки получать сообщения по каналам, отсортированные по created_by
. Кроме того, у меня есть небольшое обновление сообщений channel_id
+ message_id
.
Итак, мой вопрос касается определения primary_key. Если я определю его (channel_id,created_by)
, смогу ли я выполнить UPDATE
с WHERE
cLause, например channel_id=X and message_id=XX
, даже если message_id
не входит в первичный ключ (я даю запросу ключ раздела)?
И если нет, то если я определю первичный ключ, как это (channel_id,created_by, message_id)
, смогу ли я выполнить чтение с причиной where только с 1 столбцом кластеризации (channel_id,created_by)
и выполнить обновление, используя причину where channel_id
+ message_id
?
Спасибо