国产数据库40年大盘点,愿这盛世如您所愿!
时间:2023-03-13 06:14:01 | 来源:电子商务
时间:2023-03-13 06:14:01 来源:电子商务
“六代繁华,春去也,更无消息。空怅望、山川形胜,已非畴昔。王谢堂前双燕子,乌衣巷口曾相识。” -元词作家萨都刺《满江红·六代繁华》,说起国产数据库的开山始祖,非人民大学的萨师煊教授非属,而萨师煊正是元代文豪萨都刺的后人,萨师煊与其弟子王珊合著数据库系统概论,直到现在依旧是目前我国数据库领域的经典教材。
早在1978年,萨师煊教授就开始为人大的同学们普及数据库的知识,当时刚刚恢复高考不久,数据库这个概念还属于非常新潮的名词,不过正是在萨老师的带领下,国产数据库40年来由默默无闻到真正的爆发,从单节点到蚂蚁分布式数据库速度之王Oceanbase;从单一功能的TP、AP库到混合式HTAP数据库天云的Hubble;从数据仓库、数据湖分立到仓湖一体的MaxCompute;从Sql、NoSql再到NewSql的Tidb;从传统数据库到专业的物联网时序数据库TdEngine;更遑论刚刚入选Gartner领导象限的最新一代阿里云数据库PolarDB。
2010年7月11日萨师煊教授在北京与世长辞,笔者翻遍了当时CSDN数据库版及百度数据库贴吧的贴子,也没有找到有关萨老师的悼文,在那个没有热搜、朋友圈的年代,萨教授与很多老科学家一样走的悄无声息,而彼时像PolarDB、TiDB、TdEngine这些国产数据库的典范,根本都还没有出生,今时今日读到这阕六代繁华,实在令人感慨万千,这里请允许笔者谨以此文向萨师煊等等数据库前辈致敬,愿国产数据库现今之盛世,如您所愿!
须臾之间,2020 进入了倒计时,回首过往,今年可谓国产数据库的丰收年,从蚂蚁的OceanBase再破TPC速度记录,到阿里云PorlarDB首进Gartner数据库领域的领导者象限;再到华为GaussDB革命性功能全密态的发布,国产数据库可谓是精彩纷呈,国产技术究竟走过了怎样的历程,接下来我们共同来进行盘点。
缘起-国际巨头的傲慢与偏见数据库的起源可以追溯到上世纪60年代。当时CPU刚刚进入集成电路时代,计算机算力、内存都较之前的晶体管时代有了大幅提升,不少企业也开始使用计算机进行数据管理。不过当时的计算机系统缺乏有效范式来描述复杂的数据关系,因此当时库管系统还一直处于非常简陋的雏形状态。
直到1970 年,关系数据库之父、IBM研究员E.F.Codd在《Communications of ACM》杂志上发表了一篇名为“A Relational Modelof Data for Large Shared Data Banks”的论文,这也成为了数据库历史上的奠基之作。后来A C M 在1 9 8 3 年把这篇论文列为创刊2 5 年中最具里程碑意义的2 5 篇论文之一,因为在这篇论文中首次提出了关系模型的概念。
关系本是数学中的一个基本概念,由集合中的任意元素所组成的若干有序偶对表示, 用以反映客观事物间的一定关系。如数之间的大小关系、人之间的亲属关系、商品流通中的购销关系等等。用关系的概念来建立数据模型,用以描述、设计与操纵数据库,E.F.Codd是第一人。
不过虽然关系型数据库的理论在1970年就问世了,但是市场上却迟迟不见关系型数据库的商用产品。这其中最主要的原因是IBM虽然率先提出关系数据库理论,但当时蓝色巨人的反应实在太迟钝了,他们在1973才启动System R项目去研究关系型数据库的实际可行性,不过也受限于当时IMS层次型数据库火爆的销售情况,因此IBM对于System R项目的关系数据库不怎么感兴趣。
1977年6月,Larry Ellison和他的甲骨文抓住了关系型数据库这个巨大的商业机会,甲骨文通过引入SQL语言、原子事务等等关键特性,在数据库领域站稳了脚跟,并在1989年正式进入中国。
当时中国数据库市场上像Foxbase、dBase之类的产品都远远没有Oracle那样的突出实力,甲骨文入华后不到五年,就赶上我国推进九七工程,那时各家各地都在抢着接电话,由于电话资费大幅下降,普通家庭也接得起电话了,这也使甲骨文的Oracle数据库在中国的销售情况迎来爆发式增长,不过单向的技术依赖,使得Ellison对于中国的态度比较傲慢。
也正是在这样的大背景下,甲骨文的创始人Ellison在1995年初次访华,据说Ellison到中国后的第一项工作就是拍摄一部有关Oracle一体机的宣传片,于是时任甲骨文中国总裁的冯星君就安排了20名北京的小学生共同参与宣传,可本来约好的早上8点正式开机,但直到9点Ellison他老人家都还没有起床。当时北京的冬天格外的寒冷,最低气温达到零下二十度,这些小学生在没有暖气的大巴上急得哇哇大哭,没办法冯星君只好一再催促Ellison赶快来救场,不过直到快到中午十二点钟,这位数据库帝国的掌门人才姗姗来迟,这种无奈的背后,其实也折射出我国当时在数据库是没有任何底气和信心的,就像现在的ASML光刻机一样,被卡着脖子,就只有任人摆布的份了。
一举打破Oracle垄断的支付宝核心OceanBase移动互联网大潮来临以后我国IT巨头应用方面的创新几乎做到了天下第一,无论是O2O、共享单车、移动支付领教是如此类,我们做的确实好,但是各大科技企业的核心数据库c位却一直被Oracle与Mysql等国外产品牢牢把持着。
不过国外厂商的最强神话终于在2019年的国庆节被成功打破。蚂蚁的Oceanbase数据库成功登顶世界上最权威的数据库评测机构TPC(国际事务处理性能委员会)排行榜榜首。而在今年五月OceanBase再次将自己之前创造的记录提升了近11倍,将甲骨文、IBM等等一众老牌数据库巨头远远甩在身后,正式宣告国产数据库落后于国际先进水平的时代已成过往云烟,自研数据库产品自此站起来了。
不过现在回头来看Oceanbase的诞生纯属意外,Oceanbase的创始人阳振坤绝对是天才中的天才,在1984 年考入北京大学数学系,3年修完本科,不到2年硕士毕业,师从王选院士并获得博士学位后,32岁的阳振坤就成为了北大首批长江学者奖励计划的特聘教授之一。如果继续沿着这条路走下去,相信阳振坤会成为萨教授那样的学术泰斗,不过象牙塔的生活对于阳老师来说还是太乏味了,受到了导师王选院士的影响,阳老师立志要做出一款能够名垂青史的作品,2010年已经年满45岁的阳老师加盟阿里,组建了一支自研数据库的团队。
2012年时任蚂蚁金服CTO的程立决定将支付宝1%的交易库存数据在Oceanbase上进行试运行,而这一试不要紧,OceanBase不负众望,超额完成任务成功运行了10%的数据,这也让Oceanbase在阿里内部一战成名。
有关Oceanbase的相关技术解读可以参考笔者在CSDN之前的文章《200行代码解读国产数据库阿里OceanBase的速度之源》、《国产数据库 OceanBase 二次刷榜 TPC-C,7 亿 tpmC!》这里不加赘述了。
混合型HTAP-天云Hubble数据库在传统关系型TP数据库的范式中,数据类似于随时会被加工改造的零件,而数据库则是零件的加工工厂。比如ATM取款时,取款人的账户余额和ATM的钞箱余额都是在数据库的加工下随时会变化的零件,因此TP数据库一般用于联机交易,关键是响应速度要快。而在AP数据仓库,则把数据看做是已经被加工好的成形货物,没有实时修改的需求,但是要进行大量的关联计算以挖掘数据价值,因此AP数据仓库大多被用于客户画像、营销策分析。
而TP与AP相对独立发展的趋势,随着实际业务的需要而发生改变,例如银行实时风控体系、电商实时推荐营销系统等等都是需要综合TP与AP特性的场景,因此HTAP的概念在2014年被Gartner正式提出。
HTAP(Hybrid Transactional/Analytical Processing)是在保留原有在线交易功能的同时,强调了数据库原生计算分析的能力。支持混合负载的数据库能够避免在传统架构中,在线与离线数据库之间大量的数据交互,同时也能够针对最新的业务数据进行实时统计分析。天云数据的Hubble就是一款整合了TP与AP特性的混合式HTAP数据库。值得一提的是,Hubble作为原创国产数据库获得了全国首届信创产业生态大赛中的一等奖。
在同一数据库实例下,同时支撑高并发低延迟的OLTP事务和海量密集计算的OLAP分析作业,这不是一个简单的任务,而Hubble的方案是引入损失函数动态评价SQL逻辑计划的执行成本、CBO代价优化解析、Sharding切片线程级别物理资源匹配不同计算负载、TP和AP双引擎调度执行、随机和序列化IO对存储的访问、依靠数据副本机制同时支持KV键值存储和列存存储交出了完美的答案。这意味着一张表可以同时支持行存和列存,真正的融合了存储结构,避免了在交易和分析数据库间每夜ETL数据搬家的繁琐运维工作和数据冗余。
天云Hubble数据库借助优化便捷SQL服务替代ES+HBase方案,节省昂贵Hadoop开发成本; 高并发实时流升级,完成了Flink不能处理更多事实表的金融反欺诈和复杂权益服务; 多表关联AP计算方面Hubble的性能是Impala的231%,在开放的大数据生态中,Hubble完全可以作为计算组件与开源组件协同工作,嵌入并服务主流数据中台环境。
NewSql的典范-TiDB2005年谷歌首次提出了大数据的概念,对于大数据(Big data)Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。也就是说大数据是指传统的Sql数据库无法处理的天量数据,这也就是我们目前常说的NoSQL型数据库,这是一种基于Key-Value寻址的数据库,这种数据库专门为海量数据存储服务,不过NoSQL要求数据之间的关联计算不能太多,比如字节、快手这样的视频社交APP,数据虽然是天量级的,但是用户每条动态之间所需要的关联计算不多,这样的场景下使用NoSQL数据库就比较合适了。
而我们前文提到的TP、AP数据库,都要进行数据之间的关联计算,比如电商平台上客户的一笔交易既要更新商家的库存又要更新买家的帐户余额,或者用户画像时要将客户的各项理财变动情况进行整体建模计算,这种关联计算的场景就是Sql数据库的天下了。
原本Sql与NoSQL的应用场景两不重叠,井水不犯河水的,不过从最新的出现的如直播带货这样的需求,就要求数据库既提供海量数据存储服务又提供高性能关联计算服务,这就是NewSql的领域了。
而打通NoSql与Sql任督二脉,打造NewSql数据库的明星产品个中典范当属PingCap的TiDB了。与 前文提到的阳正坤一样,PingCAP的联合创始人黄东旭也同样出身于微软,不过东旭老师在程序员中绝对堪称异类,他不止是位编程高手,绘画和摇滚水平之高甚至还远在代码能力之上,是IT业内闻名的文艺青年,他的TiDB(
https://github.com/pingcap/tidb)代码优雅,结构 清晰,颇有艺术气息,用他的话来说TiDB 的目标尝试让用户像使用和操作 Oracle、MySQL 传统数据库那样顺手,;而与此同时还能拥有弹性伸缩的高扩展、高可用性架构。
PingCAP今年有两个大动作,一是在数据库顶会VLDB上发表论文《TiDB: A raft based HTAP database》,二是继续将云原生进行到底,把TiDB与和Kubernetes 紧密结合,使得TiDB用户可以快速对集群进行扩缩容,滚动升级,这也反应了PIngcap在技术方面有非常深入的分析和思考,TiDB 的设计架构定位就是坚定的朝着云原生NewSql的方向发展。这也是PingCAP站上风口,在D轮融资2.7亿美元的主要原因。
金融级核心-GoldenDB笔者作为一名长期从事金融科技的程序员,对于数据库技术的对外依赖感触是相当深刻的,因为我国银行业的绝对核心-支付系统(CNAPS),其实都是世界银行在2000年对华援建产物,直到2013年底,我们才用自研二代支付系统将其取代。
如何将一致性问题是金融级数据库的重要讨论话题,分布式数据库的语境下一致性就是指各个数据库分片的数据是否一致,何时一致,如果更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。金融级的数据库必须要保证强一致性,也就是只要数据更新,就必须被后续的访问所看到。
在金融数据库方面中信银行与中兴通讯联合研发的GoldenDB在今年5月份人成功上线是一个重大的标志性事件,GoldenDB成功取代了在中信银行核心系统服役了几十年的IBM AS400数据库。为解决一致性问题,中信银行的数据库专家们创造性的提出在GoldenDB数据库引入全局事务协调器GTM,实现基于中间件的强一致性事务控制,完成分布式事务的全生命周期管理。保证异常场景下的数据一致性,解决分布式数据库可能的脏读问题,在数据备份/恢复过程中,保证各全局事务组的操作统一执行或回滚。
分布式事务中最重要的是原子性和隔离性。所谓原子性就是指事务像原子一样不可分割,比如用户在支付宝上还信用卡,那么支付宝的余额和信用卡的还款记录就需要同时成功或者失败,不能出现一边成功而另一边失败的情况,一般来讲原子性可通过已提交事务的回滚来实现。
真正的难点在于隔离性,隔离性主要是处理读写冲突和写写冲突。分布式事务提交时可能出现部分节点成功,而另外一部分失败的情况,此时中信银行的数据库天团又提出在这种情况发生时,将已经成功提交的节点上进行回滚。根据全局事务GTID在binlog中查找已提交事务信息,生成反向SQL语句并执行以实现数据回滚。通过以上的机制,就保证分布式数据库可以用于银行的动帐类业务,防止错账的发生。通过这一系列的神仙操作,终于使银行核心系统完全实现了分布式数据库的分布式迁移,并随之完成国产化替代。
传统数据库的终结者-PolarDB2010年前后中国的互联网企业普遍迎来了一波流量爆发,在2003年推出支付宝以后,淘宝交易迅速增长从2005年到2012年,交易额从80亿元、200亿元到1000亿,直到破万亿,不过这种爆炸式增长,也成为了阿里人甜蜜的负担,因为阿里电联用户的增长速度已经渐渐超出系统处理能力的提升速度了,而原有一直沿用的IOE(IBM的小型机、Oracle的数据库和EMC的存储)中心化系统与这种高用户并发的场景几乎格格不入,且不无论达到如此性能的IOE系统成本会有多惊人,问题的关键在于即使是当时最强大的科技公司IOE,也没有经历过上亿用户同时在线的业务场景,使用他们的产品方案有如南辕北辙,无法真正解决问题。所以王坚院士率先提出去IOE的目标,通过打造阿里自己的技术来解决用户爆发工资长的问题。
在IOE架构的系统中提升算力的思路是让服务器越来越强,而云计算的分布式思路是只需要增加服务器节点的数量,就能处理更多的并发服务请求,而分布式系统的业务连续性,并不是靠高可用性来保证,而是靠整个服务体系的容错能力造就的。在不断探索的过程中也诞生了新的分布式架构,通过发挥云计算的威力,使得看似普通的虚拟机集群,能够碾压一体机,能够为亿万用户同时提供优质的服务。欲戴皇冠,必承其重,很多公司都会要管理远超自身运维能力的大规模数据库集群,DBA团队维护对于很多企业尤其是初创企业来说成本不低,因此DAAS(Database as a service)逐渐兴起,用王坚院士的话来说未来使用数据库服务就像使用自来水和电一样简单,业界一般认为将传统业务上云成本可以降低一半,而将数据库业务上云成本可以降低三分之二,因此很多研究机构都认为云数据库才代表着数据库的未来走向,比如Gartner就预计到2023年全球75%的数据库都会跑在云上,可以说云数据库未来很可能会终结掉传统数据库的存在,因此谁能在云数据库方面依靠,谁就可以在云计算与数据库两个方面都取得优势。
根据Gartner上周发布的2020年度全球数据库魔力象限评估结果,阿里云凭借PolarDB的强大性能首次挺进全球云数据库供应商的第一阵营,进入领导者(LEADERS)象限,而腾讯和华为也都入选了特定领域者象限,这是有史以来中国数据库首次有三家厂商同时入选Garner的魔力象限。
Gartner在报告中指出 “阿里云拥有丰富的数据库种类覆盖度和完善的产品布局,为用户提供了多种关系型和非关系型数据库产品,还提供了混合云环境部署,同时集成了备份、数据迁移与同步等能力。”这样的评价也充分体现了阿里云PolarDB的不俗实力,同时也预示着像阿里云、华为这样的中国云厂商未来不可限量。
PolarDB的创始人李飞飞与阳振坤一样同样是少年天才,在初中毕业后,李飞飞直接进入了国家教委理科实验班,并被保送进入清华学习。博士毕业后他在犹他大学计算机系任教,从助理教授一路做到正教授, 后来在时任阿里集团CTO行癫的支持下,李飞飞加入阿里创立了PolarDB。
PorlarDB除了在索引结构、锁机制等传统数据库组件进行优化以外,还特别针对云服务特有的全球跨域数据同步与容灾需求,进行了重点设计,我们知道很多云服务客户的业务遍及世界各个大洲,因此对于云数据库的跨域数据同步也会有非常高的要求。PolarDB全球数据库(PolarDB Global Database Network,PolarDB-GDN)采用了数据库物理日志异步复制的方案。PolarDB-GDN通过高并发流水线技术将同步速度提升7倍,将数据跨大洲同步延迟控制在2秒内。全局读写分离技术结合多级别的一致性能力, 让业务不用做任何的改造的前提下降低整体的访问延迟,全面满足了云用户的需求。
今年是国产数据库的丰收年,除了上述数据库以下国产的时序数据库TDengine 2020年4月完成A轮融资2000万美元,8月将集群版开源,连续6天在GitHub全球趋势排行榜上排名第一;Oceanbase在工行的理财核心系统得到应用与验证;PolarDB-X应用在在中国邮政核心系统中,帮助邮政成功渡过1亿件的交易峰值;中国联通通过PolarDB-X等重构了其核心IT架构,实现对3.6亿用户的无缝“广覆盖”,成为全球最大的云上BSS系统。相信国产数据库的未来可期,也愿今日国产数据库之世如萨教授所愿!