gpt4 book ai didi

hbase - 列式数据库中 "the primary key is the data"的含义是什么

转载 作者:行者123 更新时间:2023-12-05 06:24:12 25 4
gpt4 key购买 nike

在研究面向列的数据库时,我多次阅读“主键就是数据”。 (例如,在 Column-oriented DBMS )

我认为我可以按值随机访问任何单元格(在特定列中),因为值(数据)已经作为主键编入索引。

但是当我将超过 300 万行数据放入 HBase 后,HBase shell 命令

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

需要超过 3 秒...

(随着越来越多的行被放入,它变得越来越慢......)

'win''lose'cf:status 列的两个可能值,并且只有 1 行的值为“赢”

我可能误解了...

在面向列的数据库中“主键就是数据”是什么意思?

谢谢。

最佳答案

为了能够使用 HBase 快速查找内容,它需要是 rowkey 的前缀。因此,行键设计在构建速度时非常重要。对于您的情况,您可以在每一行的行键开头使用值 'lottery_win''lottery_lose'。这将使查询 scan 'lottery_win' 查询非常快(亚秒级),即使有数千亿行。

HBase 中的

过滤器 通常不是很快,因为过滤器会查看与您扫描的匹配的每一行。如果您想要速度,让过滤器读取数百万行通常不是一个好主意。

DBMS 中的

主键 与性能无关。它是对可以放入表中的记录的约束。提供速度的是一个索引。一个 HBase 表只有一个索引项——那就是行键。没有其他列被索引,因此过滤器很慢(大约每秒数百万行)。

关于hbase - 列式数据库中 "the primary key is the data"的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57816964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com