【发布时间】:2017-05-22 00:31:28
【问题描述】:
我们正在使用 cassandra 来存储聊天数据。我们必须维护所有用户的对话并根据收到的消息对其进行排序。
对话:是 2 个或更多用户之间的消息流。对话没有结束时间并且是连续的。
我们正在维护一个基于对话创建时间具有“用户到对话”的表格。但我们想根据收到的消息对其进行排序。
解决方案
- 解决方案-1:
我看过一个类似的问题Cassandra: List 10 most recently modified records
建议使用物化视图。这种方法适用于频繁更新的记录(如消息)吗?
- 解决方案-2: 使用另一个表来维护列表中的 user_recentconversations。使用用户接收/发送消息的时间更新列表。
考虑到用例,请提出更好的解决方案。
【问题讨论】:
-
您想“全局”按时间顺序对它们进行排序吗?还是您想按对话对它们进行排序?
-
我们想对所有用户的对话进行排序。不需要全局排序。与 whatsapp 对话类似,一旦对话中有新消息,最新的对话就会出现在顶部。
-
在我的回答和您的评论之后,我认为您的问题并不清楚。此外,您使用的是 Cassandra-2.1,但您提出的解决方案 1 建议使用物化视图,这些视图仅在 Cassandra 3.0 上可用。
标签: cassandra data-modeling cassandra-2.1