Cassandra DB-CQL中的范围(间隔)请求

Cassandra DB-CQL中的范围(间隔)请求,cassandra,data-modeling,cql,cql3,Cassandra,Data Modeling,Cql,Cql3,对不起,如果它是重复的,我在这里发现了一些关于时间范围的问题,但我的情况似乎有点不同,尚未讨论 我想存储相当大的数据块(BIN)(BLOB-2-4Mb,这是“黑盒数据”,我无法更改其布局),以便使用间隔键访问: ... primary key ( bin_id int, from_item_id int, to_item_id int ) ... 能够选择with items ranges,如在下面的伪代码中选择包含项间隔的所有块[110200]: 目前我找到的唯一解决方案是实现附加表(tb

对不起,如果它是重复的,我在这里发现了一些关于时间范围的问题,但我的情况似乎有点不同,尚未讨论

我想存储相当大的数据块(BIN)(BLOB-2-4Mb,这是“黑盒数据”,我无法更改其布局),以便使用间隔键访问:

...
primary key ( bin_id int, from_item_id int, to_item_id int ) 
...
能够选择with items ranges,如在下面的伪代码中选择包含项间隔的所有块[110200]:

目前我找到的唯一解决方案是实现附加表(tb_映射),从item_id反向映射到bin_id,并使用select使查询如下所示:

...
– in tb_map
primary key (dummy_id, item_id)
...
select bin_id from tb_map where dummy_id = SOME_MAGIK and item_id >= 110 and item_id <= 200;
但由于插入性能问题,我不能使用这个模型(应用程序应该避免对额外的表进行多次插入,并且应该避免维护额外的数据结构,但应该“像钉子一样简单”)

在一个表(或多个简单表)内是否有简单的解决方案?我一直不知道如何在C*中对这种行为建模(可能应该使用切片?),当地的C*专家能提供一些提示吗

我正在使用CQL 3.1,来自:

此外,对于给定的分区键,集群列会导致行的排序,并且它们上的关系仅限于允许选择连续(用于排序)行集的关系

在您的情况下,查询没有选择一组连续的行,因此Cassandra拒绝处理它。

可能存在重复的行
code=2200 [Invalid query] message="PRIMARY KEY column "to_item_id" cannot be restricted (preceding column "from_item_id" is restricted by a non-EQ relation)"
...
– in tb_map
primary key (dummy_id, item_id)
...
select bin_id from tb_map where dummy_id = SOME_MAGIK and item_id >= 110 and item_id <= 200;
select * from tb1 where bin_id in (...);