2

我在 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 的替代品?

4

3 回答 3

2

任何分层键值存储都可以工作。维基百科上有一个(短)列表:分层键值存储

我最了解的是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")可以访问单个客户的单个部门的所有数据,等等。

于 2013-03-07T22:26:57.703 回答
1

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

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

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

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

于 2013-03-07T16:17:58.693 回答
1

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

于 2013-03-07T21:59:30.957 回答