在互联网技术发展到今天,相信大家都对分布式数据库表现出了浓厚的兴趣,问过我同一个问题:什么是分布式数据库?“有兴趣学习”的朋友希望表现出“勤学好问”的品格,然后补充道:“这是哪个大厂的产品?”好吧,我的朋友们,你们真的给我开了个玩笑。但笑过之后,我不禁思考:为什么分布式数据库在大众乃至专业领域的认知度如此之低?我大概可以总结出两点原因:数据库产品特性和商业氛围。首先,数据库产品的特点是高度抽象。用户一般只是从使用层面接触数据库,知道数据库能实现什么功能,而并不关心或很难关心它的内部原理。某些类型的分布式数据库的卖点就是这种抽象能力,让用户感觉这种分布式数据库的应用与传统的单机数据库没有明显区别,甚至更简单。其次,数据库的商业气息一直很浓。数据库产品具有高度抽象性和地域性,自然成为资本追逐的领地。商业产品和服务的卖点在于它们包含支持服务,而许多商业数据库最赚钱的部分就是提供这项服务。因此,这些产品有意无意地向最终用户隐瞒了数据库的技术细节,在这种商业保护下,用户很难有主动去了解内部原理的动力。这导致即使你在工作中接触到分布式数据库,你也没有意识到它与过去的数据库有多么不同。但“福宝虽然迟到了,但不会缺席”——当技术问题频频出现,因为对其原理缺乏必要的了解时,用户才会真正体会到它们看似相似,但本质上是完全不同的。随着分布式数据库逐渐渗透到各个领域,用户再也不能“傻瓜”地根据特性来选择数据库产品了。新架构带来的新特性促使用户深入参与其中,需要他们仔细评估数据库的技术特性,甚至重新设计自己的产品以更好地与之集成。我是“历史主义”的忠实拥护者,我会随着分布式数据库的发展而介绍。相信大家看完之后,对开头的问题会有自己的答案。现在让我们从基本概念开始。分布式数据库的基本概念可以从名字上拆解下来:分布式+数据库。一句话概括:由多个独立的实体组成,并通过网络相互连接的数据库。理解新概念的最好方法是通过你已经掌握的知识来学习。下表比较了大家熟悉的分布式数据库和集中式数据库的主要5个区别。从表中我们可以总结出分布式数据库的核心——数据分片和数据同步。1.数据分片该特性是分布式数据库的一项技术革新。它可以突破中心化数据库单机的容量限制,从而将数据分布到多个节点,以更加灵活高效的方式处理数据。这是分布式理论给数据库带来的礼物。有两种类型的分片。Horizo??ntalsharding:数据按行切分,将数据切分为数据组分布到不同的节点。垂直分片:数据按列切分,将一张数据表的模式(Schema)切分为多个小模式。2、数据同步是分布式数据库的底线。由于数据库理论传统上是基于单机数据库,引入分布式理论后,一致性原则被打破。因此,有必要引入数据库同步技术来帮助数据库恢复一致性。简而言之,就是让分布式数据库像“普通数据库”一样工作。所以数据同步背后的驱动力是人们对数据“一致性”的追求。这两个概念相辅相成,相互作用。当然,分布式数据库还有其他的特点,但是把握以上两点就足以让我们理解它了。接下来,我将从这两个特点出发,探讨一下分布式数据库在技术史上的发展历程。我会利用互联网、云计算等较新的时间节点来划分代际。毕竟我们的核心还是着眼于当下,面向未来。商业数据库互联网浪潮之前,尤其是大数据时代之前的数据库。说到分布式数据库,就绕不开OracleRAC。OracleRAC是一个典型的大型商业解决方案,是一个软硬件一体化的解决方案。早年加入国内顶级电信行业解决方案公司时,被其强大的性能所震撼,被其高昂的价格深深折服。它是那个时代数据库性能的标杆和极限,是完美解决方案和商业成就的体现。我们试着用上面提到的两个特性来简单分析一下RAC:它确实实现了数据分片和同步。每一层都是离散的,尤其是底层存储采用了ASM镜像存储技术,看起来就像一个完整的大磁盘。这样做的好处是做到了极致的用户体验,即单例数据库和RAC集群数据库在使用上没有明显区别。其分布式存储层提供了完整的磁盘功能,使其对应用程序透明,从而实现了可扩展性和其他性能之间的平衡。即使在处理一定规模的数据时,其经济性也有不错的表现。这种分布式数据库设计被称为“共享存储架构”(sharediskarchitecture)。它既是RAC强弱的关键,也是它的“阿喀琉斯之踵”。DBA流通的最大8个节点的集群限制可以认为是RAC的限制规模。这个规模在当时的环境下完全够用,但随着互联网的兴起,一场轰轰烈烈的“运动”将打破OracleRAC的不败金身。大数据我们知道Oracle、DB2等商业数据库是OLTP和OLAP的融合数据库。最先在分布式道路上寻求突破的是OLAP领域。2000年初,以Hadoop为代表的大型数据库技术开始以其“sharenothing”技术体系向以Oracle为代表的关系型数据库发起进攻。这是横向扩展和纵向扩展、通用经济设备和专用昂贵服务、开源和商业等概念的第一次大规模碰撞。它拉开了真正意义上的分布式数据库的序幕。当然,从广义上讲,Hadoop等大数据处理平台不应该称为数据库。但是从我们上面总结的两个特点来看,确实是非常令人满意的。因此,我们可以将它们概括为早期的业务分析场景的分布式数据库。从此,OLAP数据库开始了自己的独立演进之路。除了Hadoop之外,另一种被称为MPP(MassivelyParallelProcessing)的数据库也在这段时间经历了快速的发展。MPP数据库的架构图如下:我们可以看到,这个数据库在架构层面上和大数据中常用的Hadoop非常相似,只是概念不同。简而言之,它是对SMP(对称多处理器架构)和NUMA(非统一内存访问架构)等硬件系统的创新。它采用无共享架构,通过网络将多个SMP节点互连起来,使它们协同工作。MPP数据库的特点是首先支持PB级的数据处理,同时支持比较丰富的SQL分析查询语句。同时,这个领域也是商业产品的战场,既有Teradata等独立厂商,也有HP的Vertica、EMC的Greenplum等巨头。大数据技术的发展使得OLAP分析型数据库独立于原有的关系型数据库,形成完整的发展分支路径。随着互联网浪潮的发展,OLTP领域迎来了发展机遇。基于互联网的国内数据库领域进入互联网时代的第一件大事就是“去IOE”。其中,“走向Oracle数据库”产生了深远的影响。十年前,阿里巴巴说出的这句口号就深深影响了国内数据库领域。这里我们不讨论细节,也不评价其正面或负面影响。但就其对分布式数据库的影响而言,它至少带来了两个概念上的变化。应用成为核心:开源数据库去掉O后,需要配合数据库中间件(proxy)使用,但这种组合无法实现传统商业库提供的一些关键功能,如丰富的SQL支持、ACID级别的事务等。因此,应用软件需要精心设计,以保证与新的数据库平台的配合。应用架构设计变得非常关键,整个技术架构开始脱离可笑的“面向数据库”编程,转向以应用系统为核心。弱一致性概念普及:虽然强一致性需求依然旺盛,但人们也逐渐接受弱一致性可以在特定场景下尝试解决系统吞吐量问题。而这又带来了另一个好处。一线研发设计人员开始认真考虑业务需要什么样的一致性,而不是简单地依赖数据库提供的特性。以上两个概念是打破对Oracle的迷信后产生的。他们本身是正面的,但如果没有这场运动,他们很难在普通用户中普及。这两个理念也对分布式数据库,尤其是国内分布式数据未来的发展产生了积极的影响。同时,全球范围内掀起一波NoSQL化浪潮,与国内的去IOE运动共同推动数据库向着横向分布的方向发展。NoSQL的内容将在下一讲详细介绍。和前文提到的大数据技术类似,随着互联网的发展,去IOE运动将OLTP数据库从原来的关系型数据库中分离出来,但是这里需要注意的是,这种分离并不是从基础上分离出来的,而是在互联网上构建一个完整的数据库,它结合了古老的开源数据库和先进的分布式技术,共同构建了一个融合的“准”数据库。它面向特定的应用场景,因此阉割了传统OLTP数据库的一些特性,甚至是一些关键特性,比如子查询和ACID事务。NoSQL数据库的重点是支持非结构化数据,例如Internet索引、GIS地理数据和时空数据。这类数据传统上是存储在关系型数据库中,但需要强行转换成关系型结构,不仅设计繁琐,而且效率相对较低。因此,NoSQL数据库被认为是对整个数据库领域的补充,让人们意识到数据库不应该只支持一种数据模型。随着分布式数据库的发展,一个从头开始设计的分布式OLTP数据库变得越来越重要,云计算为这个数据库注入了新的灵魂。两者的结合将使分布式数据库产生奇妙的化学反应。云原生是未来。从上面我们可以看出,人们确实有一个被广泛认可的分布式数据库,那就是OLTP类型的事务型分布式数据库。它在分布式数据库领域仍然是一个缺失的部分,而且是一个重要的部分。一个真正的OLTP数据库应该具备哪些特性?事实上,人们需要的是它不仅具有单机关系数据库的特性,而且具有分布式分片和同步的特性。DistributedSQL和NewSQL就是为此而生。它们至少有两个引人注目的特性:SQL对可靠的分布式事务的完整支持。典型代表包括Spanner、NuoDB、TiDB和Oceanbase。本课程将重点介绍DistributedSQL的关键特性,它们是现代分布式数据库的基石。这里就不多介绍了。02|SQLvsNoSQL:让我们一次学习各种“SQL”。同时,随着云计算的垂直和深入发展,分布式数据库迎来了新的革命浪潮——云原生数据库。首先,由于云服务固有的“超卖”特性,其采购成本相对较低,大大降低了终端用户尝试分布式数据库的门槛。其次,云服务厂商的支持人员可以与用户进行深度合作,形成高效的反馈机制。这种反馈机制使得云原生分布式数据库有机会快速迭代,从而能够主动响应客户需求。这就是云原生给分布式数据库带来的改变。通过生态系统的优化超越传统商业数据库。下面DB-Engines的分析数据表明,未来的数据库市场属于分布式数据库,属于云原生数据库。随着分布式数据库的发展,我们迎来了一个新的融合:即OLTP和OLAP将再次合并为HTAP(FusionTransactionAnalysisProcessing)数据库。这种趋势主要得益于云原生OLTP分布式数据库的成熟。同时,由于整个行业的发展,客户和厂商对实时分析数据库的需求也越来越强烈。而传统的大数据技术包括开源和MPP数据库,强调离线分析。如果要做秒级数据处理,交易数据和分析数据要尽可能接近,减少非实时ELT的引入,促进OLTP和OLAP向HTAP的融合。下图是阿里云PolarDB的HTAP架构。总结一下,就用《三国演义》的第一句说:“天下大势,分久必合,合久必合。”被分割。”而我们观察到的分布式数据库,甚至数据库本身的发展,都与这句话不谋而合。分布式数据库的发展是一个从融合到分裂,再到融合的过程:早期关系型商业数据库的分布式能力可以是满足大部分用户的场景,产生了Oracle等数个数据库巨头产品;OLAP领域率先寻求突破,进化出大数据技术和MPP型数据库,提供更强的数据分析能力;IOEDatabase中间件的推出,结合应用平台和开源单机数据库形成新一代解决方案,让商用关系型数据库走下神坛,NoSQL数据库进一步打破关系型数据库的霸主地位;新一代分布式OLTP数据库正式上线完成表示对数据库核心特性的完整支持se在分布式领域,代表着分布式数据库的成熟,也说明了OLAP和OLTP在分布式场景下各自领域的成功;HTAP和多模式数据处理OLAP和OLTP的再次引入,从而将分布式数据库推上了传统商业关系型数据库几十年前的盛况,其影响比后者更为深远。回顾历史,是为了更好地把握未来。分布式数据库的历史也体现了实用主义的特点,它的演进是需求和技术博弈的结果,而不是精心设计的。
