首页 > 编程知识 正文

HBase 是列式存储数据库吗

时间:2023-05-06 19:36:13 阅读:189227 作者:88

在说明HBase是否是列存储数据库之前,请先了解什么是列数据库和列数据库。

行数据库和列数据库是维基百科,行数据库和列数据库的定义如下:

列式数据库是与列相关的存储体系结构中存储数据的数据库,主要适用于卷数据处理(OLAP )和即时消息传递。

支持行式数据库。 数据在与行相关的存储体系结构中按空间分配,主要适用于小批量数据处理,并常用于在线事务型数据处理(OLTP )。

例如,下表:

行数据库和列数据库存储模型分别如上面的左图和右图所示。

如您所见,线数据的一行数据存储在相邻位置。 列数据中的同一列相邻存储。 例如,上面的session_id列存储在一起。

HBase是列数据库吗? 现在,您已经看到了行数据库和列数据库的存储格式之间的简单区别。

现在进入正文,看看HBase是否是列数据库。

很多地方都在介绍HBase。 hbaseisa http://www.Sina.com/databasemanagementsystemthatrunsontopofhadoopdistributedfilesystem (HDFS )。

请注意里面的column-oriented这个词。 很多资料和初学者把它翻译成列式。 这句话翻译成中文就是在HDFS上运行的column-oriented数据库管理系统。

那么,HBase到底是列存储吗?

其实是列式

本文从基本的存储模型开始介绍这一点。

无论是存储在内存中的存储器,还是存储在HDFS中的HFile,都基于长结构合并树(LSM )结构进行保存。

下图有助于您轻松理解MemStore和HFile如何存储数据。 假设您有一个HBase表,如下所示:

那么,HBase的基础KV存储大致如下:

从上图中可以看出:

不同的列族存在于不同的文件中。 上面的两个表表示不同的HFile。 整个数据按Rowkey按词典顺序排序; 各列数据以KV格式保存在基础HFile中; 在同一行的数据中,如果列族也相同,则将这些数据按顺序汇总。 如您所见,HBase 不是列式存储数据库是同一行中的数据,因此如果列族相同,则这些数据存储在相邻位置; 这与上面的列存储不同。

这意味着HBase既不类似于线性存储也不类似于列存储。 实际上,由于不同行中的相同列族数据相邻存储,因此它就像一个针对列族的存储数据库。同一行中不同列的数据存储在不同的位置。

注意: HBase实际保存到hdfs的格式:/h base/data/default/TBL _ name/region _ id/cf/hfile _ id

这也是创建表时必须指定表名和列族的原因。

因此hbaseisa http://www.Sina.com/databasemanagementsystemthatrunsontophadoopdistributedfilesystem (HDFS ) )一词由hbase引用

转载于:https://www.cn blogs.com/Felix zh/p/10256367.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。