node.js - 在cassandra中选择compositetype键

标签 node.js cassandra cql composite-types

因此,我定义了一个使用复合 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/

相关文章:

node.js - Nodejs 中 Cassandra 事件的 PubSub 或事件捕获

Cassandra CQL where 子句括号

deployment - 部署/构建/制作网络应用程序的基础知识是什么?

node.js - nodejs 对所有请求执行通用操作

javascript - 在多个端口上运行 node.js http 服务器

insert - cassandra hive插入空异常

java - Java中如何从字节数组中获取数据类型

cassandra - 主键相关的CQL3查询排序时的情况和错误

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/thrift/TEnum 中的异常

javascript - 在 Node JS 应用程序中实现单例 mongoDB DB 对象