对于关键范围扫描,HBASE有其他替代方案吗?

时间:2013-03-07 15:55:14

标签: nosql hbase

我在HBASE中最欣赏的最相关的功能是键范围扫描,您可以将更高级别的键与更低级别的键组合在一起,这样您就可以获得与更高级别键相关的数据层次结构。

例如:

CUSTOMER ID = C100
DEPARTMENT ID = D100
USER ID = U100

以上示例的关键是

C100D100U100K01 : "my data for k01"
C100D100U100K02 : "my data for k02"
C100D100U100K03 : "my data for k03"
...

通过上述操作,您可以通过在C100 *上执行范围扫描,或者根据需要提供更多详细信息(如C100D100U100 *等)来获取与您的客户ID相关的所有数据。

在NOSQL解决方案中,HBASE是否有其他替代方案?

3 个答案:

答案 0 :(得分:2)

任何分层键值存储都可以使用。维基百科上有一个(简短)列表:Hierarchical key-value store

我最了解的是GT.M,您的示例数据可能如下所示:

customer("C100","D100","U100","K01")="my data for k01"
customer("C100","D100","U100","K02")="my data for k02"
customer("C100","D100","U100","K03")="my data for k03"

因此,customer("C100")可让您访问单个客户的所有数据,customer("C100","D100")可让您访问单个客户的单个部门的所有数据等。

答案 1 :(得分:1)

如果您使用视图(索引),Couchbase具有类似的功能。您可以在所有键上创建视图,并对它们进行范围查询。据我所知,你只能在密钥的末尾但不是开头的通配符,例如:

AAABBBCCCDDD* // yes
*BBBCCCDDDEEE // no
AAA*CCCDDDEEE // no

这是因为它对键进行排序,当您查询时,您获得了一个子范围。但是,您可以通过创建按不同顺序排序的视图来解决此问题。

更多信息:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html

答案 2 :(得分:1)

Riak有二级索引,可以通过匹配索引或范围扫描来查询数据。二级索引的结果可以用作Riak的MapReduce的输入。请查看此内容以获取更多详细信息:riak secondary indexes