Cassandra:如何使用数学运算符查询主键,例如>,<这是文本类型?

Posted

技术标签:

【中文标题】Cassandra:如何使用数学运算符查询主键,例如>,<这是文本类型?【英文标题】:Cassandra: How to query primary key using mathematical operators like >,< which is of type text? 【发布时间】:2018-10-31 22:09:35 【问题描述】:

我在 Cassandra 中有一个表,其主键类型为文本(字符串)并且只存储数字。 现在我想使用 &gt;&lt; 等数学运算符对此列执行 CQL 查询。 关于如何实现这一点的任何想法?

select * from ynapanalyticsteam.df_tran_order_info where order_header_key>'2018';

【问题讨论】:

【参考方案1】:

    既然您的值是数字,为什么要将其存储为文本?

    Cassandra 有一些重要的概念:分区键和集群键。

假设你有一张这样的桌子:

TABLE A (
  ...,
  PRIMARY KEY ((pk1, pk2), ck1, ck2, ck3, ck4, ck5)
)

pk1 和 pk2 是分区键,您的查询必须使用 = 包含它们。用于确定数据所属节点的分区键。

聚类列 (ck1, ck2, ..., ck5) 用于对数据进行排序并使用 =、 运算符添加一些其他过滤。聚类列用于控制数据在分区中的排序方式。

您需要更改数据模型,使 order_header_key 成为集群键,并让另一列成为您的分区键。

【讨论】:

以上是关于Cassandra:如何使用数学运算符查询主键,例如>,<这是文本类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cassandra 3.7 中使用 LIKE 运算符查询“%”字符?

使用 Spring-data-cassandra 查询具有复合主键的表

Cassandra 简单的主键查询

使用Spring-data-cassandra查询具有复合主键的表

Cassandra Spring Data不允许我直接通过复合主键查询数据

Cassandra 通过主键查询和列抛出错误