在 Cassandra 中获取具有公共前缀的键范围

发布于 2024-11-14 16:23:15 字数 176 浏览 2 评论 0原文

我想使用 hector API 获取具有公共前缀的所有行。我玩了一下 RangeSuperSlicesQuery 但没有找到让它正常工作的方法。关键范围参数是否可以与通配符等一起使用?

更新:我使用 ByteOrderedPartitioner 而不是 RandomPartitioner,它工作得很好。这是预期的行为吗?

I want to fetch all rows having a common prefix using hector API. I played with RangeSuperSlicesQuery a bit but didn't find a way to get it working properly. Does key range parameters work with wild cards etc?

Update: I used ByteOrderedPartitioner instead of RandomPartitioner and it works fine with that. Is this the expected behavior?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叹沉浮 2024-11-21 16:23:15

是的,这是预期的行为。在 RandomPartitioner 中,行按照其键的 MD5 哈希顺序存储,因此要获得有意义的键范围,您需要使用像 ByteOrderedPartitioner 这样的保序分区器。

但是,使用 ByteOrderedPartitioner 或 OrderPreservingPartitioner 也有缺点通常可以使用稍微不同的数据模型和 RandomPartitioner 来避免这种情况。

Yes, that's the expected behavior. In RandomPartitioner, rows are stored in the order of the MD5 hash of their keys, so to get a meaningful range of keys, you need to use an order preserving partitioner like ByteOrderedPartitioner.

However, there are downsides to using ByteOrderedPartitioner or OrderPreservingPartitioner that you can usually avoid with a slightly different data model and RandomPartitioner.

我ぃ本無心為│何有愛 2024-11-21 16:23:15

要详细说明上述答案,您应该考虑使用列名作为“公共前缀”而不是键。然后,您可以使用列切片来获取特定范围内的所有列名称,也可以使用二级索引,然后为具有该列名称的所有键执行索引切片。

Column slice example:

Key (without prefix) 
  <prefix1> : <data>
  <prefix2> : <data>
  ...

Secondary index example:

Key (with or without prefix)
  "prefix" : <the_prefix> <-- this column is indexed
  otherCol1 : <data>    
  ...

To elaborate on the above answer, you should consider using column names as your "common prefix" instead of the key. Then you can either use a column slice to get all column names in a certain range, or you could use a secondary index then do an indexed slice for all keys with that column name.

Column slice example:

Key (without prefix) 
  <prefix1> : <data>
  <prefix2> : <data>
  ...

Secondary index example:

Key (with or without prefix)
  "prefix" : <the_prefix> <-- this column is indexed
  otherCol1 : <data>    
  ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文