从MySQL到HBase:数据存储方案转型的演进

  • 时间:
  • 浏览:0

修改

我那么 了乎 BigTable的前辈们是出于你这一 思路,每本人冒昧揣测一下,有2个应该是受到SQL数据库的影响。每本人感觉,你这一 或许却说 我一脉相承的演进,要花费用你这一 思路学习不显突兀。HBase全部都是凭空而来,也绝对全部都是补救所有你这一 的疑问的万能灵丹。

查询“值为25”的节点,只需用2次定位即可。

缓存B+高层节点

却说 有,应该说任何你这一 方案都非要完美,非要要花费。而所有的要花费全部都是演变而来,万变不离其宗:更好的补救你这一 的疑问。

3、结论

B+树全局有序,叶子节点存储的是主键。基于辅助索引定位主键,再用主键定位数据。MySQL水平切分后,没土土办法跨库维持建立全局有序索引:

master只负责写请求,slave同步master用来服务读请求:

3、HBase集群化补救方案

HBase:

索引,提供快速定位能力:辅助索引B+树,可不也能快速定位到最终所需的主键ID,根据主键ID可不也能快速拿到所需信息。

HBase非要局部信息,非要辅助索引

上节提到,B+树通过自增主键小量减少随机插入。原困辅助索引的指在,插入、修改、删除操作,辅助索引原困引起小量的随机IO。

2、Hbase写得快

非要MySQL

RegionServer向HMaster汇报请况。HMaster为RegionServer负载均衡,调整其负责的region 。

MySQL数据删除:

MetaIndex存储Meta的索引信息,Meta存储一系列元信息;MetaIndex功能之类于B+树的非叶子节点;Meta存储bloomfiler等辅助信息。



最简单的是扩展读,“无限”挂slave;进而拆分写节点,多点写入:垂直拆库、水平拆库。一旦选用分布式,就涉及怎么才能 才能 主从一致、怎么才能 才能 发现节点、怎么才能 才能 运维、ACID的怎么才能 才能 保证等你这一 的疑问。

B+ 树火山岩的全局有序

原文发布时间为:2018-06-19

参考:大众点评订单系统分库分表实践

减少随机读——MRR

MySQL要求尽量追加写(自增 ID),时延较慢;HBase可不也能随机插入,时延加快时延。

3、集群化数据库的辅助索引

MySQL成也B+,败也B+;HBase成也LSM,败也LSM。

基于timestamp过滤:

辅助索引,插入基本是随机的:

集群的限制点:

1、数据请求流程

查询“值为25”的节点,只需用4次定位即可。

四、总结

主从方案

本文来自云栖社区企业企业合作伙伴“DBAplus社群”,了解相关信息可不也能关注“DBAplus社群”。

HFile存储格式

服务稳定性:主节点挂了,Proxy会将从节点升级为主节点;从节点挂了会被其它从节点替换。

查询缓存

InnoDB的辅助索引

LSM树

2、MySQL的你这一 的疑问

1、HBase优化点 (主却说 我读)



三、优化思路

备份容灾:

https://zhuanlan.zhihu.com/p/240320067

将SQL执行结果放入缓存。

列缓存:快速判断Hfile是是是不是有所需的列,粒度较细,但存储占用较多。

2、MySQL优化点(主却说 我写)

MySQL数据变化引起存储变动:

笔者前一天曾在一家O2O创业公司工作,公司所有数据都存储在同有有三个多多MySQL里,你这一 非要任何主备方案。相信这是却说 有初创公司会用到的有有三个多多典型补救土土办法,当时这台MySQL为用户、订单、物流服务,并肩也为线下分析服务。

事务性:

RegionServer却说 我计算单元,挂掉后不影响服务。

新增

1、MySQL应用的演化

减少随机写——缓冲:延迟写/批量写

引擎层根据过滤条件过滤掉无用的行,减少数据量,进而优化server的性能。

关系型数据库,纵向的外键相互join;

根据主键查询,可不也能快速定位到数据所在磁盘块,只需用极少的磁盘IO即可拿到数据:通过缓存高层节点,主健查询只需用一次磁盘IO就可拿到数据;MySQL单表行数一般建议无需超过2千万,千万行以下的大表,B+树只需2~3层即可;

版本数量:基于后台合并,可不也能将太旧版本干掉。

进而却说 我一系列分布式方案,而HBase却说 我其中你这一 补救思路——只读主库保证一致,水平拆分、zk等机制保证自动运维、单行级ACID。至于性能方面,原困存储思路不同,MySQL与HBase分别选用了不同的读写性能。继而,就衍生出了怎么才能 才能 针对性进行优化。

参考链接:

快速检索

HBase直接将变化写入到memstore,非要其它开销。

集群的方案:

HBase却说 我在memstore记录删除标记,非要其它开销。

https://link.zhihu.com/?target=https%3A//blog.csdn.net/yangbutao/article/details/8394149

HBase只保证行级事务,单行数据肯定指在同一台机器(单机事务很好做)。

水平分库/分表带来的你这一 的疑问:

单个region过大,RegionServer会将region均分为有有三个多多(自动、手工)。你这一 更新.META.表。

B+ 树

MySQL读得快

4、HBase异步合并带来的好处

行缓存:快速判断Hflie是是是不是有所需用的行,粒度较粗,存储占用少,磁盘IO少,数据较快;

水平拆分:

一、集群化方案

HBase可不也能随机插入:

范式参考链接:https://zhuanlan.zhihu.com/p/20028672

MySQL数据是本地存储的,HBase是基于HDFS,有原困数据那么 了本地。

MySQL与HBase说到最核心的点,是你这一 数据存储方案。方案你这一 非要对错、非要好坏,非要要花费是是是不是。相信多数公司都与MySQL有着不解之缘,每项学校的课程甚至直接以SQL语言作为数据库讲解。我无需借自身经历,先来谈谈MySQL应用的演化。

可不也能做到全局信息的维护,但非要保证事务性。

垂直拆分的你这一 的疑问:

索引下推

二、性能选用

单实例的你这一 的疑问:

一千万行的大表,一般只需用一棵3层的B+树,其中索引节点 (非叶子节点) 的大小约20MB。全部可不也能考虑将大部叶子节点缓存,基于主键查询只需用一次IO。



MySQL以其“单机”很好地补救了ACID你这一 的疑问,你这一 ,性能再好的“单机”势必演变成“单点”瓶颈,进而,分布式思路成为必然。

扩容:需用再次水平拆分的:修改map,迁移数据……

正常检索,RegionServer会遍历所有Hfile查询所需数据。其中,需用遍历Hfile的索引块也能判断Hfile中是是是不是有所需数据;

本文作者:杨宏志

扩容方案:

业务继续增长,master甚至无法承载所有的写请求,数据库需用按业务拆分。

HBase相同你这一 的疑问

为你这一 MySQL建议自增主键?(MySQL随机插入的代价)

BloomFiler存储HFile的摘要,可不也能通过极少磁盘IO,快速判断当前HFile是是是不是有所需数据:

删除

HFile存储行态:

HBase写入内存+后台刷盘(最多是WAL,磁盘顺序写);MySQL需用维护B+树,小量的磁盘随机读写。

Rquest的路由流程,MySQL与HBase基本一致,非要RegionServer与MySQL的性能差异怎么才能 才能 呢?

增/删RegionServer后,会为重新调整region的分配土土办法。

业务继续增长,订单表有小量的并发写入,你这一 原困有了几千万行数据。

MySQL:

主从功能的你这一 的疑问:



随着业务增加,单个DB是无法承载非要多请求的。于是全部都是了主从克隆qq、读写分离的补救方案。

MySQL的主要瓶颈,单机单多多应用程序 。CPU有限、内存/磁盘功能、连接数有限、网卡吞吐有限……

4、附录

以你这一 思路,HBase全部都是凭空经常经常出现。以每本人浅显的目光所及,非要完美的架构,也非要绝对厉害的设计。并不一定SQL类数据库有其独领风骚的场景,NoSQL数据库自然全部都是纵横驰骋的疆域,无论是哪种架构,全部都是每本人鞭长莫及的角落。

辅助

服务稳定性:

异步化

垂直拆分

水平拆分

基于bloomfilter过滤:

数据就近

RegionServer却说 我计算单元,挂掉后Hmaster可不也能随便再找有有三个多多节点代替坏节点服务。

最直接的存储思路肯定是“文件”,当“文件”非要满足需求,全部都是了数据的组织土土办法,进而演进到关系数据库如MySQL。