gpt4 book ai didi

database - 什么是 cassandra 模式来服务于这个查询?

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:06 26 4
gpt4 key购买 nike

假设一个社交应用程序拥有数百万用户并且有大约 200-300 个主题,用户可以发布最多可以标记 5 个主题的帖子。我对此数据有两种查询:

  1. 查找某个用户的帖子
  2. 查找所有标记为特定主题的最新帖子。

对于第一个查询,我可以使用用户 Columnfamily 中的 superColumns 轻松创建模式(在此 supercolumn 中,我可以将用户所有帖子的 postId 存储为列)。

我的问题是我应该如何设计架构来为 Cassandra 中的第二个查询提供服务?

最佳答案

虽然 Justice 的答案可行,但我不喜欢它,因为它需要一个 OrderPreservingPartitioner 来执行范围扫描。 OPP 有很多与之相关的问题。看我去过的文章linking to constantly了解详情。

相反,我会推荐这个:

topic|YYMMDDHH: {TimeUUID: postID, TimeUUID: postID, etc... }

其中“topic|YYMMDDHH”是行键,每个列名是一个 TimeUUID,列值是 postID。

要获取任何主题的最新帖子,您可以从该主题的最新行的末尾切掉一部分。如果该行没有足够的列,则及时转到上一行,等等。

这有一些不错的属性。首先,如果您不关心某个主题上真正的旧帖子,只关心相对较新的帖子,您可以定期清除旧行并为自己节省一些空间;这甚至可以通过列 TTL 来完成,这样您就不必做任何额外的工作。其次,您的行的大小将受到限制,因为它们每小时拆分一次。第三,你不需要 OPP :)

这样做的一个缺点是,如果有一个非常热门的话题,一个节点可能会在一个小时内收到比其他节点更高的流量。

关于database - 什么是 cassandra 模式来服务于这个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com