当前位置: 首页 > 知识库问答 >
问题:

Cassandra:为用户列出最近的Coversing

杨学真
2023-03-14

会话:是2个或多个用户之间的消息流。对话没有结束时间,并且是连续的。

我们正在维护一个表,该表基于会话创建时间具有“用户到会话”。但我们希望根据收到的消息对其进行排序。

解决方案

    null
    null

共有1个答案

瞿和硕
2023-03-14

您实际上想要的是对所有消息进行全局排序。实际上,按照最近的消息对会话进行排序意味着对所有的消息也进行排序。

解决问题的一个简单方法是创建另一个表,在该表中存储每个到达的消息,以便对会话进行排序:

CREATE TABLE conversations_by_most_recent_message (
    conversation_id int,
    ts timestamp,
    message text,
    PRIMARY KEY (conversation_id, ts)
) WITH CLUSTERING ORDER BY (ts DESC);

每当消息到达时,您将其存储在那里。在这个表中,您将有与每个会话相关的所有消息,这些消息按时间顺序颠倒排列。从该表中获取数据将帮助您了解每次会话的最后一条消息的时间戳。

SELECT * FROM conversations_by_most_recent_message PER PARTITION LIMIT 1;
 类似资料:
  • 问题内容: 这在PostgreSQL上有效吗? 问题答案: 是的,这在PostgreSQL中确实有效(假设“ date ”列为datatype )为什么不尝试一下呢? 标准的ANSI SQL格式为: 我更喜欢这种格式,因为它使内容更易于阅读(但与相同)。

  • 如何找到哪个公式更接近欧拉公式 没有编程 first=e=(11/n)^n 第一个=2.7048138294215285 秒=1/e=(1-1/n)^n 第二=2.7319990264290284 所以第一个更接近欧拉,但我的输出总是给我第二个为什么? 忘了提n是100

  • 到目前为止,一切都很好。我们有一台机器上的BSOD现在有腐败的马厩。我们正在尝试找到使此节点联机的正确过程。我只想杀死数据并修复节点,因为我们有Replication2,但由于每个节点上的数据量,我不能这样做。 附加的是错误。

  • 问题内容: 我想知道是否有可能找到一个最接近的元素的元素 ,是不是 在那里。 例如,如果我们具有[1,3,6,7]值,并且正在寻找最接近4的元素,则它应返回3,因为3是数组中的最大数字,小于4。 我希望这是有道理的,因为英语不是我的母语。 问题答案: 如果数组已排序,则可以在以下位置进行修改的二进制搜索:

  • 问题内容: 我有一张用户签入和签出时间的表(“ lms_attendance”),如下所示: 我正在尝试创建此表的视图,该表将仅输出每个用户ID的最新记录,同时给我“ in”或“ out”值,如下所示: 到目前为止,我已经很接近了,但是我意识到视图将不接受子查询,这使它变得更加困难。我得到的最接近的查询是: 但是我得到的是: 这很接近,但并不完美。我知道最后一个分组依据不应存在,但是如果没有它,它

  • 问题内容: 我有一个历史记录表,该表存储了用户对延缓帖子执行的所有操作 我想要的是让最后三个用户完成所有操作 问题答案: 假设是一列, SQLFiddle演示