Hbase数据结构列、列族、数据存储类型,RDMS的区别

首页/常见问题/低代码开发/Hbase数据结构列、列族、数据存储类型,RDMS的区别
作者:低代码开发工具发布时间:2024-10-25 13:58浏览量:5180
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

HBase 和 MySQL 的区别就是:将不同的列归属与同一个列族下;支持多版本数据在HBase中, 数据的存储使用了 LSM 树进行存储. 其中每一条数据都是一条操作记录。

一、Hbase数据结构

HBase 数据物理结构

在介绍其物理结构之前, 要先简单提一下 LSM 树

LSM

和 MySQL 所使用的B+树一样, 也是一种磁盘数据的索引结构. B+树是一种对读取友好的存储结构, 但是当大量写入的时候, 比如日志信息, 因为涉及到随机写入, 就显得捉襟见肘了.

而LSM树就是针对这种大量写入的场景而提出的. 他的中文名字叫: 日志结构合并树. 文件存储的是对数据的修改操作, 数据会 append 但不会去修改原有的数据. 是顺序写入操作.

但是, 如果不管不顾的将所有的操作都顺序写入了, 那读取数据的时候没有任何根据, 需要扫描所有操作才能读到. LSM 树的做法是, 先在内存中维护一份小的有序的数据(内存不存在随机读写的问题), 当这份数据超过一定大小的时候, 将其整个放入磁盘中.

这样, 磁盘中就存在很多个有序的文件了, 但是会有大量的小文件, 读取数据时要依次查找, 导致读取性能降低. 这时就需要对多个小文件进行多路归并合成一个文件来优化读取的性能.

至此, 基本就是LSM 树的全部思想了.

  1. 在内存中维护一个有序的数据
  2. 将内存中的数据push 到磁盘中
  3. 将磁盘中的多个有序文件进行归并, 合成一个较大的有序文件

HBase存储

在HBase中, 数据的存储就使用了 LSM 树进行存储. 其中每一条数据都是一条操作记录. 那么在HBase实现中的部分内容如下.

内存有序结构的实现

通过跳表来维护内存中的有序结构, 当一个跳表装满之后, 将禁止新的写入操作并将其 push 到磁盘中, 同时开一个新的数据结构来接收新到的操作请求.

每条数据的存储内容

存储了一个KV 键值对, 其中的 V 就是我们写入的值, 而这个 key 由以下部分组成:

  • row key
  • 列族
  • 列名
  • 时间戳
  • 操作类型: Put、Delete、DeleteColumn、DeleteFamily 等等

整个列表是 key 的顺序列表. 其排序规则如下:

  1. row key小的排在前面
  2. 同 row key 比较列族
  3. 同列族比较列名
  4. 同列名比较时间戳, 时间戳大的在前面.

按照这个顺序进行读取指定 row key 的某一列数据时, 最先拿到的数据就是最新的版本, 若是 delete 操作, 说明最后执行了删除操作, 即使后面有数据, 最新数据也是空.

磁盘文件的结构

由三部分组成:

  1. 头信息: 存储文件大小, 文件块数量, 索引位置, 索引大小等信息
  2. 索引数据: 用户对文件中所有数据块进行索引, 其中每一个数据块都包含一条索引数据, 索引内容包括
  3. 数据块的最后一条数据. 用于对索引进行二分查找, 快速定位到指定的数据块
  4. 数据块在文件中的位置
  5. 数据块的大小
  6. 布隆过滤器. 用户在扫描时快速过滤不存在的数据块
  7. 数据块. 其中存储了每一条 KV 数据.

按照这个结构, 用户在进行指定row_key 读取的时候, 每个文件的操作如下:

  1. 根据头信息内容, 加载索引数据
  2. 通过二分查找, 找到 row_key 在哪一数据块下
  3. 根据布隆过滤器过滤掉不存在的数据块, 加速读取
  4. 根据数据块的位置和大小, 找到指定数据块并二分查找指定数据

HBase 数据列族式存储

先简单回顾一下行式存储和列式存储.

行式存储

行式存储, 将一行数据存储在一起, 一行数据写完了才会写下一行. 例如典型的 MySQL.

行式存储在读取一行数据的时候是比较快的, 但如果读取的是某一列数据, 也需要将整行读取到内存中进行过滤.

列式存储

与行式存储相对应的就是列式存储, 既将一列数据存储在一起, 不同列的数据分别存储.

列式存储对于只读取某一列比较友好, 但相对的, 如果要读取多列数据, 需要读取多次并进行合并.

列族式存储

而 HBase 中选用了一种折中的方案, 列族式存储, 将列族放到一起存储, 不同列族分别存储.

那么也就是说, 如果一个表有多个列族, 每个列族下只有一列, 那么就等同于列式存储

如果一个表只有一个列族, 该列族下有多个列, 那么就等同与行式存储.

HBase 会将一张表同一列族的数据, 分配到同一个 region 上, 这个region 分配在集群中的某一个 regionServer. 所有的 region 存储在表: hbase:meta 表中, 表结构如下:

表不同列含义如下:

  • row_key 由以下字段拼接(逗号)而成
    • 表名
    • 起始 row_key
    • 创建时间戳
    • 上面三个字段的md5
  • info:regioninfo 主要存储以下数据(json)
    • STARTKEY: 起始 row_key
    • ENDKEY: 结束 row_key
    • NAME: region 名
    • ENCODED: 不清楚是什么
  • info:seqnumDuringOpen 表示regionServer 在线时长
  • info:server 落在哪个 regionServer 上
  • info:serverstartcode regionServer 的启动时间

HBase和RDBMS的区别

1. 数据类型

HBase 只有简单的字符串类型,所有的类型都是交由用户自己处理,它只保存字符串。

而 RDBMS 有丰富的类型选择,如数值类型、字符串类型、时间类型等。

2. 数据操作

HBase 只有很简单的插入、査询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,所以不能,也没有必要实现表和表之间的关联等操作。

而 RDBMS 通常有各种各样的函数、连接操作等,表与表之间的关系也有多神。

3. 存储模式

HBase 是基于列(簇)存储的,每个列都由几个文件保存,不同列的文件是分离的。

而 RDBMS 是基于表结构和行模式保存的。

4. 数据维护

确切地说, HBase 的更新操作不应该叫作更新,虽然一个主键或列对应新的版本,但它的旧版本仍然会保留、所以它实际上是插入了新的数据,而不是 RDBMS 中的替换修改。

5. 可伸缩性

因为 HBase 分布式数据库就是为了此目的而开发出来的,所以它能够轻松地増加或减少硬件数量,并且对错误的兼容性比较高。

而 RDBMS 通常需要增加中间层才能实现类似的功能。

6. 具体应用

RDBMS 具有 ACID 特性,拥有丰富的 SQL ,还有如下特点:

面向磁盘存储、带有索引结构、多线程访问、基于锁的同步访向机制、基于 log 记录的恢复机制等。

而类似 HBase 这些基于列模式的分布式数据库,更适应海量存储和互联网应用的需求,灵活的分布式架构可以使其利用廉价的硬件设备组建一个大的数据仓库。

延伸阅读:

二、行式存储和列式存储对比

行式存储倾向于结构固定,列式存储倾向于结构弱化。 (行式存储相当于套餐,即使一个人来了也给你上八菜一汤,造成浪费;列式存储相等于自助餐,按需自取,人少了也不浪费)

行式存储一行数据只需一份主键,列式存储一行数据需要多份主键。

行式存储存的都是业务数据,列式存储除了业务数据外,还要存储列名。

行式存储更像一个Java Bean,所有字段都提前定义好,且不能改变;列式存储更像一个Map,不提前定义,随意往里添加key/value。

最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

2026年低代码开发平台怎么选?5家主流厂商全方位对比
07-27 18:02
低代码平台如何选?需求梳理/功能适配/场景验证/安全合规/性能支持,少一条都不行
06-05 15:01
传统开发 vs 低代码:大型企业数字化建设成本对比分析
06-05 14:58
2026年5月分享:AI低代码是什么?企业如何用AI低代码构建核心业务系统?
05-29 09:52
微软按下vibe coding暂停键:AI写代码的狂欢,该醒醒了
05-27 16:44
企业数字化转型进入深水区:一位CIO亲述选型低代码平台的血泪史
05-25 16:44
探路中台、RPA、低代码引领企业级IT服务未来式
05-22 09:43
低代码AI实战指南:从"拖拽搭应用"到"对话即开发"的底层逻辑到底是什么?
05-21 15:00
2026企业级低代码平台TOP10实测:附选型评分表
05-20 14:12
为什么选择织信?
织信AI低代码开发底座,赋能企业快速构建复杂业务系统,驱动业务与IT高效创新
AI驱动开发
通过自然语言交互完成数据建模与逻辑编排,非技术人员也能快速上手,开发周期从数月压缩至数周。
高性能数据支持
提供上亿级数据承载能力与分布式集群部署,支持海量业务数据的高并发处理。
企业级场景覆盖
支持ERP、MES、CRM、SRM、WMS等核心系统搭建,无缝集成钉钉、企微、飞书及各类异构系统。
专业服务保障
支持私有化部署模式,全面保障数据安全。已累计服务制造、军工、金融等50000+企业客户。
B2C跨境电商知名品牌——朗驰实业
集设计、生产、销售于一体的综合性服装企业,专注女性快时尚B2C跨境电商,目前设有供应链中心、仓储中心、亚马逊运营中心、信息化中心、产品研发中心等20余个部门,引入织信低代码平台个性化定制一套研发、生产、销售全链路的数字化系统,打通服装从设计、生产到销售的各个环节。
全球500强车企巨头——吉利集团
作为一家全球知名的超大型企业,吉利需要大量的技术人员来满足各事业部门的日常数字化需求。在内部强调“降本增效”的大环境下,吉利通过采购“织信低代码平台”,开发周期平均缩短61%,人力投入减少47%,解决了开发需求常年堆积的难题。
医院后勤服务领军者——某管家
国内市场化运作、跨区域经营、集团化管理的大型专业医疗机构后勤服务供应商,全国80多座城市,每天为超过百万的病人和医护人员提供服务,通过织信低代码平台构建线上数字化的方式服务各医院的后勤保障和正常运行,主要为运送条线、保洁条线、秩序条线、工程条线、医废条线等解决工单调度、医辅材料运输、多端协同的效率难题。
中国兵器工业集团——银光化学
国家“一五”期间156个重点项目之一。属于国家高新技术企业,在信息化升级建设中,存在大量“小、散、碎”的信息化需求,需要投入大量人力资源进行开发,通过引入织信低代码平台,解决当下遇到的各类业务难题,提升整体的IT研发效率。
石油领域重点工程单位——川庆钻探
随着国企工规模的不断扩大和内部数字化转型的要求不断提升,公司着眼长远,决定借助织信低代码的各方面能力,从物资储备管理入手,并辐射经营、生产、工程、日常管理等多个板块,为后续内部信息化建设打好基座。
汽车零部件上市企业——川环科技
川环为了有效应对残酷的市场现实,高层一致决定加强公司内部管理,8大部门将全面进行数字化转型,耗时10月,成功上线8套系统,通过织信低代码平台对接现有用友U9ERP,实现各部门的业务线上化,并通过数据治理,实现整个企业从战略到经营管理的分析。
B2C跨境电商知名品牌——朗驰实业
集设计、生产、销售于一体的综合性服装企业,专注女性快时尚B2C跨境电商,目前设有供应链中心、仓储中心、亚马逊运营中心、信息化中心、产品研发中心等20余个部门,引入织信低代码平台个性化定制一套研发、生产、销售全链路的数字化系统,打通服装从设计、生产到销售的各个环节。
全球500强车企巨头——吉利集团
作为一家全球知名的超大型企业,吉利需要大量的技术人员来满足各事业部门的日常数字化需求。在内部强调“降本增效”的大环境下,吉利通过采购“织信低代码平台”,开发周期平均缩短61%,人力投入减少47%,解决了开发需求常年堆积的难题。

各行业用户的共同选择

国防军工
国防军工
央国企
央国企
生产制造
生产制造
生物医疗
生物医疗
科技服务
科技服务
金融证券
金融证券
科研院所
科研院所
物业地产
物业地产
织信适合谁?
如您有以下几种需求,欢迎 填写表单 联系我们
企业员工
《找工具开发功能》
公司老板
《找人定制系统》
软件集成商
《想快速交付项目》
  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科发路8号金融基地1栋5F5
  • 手机:137-1379-6908
  • 电话:0755-86660062
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2026. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
客服咨询热线1
0755-86660062
客服咨询热线2
137-1379-6908
申请预约演示
立即与行业专家交流