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

springboot+poi导出百万级数据避免OOM内存溢出 记录下在实际项目中碰到过一个重大问题,全量导出百万级数据,由于之前在开发环境数据没有达到百万级别,因此此问题没有处理,上到测试环境后,数据量达到150万的时候,全量导出所有的数据出现内存溢出问题。这段代码亲测有效,到测试环境上导出五百多万条数据都没有出现OOM问题,希望对各位朋友有效。这里实现了多个sheet页导出的数据,excel导出一个sheet最多能导出100万多一点数据,至于具体数字,请朋友们自行百度下。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:blog.youkuaiyun.com/weixin_41605937/
article/details/110933984

4c1811e52acb27c453432802c4fdd5f1.png


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

从架构对比看差异

相比MySQL,HBase的架构特点:

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

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

由架构看到的能力差异:

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

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

67e6b7197cb8398935efec7c0d96f554.png 8c760f158647d4f9079e64070d8d4372.png

推荐下自己做的 Spring Boot 的实战项目:

https://github.com/YunaiV/ruoyi-vue-pro

从引擎结构看差异

4a8c0f574ecf378d4339033722ed28d0.png 8c15e0e0dd19f47328303db9177bdb8c.png

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

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

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

61a85acef153a2d87a18455624f32c27.png 678a2ae3f2f6a6baefa8c362bf79c63b.png

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

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

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

推荐下自己做的 Spring Cloud 的实战项目:

https://github.com/YunaiV/onemall

关于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

2aaa4472bc35106fad126e32c64e1120.png

HBase的特色功能—多版本

6238629829af5f6b7ed130e5d372d896.png

HBase的特色功能—多列簇

b1844cd935f62ecfc3e3d7cb0f6ab0c3.png

HBase的特色功能—MOB

0b34fc26139a9b1a11a71e11d98200c1.png

从生态看差异

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

8e859038b0284ba81b69df5f2cad5c00.png

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

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

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

总结

c4c35b3dea9b47b1fab030b6c1a1232e.png

哪些场景的存储适合HBase ?

feaf728689a3141eaa1a5e657d3c883b.png da660ff3fc87cf75fabe61ee0d3bf6d6.png 267750290d632ccb7409dc5993f04eb1.png 5b40d4fb18389f253d9fd66a789f6060.png 0adee684fc4756c0492e10c4cad90076.png cf99128be92c739c2db0196680ca11a8.png 9548a062aedac2bf7ebf3507a5350f3a.png e9f9561c09266f98452ee961a2f31b13.png 77ba3a01ebf419ffe0068c07f752df1d.png e79529a7bc7ffebb3e033fa9c7c9ae80.png c9408bcfe43fc403d7e43d8c43c13827.png

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

dd365bbe6df78c67017db525e411bdb7.png

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

b8587b841e569a196889197e5f67113f.png

已在知识星球更新源码解析如下:

292a6df4d7ee0b1959e9061691913094.png

f37fa1197ce0c7255907d8c41f9808b0.png

ae5118b071f0dba3ab41b23c5ccb0c6a.png

2c3c249ec5b28950f404ddd50ab228c1.png

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
解决POI读取Excel内存溢出的问题 Office软件一直是一个诲誉参半的软件,广大普通计算机用户用Office来满足日常办公需求,于是就产生了很多生产数据和文档,需要和企业单位的专用办公系统对接,而Office的解析工作一直是程序员非常头痛的问题,经常招致程序员的谩骂,也被誉为是微软最烂的发明之一。POI的诞生解决了Excel的解析难题(POI即“讨厌的电子表格”,确实很讨厌,我也很讨厌Excel),但如果用不好POI,也会导致程序 阅读详情

相关推荐

MySQL 8.0.22 与 HBase 2.4.11 操作对比:4种CRUD场景Java API代码量实测

本文深度对比了MySQL 8.0.22与HBase 2.4.11在CRUD操作中的Java API代码实现差异,通过4种典型场景的实测分析,揭示关系数据库与NoSQL数据库在开发效率上的核心区别。文章从连接配置、表创建、数据插入到查询更新等环节进行逐项对比,为大数据项目选型提供实践参考。

weixin_32247165的博客 277

图解电商支付架构设计,这才是真电商

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 8:55 更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2020 超神之路,很肝~中...

芋艿V 907

亿信ABI VS FineBI哪家强!一文告诉你热门国产BI的深度对比

随着业务的发展,越来越多的政企机构上了BI系统,通过数据分析辅助经营决策。国内外已经有不少发展相当不错的产品,作为一名资深的BI爱好者,这次我认真试用了目前市面上比较热门的2款国产BI工具,写下这篇测评。 接下来,将从产品定位、产品功能的角度来进行对比。 一、产品背景 FineBI源于帆软公司,帆软早期做报表软件,其Finereport在中小企业应用广泛,后来逐渐发展商业智能BI,目前最新版已迭代...

amsonga的博客 3927

kafka-console-ui的简介及安装使用

kafka-console-ui 是一款轻量级的kafka可视化管理平台,安装、配置特别简单,一般来说只需要配置一个kafka集群地址启动即可。为了开发的省事,没有国际化支持,页面只支持中文展示。不是一个企业级的平台,目前看来只适合中、小型集群的管理。这个工具看起来是挺low的,但是对于刚接触kafka急需一个合适工具进行管理的同学来说,还是挺友好的,没有国际化支持,全是中文展示。支持broker相关配置的查看及修改。

初夏0811的博客 7420

大数据选型对比追命连环50问及参考答案

Spark 比 MapReduce 运行快有多方面原因。首先,从数据处理模型来看,MapReduce 采用的是较为传统的两阶段模型,即 Map 阶段和 Reduce 阶段,数据在这两个阶段之间需要进行磁盘读写操作。例如,在一个简单的单词计数任务中,Map 阶段输出的中间结果需要写入磁盘,Reduce 阶段再从磁盘读取这些中间结果进行处理。而 Spark 基于内存计算模型,在可能的情况下,数据会被缓存在内存中,减少了磁盘 I/O 开销。

大模型大数据攻城狮的专栏 700

解决poi读取excel2007出现内存溢出问题代码参

解决poi读取excel2007出现内存溢出问题代码参

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

来源:https://blog.youkuaiyun.com/weixin_41605937/article/details/110933984MySQL + HBase是我们日常应用中常用的两个数据...

架构文摘 724

PRIDE数据库20年:2025更新

PRoteomics IDEntifications (PRIDE)数据库(https://www.ebi.ac.uk/pride/)是全球领先的基于质谱(MS)的蛋白质组学数据存储库,也是ProteomeXchange联盟的创始成员之一。本文总结了过去3年中PRIDE资源及相关工具的发展情况。提交到PRIDE存档的数据集数量平均每月达到约534个。主要得益于基础设施的持续改进,如用于超大数据集的新文件传输协议(Globus)、新的数据重新提交流程以及自动数据集验证过程。

多组・学・多组学 2065

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

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

民工哥的博客 2286

一步步指导:在Chrome中安装Vue插件vue-devtools

Vue.js是现代Web开发中最流行的前端框架之一,它以其轻量级、高性能和易于理解的设计理念受到开发者的喜爱。为了更高效地开发和调试Vue应用,Vue.js官方提供了一个强大的开发工具——vue-devtools。

小透明的博客 5620

揭秘个人开发者接支付宝的‘野路子’:不用企业资质,用Python模拟扫码转账与回调监听

本文探讨了个人开发者如何通过Python模拟支付宝扫码转账与回调监听的技术实现,解析了支付宝URL协议格式,并设计了本地化的支付状态监听方案。文章强调该方法仅用于技术研究,实际应用需遵守支付宝官方接口和金融合规要求。

weixin_30736301的博客 409

Hive与HBase深度对比:从架构原理到应用场景

维度HiveHBase核心定位数据仓库,批处理数据库,实时查询数据存储逻辑表,数据在HDFS物理表,自管理存储处理速度慢(分钟级)快(毫秒级)操作类型全表扫描、聚合随机读写、范围扫描适用场景报表分析、数据挖掘在线服务、实时查询数据来源文本文件清洗后MySQL导入、实时写入一句话总结需要全表扫描、复杂分析→选择Hive + Hadoop需要随机查询、实时访问→选择HBase + Hadoop两者不是竞争关系,而是互补关系。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4589

【Python 实战基础】如何绘制热力图来模拟绘制北京景区热度图

Python如何绘制热力图来模拟绘制北京景区热度图 文件读写 基础语法 字符串处理 文件生成 数据构建

菜鸟实战的博客 3403

015、HBase分布式数据库与传统数据库的深度对比

在大数据时代,选择合适的数据库系统至关重要。本文将深入探讨HBase分布式数据库与传统关系型数据库(如MySQL、Oracle)的区别,通过详细实例和研究成果分析两者的特点和适用场景。

Code is fun. 1886

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 335

使用 MATLAB/Simulink 构建一个电机-液压联合控制系统的仿真模型

本文详细介绍了基于Simulink的电机与液压执行机构联合控制系统建模方法。通过7个步骤,系统讲解了从创建项目、搭建PMSM电机模型、建立逆变器与矢量控制模块,到构建液压泵和执行机构模型的完整过程。重点展示了如何设置关键参数、添加测量反馈模块,并提供了实用的代码片段。教程还包含仿真运行流程、结果分析指标及进阶建议,帮助读者掌握多物理场耦合系统建模的核心技术。该方法适用于机电液一体化系统设计,为工程实践提供有效参考。

amy_mhd的博客 613

Hive、SQL Server、MySQL 和 PostgreSQL 之间的对比区别

Hive是一个大数据处理工具,运行在 Hadoop 上,适合批量处理和分析海量数据。SQL Server是一个关系数据库系统,提供事务处理和实时数据访问,适合中到大规模的企业级数据管理和分析。MySQL是一个开源关系数据库系统,广泛用于中小型应用程序和网站,提供高并发的实时数据处理能力。PostgreSQL是一个开源关系数据库系统,提供高可扩展性和复杂查询功能,适合 OLTP 和 OLAP 工作负载,支持丰富的数据类型和高级查询功能。

WHYbeHERE的博客 2378

SPD-Conv+YOLOv8:空间深度转换卷积赋能小目标检测,从原理到实战的科研级优化指南

从理解SPD-Conv“空间到深度+逐步卷积”的核心设计,到亲手将其嵌入YOLOv8并验证在小目标场景的表现,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解“小目标特征保留”在检测任务中的核心价值。现在就开始行动,相信你会在小目标检测的“细节捕捉”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入SPD-Conv后,YOLOv8在小目标AP上提升5-8个百分点,mAP50-95提升3-5个百分点,而推理速度仅下降5%以内,充分体现了其“保细节+提精度”的优势。

m0_64661770的博客 163

IDEA太强悍了!pg数据库和mysql语法区别

一面(电话面+后期在线coding) ①你们为什么要使用mongdoDb?你们的这个系统中涉及到哪些表? ②hytrix 的实现原理是什么?隔离策略有哪些?你们使用的是哪一些?你们项目中哪些地方使用到了,使用场景是什么?为什么要使用? ③spirng 源码。 ④rocketMq 的设计理念,数据存储,设计思想等。 ⑤ConcurrentHashMap的底层实现原理 ⑥你线上问题解决经验是什么?遇到了什么问题?应该怎么去解决? ⑦在线编码: 两个有序链表,合并成一个链表,然后进行算法的时间复杂度,空间复杂度分

青山绿轻舟 729

仿真学习系列(二):ADS仿真直观理解方波与频谱分量的关系

在高速电路设计中,我们常常听到一句话:“信号其实不是电压在传输,而是频率在传播。” 这句话看似抽象,却揭示了信号世界的核心本质——任何时域波形,都可以被拆解为一系列不同频率的正弦波。 那么,一个看似简单的方波,究竟由哪些频率成分组成?为什么在示波器上,有的方波上升沿又快又“方”,而有的却“圆润”得多?这些差异背后,隐藏的正是高频分量的力量。 本文将通过使用 Keysight ADS,从零搭建仿真电路,直观地观察方波与其谐波成分之间的关系。

案例文章,高速信号 815

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

HBase

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 5.1 HBase简介 1 什么是HBase HBase是一个分布式的、面向列的开源数据库 HBase是Google BigTable的开源实现 HBase不同于一般的关系数据库, 适合非结构化数据存储 2 BigTable BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。 适合大规模海量数据,PB级.

あずにゃん梓喵的博客 462

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hadoop + hbase架构和源码分析

Hbase原理、基本概念、基本架构 深入HBase架构解析(一) 深入HBase架构解析(二) HBase 系统架构 HBase之数据模型(DataModel) hbase数据模型 HBase 在淘宝的应用和优化小结 [Hadoop] 如何为你的企业选择正确的Hadoop版本 [HBase]数据模型(逻辑结构) [Hadoop] 实际应用场景之 - 阿里 HBase的特征和优点 笔者带你剖析大数

李志涛的专栏 5427

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 云原生时代,Java 最强!没有之一,不接受任何反驳!
下一篇: 就这样,,,进字节了?
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值