关于Cassandra表的最佳方案的建议?

时间:2019-09-11 06:52:10

标签: cassandra

我想在Cassandra中创建一个表,该表的分区键为'A'列,而表名为'B'的列为'set'类型,并且该集合中最多可以包含10000个元素。

但是当我从该表中检索一行时,整个集合将立即被检索,因此JVM堆迅速增加。因此,我应该坚持使用该模式还是使用其他模式,其中“ A”是分区键,并且在其他模式中为集合中的每个元素创建动态列,例如“ B1”,“ B2” ..... 000',其中每一列都是一个聚簇键。

哪种架构最合适,将提供最佳性能,请推荐。

注意:cqlsh 5.0.1v

1 个答案:

答案 0 :(得分:0)

基于您的描述以及所阅读的文档,我不会创建具有10k元素的集合。取而代之的是,我有两个表,一个表除了集合以外的所有内容,然后将第一个表的主键值用作第二个表的分区键列;将元素名称(或可用于标识单个元素的任何元素)添加为聚类列。

因此,对于给定的查询,如果您想获取特定主键值(包括所有元素)的所有内容,则可以使用主键查询第一个表,获取所需的内容,然后同时访问第二个表,循环/获取所有元素。

如果查询仅提供对分区键的过滤器(而不是主键-即检索多行),则第一个查询将必须检索组成每一行主键的所有列,然后查询第二个所有元素的表循环-这里是嵌套循环-从第一个表检索的每个主键记录都有一个循环,而第二个循环则是为每个pk记录获取所有元素。

这可能是最好的方法。这就是我可能会解决的方式。

这有意义吗?

-吉姆