gpt4 book ai didi

cassandra - cassandra 中多列的范围

转载 作者:行者123 更新时间:2023-12-02 23:01:58 26 4
gpt4 key购买 nike

我的 table :

CREATE TABLE user_position (
geopart text, // first 3 characters of geohash
geohash text,
datetime timestamp,
userId bigint,
PRIMARY KEY ((geopart), geohash, datetime, user_id)
);

我的虚拟查询:

select * from user_position where geopart = 'abc' and geohash > 'a' and geohash < 'z' and datetime >= '2015-08-08 15:08:58+0530';

错误:

Bad Request: PRIMARY KEY column "datetime" cannot be restricted (preceding column "geohash" is restricted by a non-EQ relation)

问题:

我做错了什么?如果 Cassandra 中无法实现多列范围,那么我该如何实现这一目标?

最佳答案

Cassandra 在查询方面有相当大的限制,因为它不像 RDBMS 那样具有通用性。您无法在 Cassandra 中对多个列执行范围查询。以下规则也适用:

  • 如果不执行全选,您将需要提供分区键,以便 Cassandra 可以找到包含您要查找的数据的节点
  • 您只能过滤主键中的列(分区键和聚类列)
  • 主键定义中的列顺序很重要 - 这就是 Cassandra 在磁盘上存储数据的方式
  • 只有当“前一个”列也被过滤时(按照主键定义的顺序),您才能过滤聚集列
  • 执行范围查询后,您将无法进一步筛选后续的聚类列

所有这些规则都是为了避免人们在 Cassandra 中运行反模式。

您必须对多个列执行范围查询并拥有更可靠的数据检索方法的一个选择是与 Solr 等搜索平台集成。

关于cassandra - cassandra 中多列的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31980270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com