因此,我定义了一个使用复合 id 作为行键的列族。所以说复合键是 CompositeType(LongType,LongType)
。所以我已经测试过用这种类型存储元素,效果很好,SELECT
当我知道完整 key 时,也可以按预期工作。但假设我想要所有以 0 作为第一个元素,以任何内容作为第二个元素的键。到目前为止,我能看到执行此查询的唯一方法如下:
如果我的所有键都是 0:* 那么我会对 key >= 0:0 AND key < 1:0
执行 CQL 查询只要有一个保留顺序的分区器,它就可以工作。
我的问题是:
1) 这种奇怪的语法只是因为我使用的是 CQL 驱动程序(除了 thrift 之外 Nodejs 的唯一选项)
2)这种类型的查询是否存在效率低下的情况?本质上,我使用复合键而不是 super 列,因为 CQL 不支持这些列。只要这样使用它没有任何限制,我在代码中处理这个逻辑就没有问题。
最佳答案
我建议您更改数据模型。使用 RandomPartitioner 并仅将第一个组件作为行键。将第二个组件插入列名称中,即使您的列名称复合。
由于列名总是排序的,因此您可以进行简单的切片操作。例如,
a) 当您知道这两个组件时,对行键(第一个组件)和组合的第一个组件执行 get 切片。
b) 当您只知道第一个组件时,获取行键的完整行(第一个组件)
当您要求 CQL3 创建具有多个主键的表时,这是 CQL3 所采用的方法。
关于node.js - 在cassandra中选择compositetype键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728611/