gpt4 book ai didi

collections - Cassandra 模式使用集合或多行

转载 作者:行者123 更新时间:2023-12-04 01:55:21 26 4
gpt4 key购买 nike

我正在 Cassandra 中设计一个键空间,用于保存有关用户组的信息。关于它的一些信息:

  • 只能通过请求特定组中包含哪些用户并更新组中包含的用户来访问此数据。
  • 读取将比写入更频繁。
  • 每个组最多可包含 20,000 个用户 ID

  • 为此,我正在考虑两种设计。
  • 每组多行:该表将有两列 TEXT 类型并以主键(GroupID、UserID)为键,读取组中的用户将由 select * from table where GroupID = {GroupID} 完成,并返回与组中的用户数量相同的行团体。
  • 每组一行,使用 Cassandra Set Collection:该表将有两列,第一列 (GroupID) 为 TEXT 类型,第二列 (UserIDs) 为 SET[TEXT] 类型,并以 Pimary Key (GroupID) 为键。读取组中的用户将由 select * from table where GroupID = {GroupID} 完成,并返回一行,其中包含包含在其 UserIDs 列集中的用户 ID 集。

  • 我找不到很多关于这种情况下更好的设计的文档。这两种情况有什么想法或优缺点吗?

    最佳答案

    对于一组 20k 个用户 ID,我绝对会不惜一切代价避免使用集合。集合是一个方便的特性,但它们的性能远不如使用传统的 CQL 数据模型,在传统的 CQL 数据模型中,您拥有 PRIMARY KEY(GroupID,UserID),其中所有用户都在单个分区中进行排序。这将易于推理、易于查询(可以 SELECT 对单个分区和所有组成员进行分页,或者您可以 SELECT ... WHERE GroupID=X and UserID=Y 来确定用户是否在组中),并且非常高效。

    关于collections - Cassandra 模式使用集合或多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748528/

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