Столбцы в строке всегда сортируются по имени с данным компаратором.Вы не можете сортировать по отметке времени, значению или чему-либо еще, иначе Cassandra не сможет правильно объединить несколько обновлений в один и тот же столбец.
Что касается вашего варианта использования, я могу представить два варианта.
Самое похожее на то, что вы делаете сейчас, - это создание второго семейства столбцов ThreadMostRecentPosts со столбцами timeuuid (вы сказали «ключи», но звучит так, как будто вы имеете в виду «столбцы»).Когда приходит новое сообщение, удалите старый самый последний столбец и добавьте новое.
У этого есть две проблемы:
- Единицей репликации является строка, поэтому наличие этогоРасти до бесконечности может быть проблематично.(Использование устаревших столбцов для устаревания устаревшей информации о ветках может помочь.)
- Вам нужен менеджер блокировок, чтобы несколько сообщений в одной и той же ветке не гонялись и, возможно, уходилинесколько записей в этой строке.
Я бы предложил вместо этого создать строку в день (например), столбцы которой - идентификаторы потоков, а значения - самые последние сообщения.Добавление нового сообщения просто обновляет значение в этом столбце;удаление / повторное добавление не выполняется, поэтому гонки больше не являются проблемой.Вы больше не получаете сортировку бесплатно, но это нормально, потому что вы ограничиваете ее достаточно маленьким набором, чтобы вы могли выполнять эту сортировку в памяти (скажем, вчерашние потоки и сегодняшние).
(Наконец, яЯ бы добавил, что по своему опыту могу сказать, что иметь обрезание, когда старые темы не сталкиваются с новым ответом, - это хорошо.)