欢迎关注方志朋的博客,回复”666“获面试宝典

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

从架构对比看差异

相比MySQL,HBase的架构特点:

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

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

由架构看到的能力差异:

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

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

从引擎结构看差异

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

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

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

由引擎结构(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

HBase的特色功能—多版本

HBase的特色功能—多列簇

HBase的特色功能—MOB

从生态看差异

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

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

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

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

总结

哪些场景的存储适合HBase ?



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

热门内容:
  • 我研究了一个月阿里的岗位JD,不曾想.....

  • 腾讯 Code Review 规范出炉!

  • 如果从 0 开发电商平台,要用到哪些组件和框架?大多数人都说不全!

  • 0.2秒居然复制了100G文件?

  • 华为最美小姐姐,被外派墨西哥后...

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

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

  1. Hbase和MySQL的区别是什么?

    点击关注公众号,实用技术文章及时了解 MySQL + HBase是我们日常应用中常用的两个数据库,分别解决应用的在线事务问题和大数据场景的海量存储问题. 从架构对比看差异 相比MySQL,HBase的 ...

  2. 深度对比!Hbase 和 MySQL 的区别是什么?

    点击关注公众号,回复"1024"获取2TB学习资源! MySQL + HBase是我们日常应用中常用的两个数据库,分别解决应用的在线事务问题和大数据场景的海量存储问题. 从架构对比 ...

  3. mysql nosql引擎_nosql与mysql的区别是什么

    nosql与mysql的区别是:1.MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计:2.MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻 ...

  4. hive和mysql的区别_hive和mysql的区别是什么

    hive和mysql的区别是什么 hive和mysql的区别有: 1.查询语言不同:hive是hql语言,mysql是sql语句: 2.数据存储位置不同:hive是把数据存储在hdfs上,而mysql ...

  5. MySQL与CVM自建数据库优势_UCloud云数据库MySQL产品优势及与自建数据库对比

    前文,我们了解过UCloudy优刻得云数据库活动<云数据库有什么用?UCloud海外MySQL云数据库促销最低5折>,以及产品介绍<什么是云数据库?云数据库机型版本和产品架构介绍&g ...

  6. 基于java+mysql的Swing+MySQL物业收费系统(java+gui+文档)

    基于java+mysql的Swing+MySQL物业收费系统(java+gui+文档) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可 ...

  7. UCloud云数据库MySQL产品优势及与自建数据库对比

    UCloud云数据库MySQL产品优势及与自建数据库对比 前文,我们了解过UCloudy优刻得云数据库活动<云数据库有什么用?UCloud海外MySQL云数据库促销最低5折>,以及产品介绍 ...

  8. mysql 缓存区_Mysql缓存的配置和使用

    在mysql服务器高负载的情况下,必须采取一种措施给服务器减轻压力,减少服务器的I/O操作.一般采用的方法是优化sql操作语句,优化服务器的配置参数,从而提高服务器的性能.Mysql使用了几种内存缓存 ...

  9. mysql 表 区 块 页_数据库 | 001-MySQL梳理系列(一)

    MySQL基本组成 SQL执行流程 Server 层主要包括连接器.查询缓存.分析器.优化器.执行器,包含了MySQL主要的很多核心功能,以及所有的内置函数.存储过程.触发器.视图等,其实就是所有跨存 ...

最新文章

  1. 计算机 程序 原理,计算机储存程序和程序原理是谁提出来的
  2. 结合实例与代码谈数字图像处理都研究什么?
  3. Java之String类
  4. linux添加py自启动脚本_PyInstaller详解:将.py文件打包成exe文件
  5. 动态顺序字符串基本操作实验_掌握套路,你也会用动态规划
  6. 概述---《TCP/IP协议》卷一 练习题
  7. C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针
  8. 共享单车再涨价,真要骑不起了!
  9. IOHK与World Mobile合作以在坦桑尼亚建立新移动网络
  10. Docker安装tomcat出现404问题
  11. metinfo小于v6.2.0版本SQL盲注利用脚本
  12. 刷新include引进的页面
  13. IOS之Autorotation and Autosizing
  14. OUTLOOK新邮件到达提醒设置以及outlook最小化到托盘设置
  15. 9.TCP/IP 详解卷1 --- IP 选路
  16. 教大家防止Jar包被反编译
  17. 电机 matlab 仿真 实验总结,哈工大 电机学 MATLAB 仿真 实验报告.docx
  18. 解决无法卸载vmware bridge protocol功能,错误0×8007007E
  19. 巨佬Jake Wharton曾说过:一个App只需要一个Activity
  20. VirtualBox 0X00000000指令引用的0X00000000内存该内存不能为written

热门文章

  1. 国内工业软件行业分析
  2. 终端文件夹跳转工具autojump
  3. Matlab姿态表示
  4. 4.0 C++远征:重载运算符
  5. java jdk中的归并排序实现
  6. 用XML反序列化快速完成ASP.NET配置文件
  7. 跨平台表空间传输(摘自eygle《循序渐进Oracle》)
  8. 【组队学习】【35期】数据可视化(Matplotlib)
  9. 中国电子学会青少年编程能力等级测试图形化一级编程题:小鸡与鸭妈拥抱
  10. 【青少年编程】【三级】猜数字