我是 Cassandra 的新手,在尝试弄清楚如何订购数据时遇到了困难。我正在尝试为每个主播录制来自 twitch.tv 的消息。我想要类似下面的东西
CREATE TABLE IF NOT EXISTS chat_data.twitch_chat_by_broadcaster_and_timestamp (
broadcaster_id int,
timestamp int,
message text,
PRIMARY KEY (broadcaster_id, timestamp)
) WITH CLUSTERING ORDER BY (timestamp DESC);
虽然对于业余爱好项目来说这不是问题,但如何解决同时发送两条消息的问题。我知道TimeUUID
,但我希望消息按发送时的时间戳排序,而且看起来TimeUUID
除了now()
.
我设想使用此数据库来获取给定流的给定时间范围内的所有消息。我意识到我可以添加另一个UUID
字段来保证唯一性,但这会搞砸我的查询,因为我必须指定确切的时间。
排序这些数据以允许高效查询的正确方法是什么?
如果您将其添加为最后一个聚类列,则不会:
这样,您可以在写入时简单地生成一个新的 UUID。只要通过 的分区键查询
broadcaster_id
,数据仍然会按照 (both) 排序timestamp
,并message_id
添加保证唯一性。据我所知,消息的查询
broadcaster_id
没有改变: