在cassandra中select组合types键

所以我定义了一个使用复合ID作为行键的列族。 所以说复合键是CompositeType(LongType,LongType) 。 所以我testing了这个types的存储项目,并且工作正常,而且当我知道完整的密钥时, SELECT按预期工作。 但让我们说,我想所有的键都有0作为第一个元素,任何作为第二个。 到目前为止,我可以看到执行此查询的唯一方法如下所示:

如果我所有的键都是0:*那么我会做一个CQL查询的key >= 0:0 AND key < 1:0 ,只要有一个顺序保存分区。

我的问题是:

1)是这个奇怪的语法只是因为我使用一个CQL驱动程序(除了节俭之外,只有nodejs的选项)

2)这种types的查询有没有效率低下? 基本上我使用复合键而不是超级列,因为这些在CQL中不受支持。 在代码中处理这个逻辑没有问题,只要没有像这样使用它的限制。

我build议你改变你的数据模型。 使用RandomPartitioner,只需将第一个组件作为行键。 将第二个组件插入到列名称中,即使用列名称组合。

由于列名总是被sorting,所以你可以做简单的切片操作。 例如,

a)当你知道这两个组件时,在组合键行(第一个组件)和第一个组件上做一个切片。

b)当你知道第一个组件时,获取行键的完整行(第一个组件)

当您要求它创build一个具有多个主键的表时,这就是CQL3所采用的方法。

你最好的select是使用CQL 3 。 这将允许您使用下面的组合来优化您的查找,同时仍然允许您像使用单独的列一样使用组合值的各个部分。 您目前正在行键中使用组合,而CQL 3仅在列名称中支持组合( 目前为止 ),但这可能是正确的 。 在许多情况下,将合成从行键移动到列名不会对性能或数据分布产生不利影响,但是如果行键的select性不够,

无论哪种方式,你应该看看CQL 3. CQL 2已被弃用。 如果我更了解您的情况,我可以告诉您更多关于如何使您的模型适应CQL 3的信息。