0

我正在尝试为以下用例定义 Cassandra 模式:每个唯一的用户集定义一个组。查询模式需要一种基于一组用户作为输入的快速方法来查找组是否存在。

4

1 回答 1

2

由于给出的信息很少,我将在这里做一些最好的假设。我假设有一种独特的方法可以使用固定长度的 N 位哈希(我们称之为 uid)来识别用户。我还假设组中的最大用户数 (MAX) 为 (MAX < 64*1024*8 / n)。这是因为 Cassandra 对密钥长度有 64KB 的限制)。实际上,这意味着如果您有多达 32,000 个用户,则您可以组成任何组,最多可容纳最大数量的用户。

鉴于上述情况,我会说 uid 的排序连接将是识别组的一种简单方法,并且可以这样键入组。

在这种情况下,如果您获得成功,则通过用户查询集形成的排序连接键进行一次查找将为您提供答案。

Let's say 
key of G1 = u04,u08,u10,u12;
key of G2 = u01,u11,u12;
...
Key of GN = u09,uxx,uyy;

如果搜索包含用户 u04、u08、u03 的组是否存在,只需创建键“u03,u04,u08”并尝试在“组”列族中查找匹配项。

如果您正在使用更大的用户集,每个组有更多的用户,那么可能需要一种不同的方法。

编辑:您能否最大程度地了解可以形成一个组的用户数量。我假设您的客户必须将所有这些用户的列表作为他查询的一部分传递。

于 2013-01-25T22:35:19.803 回答