【问题标题】:cassandra : Is there a way to get all value of columns starting with a particular prefix?cassandra:有没有办法获取以特定前缀开头的所有列值?
【发布时间】:2013-08-31 16:42:25
【问题描述】:

我需要获取一个键的所有 column:column_value 对。 约束是列有一个共同的前缀,有没有办法使用赫克托得到它?

【问题讨论】:

    标签: java cassandra hector cassandra-0.7


    【解决方案1】:

    你可以做一个 SliceQuery,做一个从前缀到前缀|的范围,提供它唯一应该工作的字母数字。

    StringSerializer ss = StringSerializer.get();
    SliceQuery sliceQuery = HFactory.createSliceQuery(keySpace, rowSerializer, ss, ss);
    sliceQuery.setColumnFamily(MY_COLUMN_FAMILY);
    sliceQuery.setKey(rowKey);
    sliceQuery.setRange("prefix", "prefix|", false, Integer.MAX_INT);
    

    【讨论】:

    • 没有范围,我只想要所有带有前缀的列,但我也认为它太慢了,因为 cassandra 必须遍历所有列?
    • 不完全是,它每隔这么多字节(column_index_size_in_kb)保留一个列的索引。由于列已排序,它将能够非常接近(在上面的索引大小内)跳转到数据并读取,直到它到达切片的末尾。您的列切片实际上会快速高效。将其视为对数据的二进制搜索,然后读取它直到到达“前缀|”价值。
    猜你喜欢
    • 2021-10-12
    • 2017-09-23
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多