赣州新闻网

首页 / 科技

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

2020-04-12 · 赣州新闻网 · 科技

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

作者 | 黄东旭

责编 | 郭 芮

我还清楚记得,五年前的这个时候,当时还在豌豆荚,午后与刘奇和崔秋的闲聊关于未来数据库的想象,就像一粒种子一样,到了今天看起来也竟枝繁叶K = C e [ f E茂郁郁葱葱,有点感慨。按照惯例,五年是一个重要的节点,没有十年那么冗长,也没有一两年的短暂,是一个很好的回顾节点。在 PingCAP 成立五5 O A ? Y周年之际,就在此认真的回顾一下过去,展望一下未来。

五年前创业的出发点其实很朴素` S 4 B M ` 3 K =业那会儿,我们觉得并没有一个系统能够很好的解决数据的问题。可能好奇的读者就要问了:不是有 Hadoop?还有 NoSQL?再不济= i f关系型数据库也能分库分表啊?其实列出的这几个几乎就是当年处理存储问题的全部候选,这几个方案的共同特点就是0 H - & = | y B:不完美。

具体一点来说,这几个解决方案对于数据应用的场景覆盖其实都不大,对于复杂一点的业务,可能需要同时使用 n 多个方案才能覆盖完整。这就是为什么随着近几年互联网业务越来越复杂,类似 Kafka 这样的数据 PipelinW { o 2 2 2 然意味着业务层需要更高的复杂度去弥补,其实很多工程师其实偏向于l ` L ;用线性的思维去思考维护系统的成本。但是实际4 q d X M的经验告诉我们,事情并不是这样的。一个系统只有一个数据库和有十个数据库的复杂程度其实并不是的简单的 10x,考虑到数据的流动,维护成本只可能是更多,这里还没有考虑到异构带来的其他问题。

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

以分布式数据库为中心的架构是什么样子的呢?5 $ P ! V K很好理解,整个架构的中心是一个场景覆盖度足够广,且具有无限的水平伸缩能力的存储系统。大部分数据的流动被限制在这个数据库内部,这 : ^ * , h R A !样应用层就可以几乎做到无状态,因为这个中心的数据库负责了绝大部分状态,每个应用可以通过自己的- # V & R v F Q (缓存来进行加速。

这里我想提醒的是,为什么我在上面强调水平扩展能力,是因为受限的扩展能力K R @也是导致分裂的一个重要的原因。我们从来都没有办法准确的预测未来,我们很难想象甚至是一年后业务的变化(想想这次疫情),有句老话说的很好e 8 1 | 3 h m:唯一不变的就是变化。

另外一个经常被问到的问题,为什么要强调缓存层需要离业务层更近,或者说,/ M ^ V K n为什么位于中心的q D t这个巨型数据库不应该承担缓存的责任?我的理解是,只有业务更懂业务,知道应该以什么样的策略缓存什么样的数据,而且出于性能(低延迟)考虑,缓存离业务更近也是有道理的。

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

对应上面那句话「唯一不变的就是变化」Q U G M g = t 1 ~,这个架构带来最大的好处` E l S 4 & ~正是「以不变应万变」,或者更简单的一个词:简洁。Goog} G J Q Ble 其实在很早就想清楚了这个问题,因为他们很早就明白什么是真正的复杂。

另一个例子是 HTAP,如果关注的数据库的发展的话,最近一定对 HTAP 这个词很熟悉,其实在我看来的 HTAP 的本质在于上面提到的覆盖度,下面是一个典型的架构:

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

传统的数据架构通常将 OLT: L 2 Q ) wP、OLAP、离线数仓分离,各个系统各司其职,中间通过独立的 Pipeline 进行同步(有时候还会加上 ETL)。

下面是一个 H} 3 mTAP 的系统的样子:

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

虽然从表面上看,只是简单V B ; Y b = d Q的将接/ _ 1 S F口层进行整合,但是这个意义其实是深远的,首先数据同步的细节被隐藏了一起来,这意味着数据库层面可k ; { = W以自己决定通过何种方式同步数据,另外由于 OLTP 引擎和 OLAP 引擎在同一个系统内部,使得很多细节信息不会在同步的过程中丢失,比如:事( c { N e , | 8务信息,这就意味| * ) /着在内部的分析引擎能够做到传统的 OLAP 没办法做的事情。另外对于业务层的使用来说,少一个系统意味着更统一的体验和更小的学习和改造成本,不要低估统一带来的力量。

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

未来在哪里?

上面这些是过去五年发生的事情,也几乎E * w d . t o } A按照我们创业时候的设想一步步的变为现实,那么接下来的五年会发什么?随着对于行业和技术的理解的加深,至少有一点我深信不疑的是:

弹性调度会是未来的数据库的核心能力

谁都不会否认,最近十年在 IT 技术上,最大的变革是由云带来的,这场革命还在进行时。云的核心能力是什么?我认为是弹性。计算资源分配的粒度变得越来越细,就像从只能买房变成可以租房,B * L P甚至可以像住酒9 n F F店一样灵活。这意味着什么?本质在于我们可以不用为「想象中」的业务峰值提前支付成本。

过去我们的采购服务器也好,租赁机柜也好,都是需要设定一个提前量的,当业务峰值没有到来之前,其实这些成本是已经提前2 3 - 2 ` L 3支付的了。云的出现将弹性n ; B d /变成了基础设施的一个基础V / } )能力,我预计数据库也会发生同样的事情。

可能有很多朋友会有疑问,o n t 8 Q m L F现在x B M C难道不是几乎所有数据n ` ^ Y Z ( / y v库都号称能够支持透明水平扩展嘛?其实这里希望大家不要将「弹性调度」狭隘的理解为扩展性,而且这个词的重点在「调度」上,我举几个例子以方便大家理解:

1、数据库能不/ P , i h I z |能够自动识别 workload,根据 workload 进行自动伸缩?例如8 o Z Z A:预感到峰值即将来临,自动的采购S K _ r p / V机器,对热数据创建更多副本并重分布数据,提前扩容。在业务高峰过去后,自动回收机器进行缩容。

2、数据库能不能感知业务特点,根据访问特点决定Y } | $ Y R D分布?例如:如果数据带- Z j E R Y有明显的地理特征(比如,中国的用户大概率在中国H j 8 4 q . ]访问,美国用户在美国),系统将自动的将数据的y Q @ z & g 3 f地理特征在不同的数据中心放置。

3、数据库能不Q | j A t O能感知查询的类型和访问频度,从而! ` U自动决定不同类型数据的/ t l } E 9 Z j存储介质?例如:冷数据自动转移到 S3 之类比M L 5 q {较便宜的存储,热数据放在高配的闪存上,而且冷热数据的交换完全是对业务方透明的。

这里提到的一切背后( 2 @ = v都依赖的是「弹性调度」能力。未来我相信物理资源的成本会持续的降低,计算资源的单价持续下降带来的结果是:当存储成本和计算资源变得不是问m i 5 x |取什么样的洞察,能够怎么W G d样更好的改变我们的生活,我并不知道,但是做这件事情的主角我猜不会是人类。虽然在这个小节我们讨论的东西可能就有点像科幻C 3 Q小说* ` G $ v } X了,不过我p S T E Y ( E C愿意相信这样的未来,从数据的海洋中诞生出新的智能体。% ` $ #

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

尾声

创业这五年的时间,回头I t b q _ . F f看看那个最朴素的出发点:写一个更好的数据库彻底解决烦 o 7人的 MySQL 分库分表问题。似乎也算没有偏离初心,但是在这个旅途中一步步看到了j 9 @ ; | P q更大的世界,也越来越有能力和信心将我们相信的东西变为现实。

凡所过往,皆为序章。雄心的一半是耐心,构建一个完美的数据库并不是一朝一夕的工作,但是我相信我们正走在正确的道路R s T *上。

作者:黄东旭,分布式系统专家、架构师、开源软件作者。PingCAP 联合创始人兼 CTO,知名开源项目 Codis/TiDB/TiKV 主要作者,曾就职于微软亚洲研究R g v ] V } ^ ] v院、网易有道及豌豆荚。2015 年创业,成立 PingCAP V f l N c z U ),致力于下一代开源分布式数据库的研发工作,擅长分布式存储系统设计与实现,高并发后端架构设计。

声明:本文r # d ^ 4 X系作者投稿,版权归作者个人所有。

如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库

☞拿下 Gartner 容器产品第一,阿里云打@ } o %赢云原生关键一战!

☞腾讯面试官这样问我二叉树,我刚好都会 | 原力计划

☞5 n C斩获GitHub 2000+ Star,阿里云开源的 Alink 机器学习平台如何跑赢双11. { F数据“博弈”?| AI 技术生态论

☞微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生R = V!

☞机器学习项目模板:ML项目的6个基本步骤

☞IBM、微软、苹果、谷歌、三星……这些区块链w v e p R中的科技巨头原_ x 8 5 s来已经做了这么多事!J c Q

☞资深程序员总结:分析LinuL 9 y % % 9 c xx进程的6个方法,我全都告诉你

今日福利:评论区留言入选,可获得价值299元的「2020 AI开} D ; ` D发者U I $ : g & = x g万人大会」( ] - % a在线_ e 4 w ( [直H s g X , 4 L *播门票一张。快来动动手指,写下你想说的话吧。

项目疫情发展工作调度会生活兴国数据数据库