【问题标题】:Does Riak support Range Queries over binary safe strings?Riak 是否支持二进制安全字符串上的范围查询?
【发布时间】:2013-07-15 05:33:35
【问题描述】:

来自 Redis,我喜欢你可以将任何二进制 blob 放入 Redis,它只是被视为一个字符串。这是可能的,因为 Redis 字符串就是他们所说的“二进制安全”。这使得在字符串编码的二进制数据之上执行rangequeries 之类的操作成为可能,这对于位集操作等非常有用。

我正在调查 Riak,到目前为止我很喜欢它。 Riak 似乎有范围查询,但我不确定 Riak 中的字符串在上述意义上是否是“二进制安全的”。如果没有,是否有另一种方法可以在 Riak 中存储二进制数据并仍然快速对其进行范围查询?

谢谢

【问题讨论】:

    标签: riak range-query


    【解决方案1】:

    既然您提到“范围查询”,我假设您在谈论 Riak 时是指 2i(二级索引)。

    Riak 中的_bin 二级索引键存储为普通的旧字节,排序(对于范围)是逐字节比较。

    大多数人使用 UTF-8/ISO-8859-1 字符串作为 _bin 索引中的键,但这不是必需的。

    但是请注意,目前 HTTP API 在这方面有些笨拙。这个 SO 问题详细介绍了这一点:URL-unsafe Secondary Index names in Riak do not work

    使用协议缓冲区,您可以只向它抛出字节,它并不关心。

    也就是说,我们当前的客户目前相当以 UTF-8 为中心。具体来说,Java 客户端期望索引值是 UTF-8 字符串。这将在 2.0 版本中得到解决。

    【讨论】:

    • 我谈论范围查询已经很遥远了。我的意思是寻求一种方法来获取我的 base-255 编码字符串的一部分。实际上,我将其交叉发布给 riak 用户,在那里我得到了一些很好的答案。基本上,只要要查询的键的 nr 很小(在我的情况下),m/r 就应该足够快以接近实时。谢谢。
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多