Hbase和MySQL的区别是什么?一文深度对比!

来源:https://blog.csdn.net/weixin_41605937/article/details/110933984

MySQL + HBase是我们日常应用中常用的两个数据库,分别解决应用的在线事务问题和大数据场景的海量存储问题。

从架构对比看差异

相比MySQL,HBase的架构特点:

  1. 完全分布式(数据分片、故障自恢复)

  2. 底层使用HDFS(存储计算分离)。

由架构看到的能力差异:

  1. MySQL:运维简单(组件少)、延时低(访问路径短)

  2. HBase:扩展性好、内置容错恢复与数据冗余

d58815544560e8621e13f1b409f8ca8d.png

23d42a2cc4e36459902f4d2b8dddb4be.png

从引擎结构看差异

8bc1cc8a06536776b0f53098a0cf86ba.png

33ac2dbd7c9d758510dcdc2cf2b3210c.png

相比MySQL,HBase的内部引擎特点:

  1. HBase原生没有SQL引擎(无法使用sQL访问,使用APlI),云HBase增强版(Lindorm)及开源Phoenix均提供sQL能力

  2. HBase使用LSM(Log-Structure Merge)树,,Innodb使用B+树。

f02478dd936be29a3ecee08320a19065.png

3dc6f783d4f65106c9c60ca7b1092baa.png

由引擎结构(B+Tree vs LSM Tree)看到的能力差异:

  1. MySQL:读写均衡、存在空间碎片

  2. HBase:侧重于写、存储紧凑无浪费、Io放大、数据导入能力强

关于LSM树和B+树的理解

目的是为了减少磁盘IO,

索引:某种数据结构,方便查找数据

hash索引不利于范围查询,使用树结构

B+树
  • 从磁盘读数据是以页为单位,根据这个特点使用平衡多路查找树

  • B+树的非叶子节点存放索引,叶子节点存放数据

  • 非叶子节点能够存放更多的索引,树的高度更低

  • 叶子节点通过指针相连,有利于区间查询

  • 叶子节点和根节点的距离基本相同,查找的效率稳定

  • 数据插入导致叶子节点分裂,最终导致逻辑连续的数据存放到不同物理磁盘块位置,导致区间查询效率下降

LSM Tree
  • LSM(Log-Structured Merge),LevelDB,RocksDB,HBase,Cassandra等都是基于LSM结构

  • HDD,SSD顺序读写的速度都高于随机读写,写入日志就是顺序写

  • WAL,memtable,sstable

  • 有利于写,不利于读,先从memtable查找,再到磁盘所有的sstable文件查找

  • Compaction的目的是减少sstable文件数量,缓解读放大的问题,加速查找可以对sstable文件使用布隆过滤器

  • Compaction策略

  • STCS(SIze-Tiered Compaction Strategy)空间放大和读放大问题

  • LCS(Leveled Compaction Strategy)写放大问题

  • Compaction会引入写放大问题,在Value较大时采用KV分离存储缓解写放大

  • 写操作多于读操作时,LSM树有更好的性能,因为随着insert操作,为了维护B+树结构,节点分裂。读磁盘的随机读写概率会变大,性能会逐渐减弱。LSM树相比于B+树,多次单页随机写变成一次多页随机写,复用了磁盘寻道时间,极大提高写性能。不过付出代价就是放弃部分读性能。

数据访问

相同之处:数据以表的模型进行逻辑组织,应用对数据进行增删改查

不同之处:MySQL的SQL功能更丰富:事务能力更强,HBase既可以用APIl进行更灵活、性能更好的访问,也可以借助Phoenix使用标准sQL访问;只支持单行事务。

HBase的特色功能--TTL

8032f3514447d63063d1860de7a0d413.png

HBase的特色功能—多版本

2d92162849de9cafde135bc4a5e781b2.png

HBase的特色功能—多列簇

883861503536fa9380aee0eebf43e721.png

HBase的特色功能—MOB

285e0ecb4e7cfaf42649665f2a60dda1.png

从生态看差异

MySQL:满足APP的在线数据库存储,一般有我足矣

18c645b818f81227340cab2c0921c4c3.png

大数据圈:应用于大数据场景的存储、计算及管理组件

299f93bfdf72d891dad6da9a7f199945.png

  • MySQL:一般可独立满足在线应用的数据存储需求,或者与少量组件配合(如缓存、分库中间件)

  • HBase:一般需要和较多大数据组件一起配合完成应用场景,场景架构的设计、实施存在较大的挑战

总结

21d1d4c9b4db81679a71f6de879bcdf7.png

哪些场景的存储适合HBase ?

31ebb292bf9e707b68342af5bd343995.png

e6b6b0d17494d14b1401ede63fb9cc0e.png

32fe17ae030b5ad18307acba193ba4f4.png

214b6bdb0a0299bdbd9f3cca9cd827fd.png


b7d44cc335178b52049e3fcebffa8ef5.png

9f81e1f1242abd3d7d4655261f179a3d.png

8ffaf42a95a4c0719120aa184e58b891.png

a28d333d135e21ce66b43efde72a6f84.png

d6aae9d88cc01a569e429a686ccd9043.png

a4d8812ad31d5e23c11d4182bbca9f62.png

952752d773187d8f65023ad827a258d0.png

HBase不是MySQL的替换,HBase是业务规模及场景扩张后,对MySQL的自然延伸

6f23f7d084d4bc8af6503378c1c040a4.png

END

Java 技术学习交流群

 「架构君」建立了读者群,可以添加我微信拉你进群

593c5e89115c888ed7baba15da987f99.png

添加时可以备注城市+职位+年限】

分享一套家庭理财系统(附源码)

2021-09-20

c375a5d6d2f22e3381a9fc4307a70049.png

推荐一套开源通用后台管理系统(附源码)

2021-08-21

908db40ef16e9e106b2ee61c3746a765.png

推荐一个酷炫的监控系统

2021-08-07

977b7dc91e479c1092ba7c9869389dcb.png

从朋友那里搞了 20 个实战项目,速领!

2021-06-14

f0b9c542e79090aa2e1530a43f2bae4e.png

推荐一个完善的停车管理系统,物联网项目springboot,附源码

2021-05-30

651ad44ae6ecf6e4873c0218d37f1508.png

推荐一个互联网企业级别的开源支付系统

2021-09-04

0553b4b47873e61cb9147126ef07306c.png

一款神仙接私活儿软件,吊到不行!

2021-07-31

b4e41f80fbaa9924c1d40afac0e138ec.png

推荐 10 款超实用的企业级开源应用!

2021-10-17

a93616ae20e3ec9c1c4025cefd6feece.png

开放平台 SDK 设计实践!

2021-10-13

e0399431da7ade017ac938a9559f8677.png

“淘宝” 开放平台接口设计思路

2021-10-07

540bd988706e2509662b9a4f748f42bd.png

Spring中经典的9种设计模式

2021-10-05

955db8f24b5c6e5aaa7be321b1626a7a.png

13d8425bc7c27901c3cd34214ad4a4c7.png

如有收获,点个在看,诚挚感谢54d43cd51ea920fe3a7b1bc73bdedde8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值