hbase—列式数据库中“主键是数据”的含义是什么

ws51t4hk  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(430)

在研究面向列的数据库时,我读了很多遍“主键是数据”(e、 例如,面向列的数据库管理系统)
我想我可以按值随机访问任何单元格(在某一列中),因为值,即数据,已经作为主键索引。
但是在我将超过3m行放入hbase之后,hbase shell命令

scan 'lottery', {COLUMNS => 'cf:status', FILTER => "ValueFilter(=, 'binary:win')"}

需要3秒以上。。。
(随着越来越多的行被放进去,速度越来越慢……) 'win' 或者 'lose' 列有两个可能的值 cf:status 只有一行的值是 'win' .
我可能误解了。。。
在面向列的数据库中,“主键是数据”是什么意思?
谢谢您。

unguejic

unguejic1#

要使用hbase快速查找内容,它需要是rowkey的前缀。因此,rowkey设计是非常重要的建设时,速度。对于您的情况,可以使用 'lottery_win' 或者 'lottery_lose' 在每行的rowkey的开头。这将使查询 scan 'lottery_win' 查询速度非常快(亚秒),即使有上千亿行。
hbase中的过滤器通常不是很快,因为过滤器会查看与您扫描的每一行相匹配的内容。如果您想提高速度,让一个过滤器读取数百万行通常不是一个好主意。
dbms中的主键并不意味着任何关于性能的东西。它是对可以放入表中的记录的约束。给出速度的是一个指数。hbase表只有一个索引项,即rowkey。没有其他列被索引,因此筛选器速度很慢(以每秒数百万行的顺序)。

相关问题