Nosql 特别是在关键范围扫描方面,是否有HBASE的替代品?

Nosql 特别是在关键范围扫描方面,是否有HBASE的替代品?,nosql,hbase,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" ... 有

我在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*上执行范围扫描来获取与客户ID相关的所有数据,或者如果需要更多详细信息,可以按部门(如C100D100U100*等)来获取


在NOSQL系列解决方案中,在这方面是否有HBASE的替代品

如果使用视图(索引),Couchbase也有类似的功能。可以在所有关键点上创建视图,并对其执行范围查询。据我所知,您只能在密钥的末尾使用通配符,而不能在密钥的开头使用通配符,例如:

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


更多信息:

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

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


更多信息:

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

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

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

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

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”)
将允许您访问单个客户的单个部门的所有数据,等等。

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

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

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”)
可以让您访问单个客户的单个部门的所有数据,等等。

关于GT.M的好信息,我不知道。不幸的是,它的许可在非Linux平台上有点限制。关于GT.M的好信息,我不知道。不幸的是,在非Linux平台上,它的授权限制更大。