gpt4 book ai didi

java - 如何获取 Cassandra 中给定复合键范围之间的所有行?

转载 作者:行者123 更新时间:2023-12-02 07:21:07 25 4
gpt4 key购买 nike

我的数据存储格式是:

RowKey: a:b:c
=> ( counter=d:e:f:g, value=1)
where, a: Timestamp (Format : YYYYMMDDHH, HH varies from 00 - 23) b: encoded Url c: id (Varies from 0 - 9) d: string type e: floating value f: floating value g: integer type

我不想获取所有此类行(及其包含的列),其中 url = 整个列族的给定值,其中 c 为 00 - 23。

如何在 Java 中实现这一点(最好使用 Hector 客户端)?

最佳答案

这在 Cassandra 中是不可能的。 CompositeKeys 非常简单,基本上只是将单独的部分变成一个键。因此,数据按照其键的顺序存储(并排序)在 cassandra 中,这就是检索数据的方式。

您只能对整个组合键 (a:b:c) 进行范围/切片查询,并且首先按 a 排序,然后按 b 排序,最后按 c 排序。如果您希望能够对 c 进行范围查询,那么您将需要使用复合键以 c:a:b 的形式存储数据 - 在这种情况下,您将无法对 a 和 b 进行范围查询独自一人。

这里有两个选择:

1)使用关系数据库(这里可能不是一个好的解决方案)2)复制数据。因此,您的数据有两行 - 一行 CompositeKey 为 a:b:c,另一行 CompositeKey 为 c:a:b(如果需要进行范围/切片查询排序,则第三行为 b:c:a仅在 b 上)。这些行中的所有两(/三)行的数据本身都是相同的,您可以根据所需的查询搜索相应的行。不幸的是,这是 Cassandra 的缺点之一,但却是完成大数据模型所必需的。

关于java - 如何获取 Cassandra 中给定复合键范围之间的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222788/

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