回看过去一年,国产数据库在不断刷新着国内外各大榜单之际,也在各自细分场景也都取得不俗进展。可以说2021年是国产数据库由跟随主流到转向引领时代的重要一年,也是国产数据库从默默耕耘开始结出丰硕的果实的一年。
2021年,分布式数据库占领行业统治地位,整个行业逐渐从之前的单点到目前的分布式,并最终向云原生演进的趋势发展,而分歧在出现在技术路线选择上,Share Everything还是Share Nothing是个问题,这一点也将在下文详细探讨。
2021年,随着AI和物联网的快速发展,图数据库、隐私计算平台和时序数据库开始冲出传统SQL与NoSQL形成的包围圈,在各自应用领域大放异彩。图数据库在回答「给我朋友圈点赞的人还给哪条动态点赞最多」等多跳关联问题时,效率比传统数据库高得多;隐私计算已成为大数据交易所等新兴场景应用的关键技术支柱,凭借充分挖掘数据价值,使数据可用不可见等特性,隐私计算平台可以完成传统数据库难以实现的任务;时序数据库则多用于物联网领域,对于结构化的时序数据如电表、传感器等设备向云端回传等物联网类型数据的处理效率比传统数据库高得多。
2022年,随着数字化转型的不断深入,像大数据交易、数字货币这样的新兴场应用还将不断涌现,在新生需求的催动下,数据库既要处理联机交易,又要对客户进行实时画像,甚至还要对于客户行为进行准实时分析,这就给各种细分类型的数据库都提供了上场的机会,只要针对用户痛点对症下药,国产数据库就能打破传统巨头的封锁,迎来自己的春天。
百家争鸣,国产数据库终迎爆发?
回顾数据库的发展,十几年前的数据库领域远没有现在这么纷繁复杂,当时关系型数据库几乎是这项领域的代名词。
关系型数据库始于上世纪60年代,当时CPU刚刚进入集成电路时代,计算机算力、内存都较之前的晶体管时代有了大幅提升,不少企业也开始使用计算机进行数据管理。不过当时的计算机系统缺乏有效范式来描述复杂的数据关系,因此当时库管系统还一直处于非常简陋的雏形状态。
直到1970年,关系数据库之父、IBM研究员E.F.Codd在《Communications of ACM》杂志上发表了一篇名为“A Relational Modelof Data for Large Shared Data Banks”的论文,这也成为了数据库历史上的奠基之作。后来ACM在1983 年把这篇论文列为创刊25年中最具里程碑意义的25篇论文之一,同时也开启了关系型数据库快速发展的时代大幕。从1960年到2006年近半个世纪的时间里,关系型数据库几乎成了数据库的唯一代名词。
不过随着互联网的大规模推广,关系型数据库技术难以处理海量的大规模数据。其后,谷歌对大数据技术起到奠基性作用的三篇论文横空出世,数据库技术开始进入裂变发展时间。
没有统一的模型能应对所有数据处理场景,比如关系型数据库中的B+树模型,在写入方面所需要消耗的时间较长,因此在物联网这种需要极高写入性能的场景就不适用;
时序数据库用的LSM树,又没有很好的查询性能,无法在日常交易场景中使用;
解决多跳查询时,如针对“使用小米12芯片的手机还有哪些”问题,就需要先查询小米12使用的芯片类型,再查询使用该芯片的其它手机类型,这种场景下B+和LSM树都不合适,而使用图数据库使用的图原生存储模型往往可以将这种查询的效率提升成百上千倍。
国内数据库领域,“去O”绝对不仅仅是简单的替代,而是要从更高维度去降维打击。由于之前关系型数据库在市场中的强大惯性影响,使得在实际工作中存在很多数据库的滥用情况,比如在传统的关系型数据库上进行“表关联的数仓查询任务”、用数据湖存储时序数据等等,因此国产数据库只要从这些实际痛点切入,完全有机会打下自己的一片天。
PolarDB:Share Everything与Share Nothing的平衡体
正如上文所说,Oracle、Db2等单体数据库往往成本极高,因此如何把之前的单点数据库拆分成分布式数据库达到“去O”降本的目标,就是一个业界必须要回答的问题。
一开始的映入人们眼帘的方案是分库分表,将之前成百上千亿行的大库,拆分成一个个小的数据库是一个看似不错的方式。
最初版本的PolarDB是这种Share Everything的典型代表。2021年6月,PolarDB正式对外开源,8月有关PolarDB数据库核心架构创新论文被国际数据库顶级会议VLDB 2021录用。
从中我们发现,使用Share Everything就要解决跨库联合查询时的效率问题,这个目标的达成离不开PolarDB业内首创的数据库代理增强理念,即在碎片化的数据库基础服务之上构建新一层的标准和生态,从而对上层应提供标准化的数据库应用规法,尽可能地屏蔽底层不同数据库所带来的业务干扰。
细分来看,PolarDB的MPP层首要任务是做好“连接数据与应用”的桥梁作用。PolarDB的GateWay层是一个“数据库网关”,可获取数据库的访问流量,提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服务质量分析、可观察性)等透明化功能。
在增强功能基础上,PolarDB可插拔功能也就顺理成章了。可插拔功能让用户可以任意组合增强性功能,并通过可插拔的能力完成快速接入。PolarDB采用三层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展。将各种能力封装到模块中,用户任意挑选适合的组件,根据自身的业务需求、以极小的成本来定制化数据库服务。
另外,PolarDB提供接口让开发者自主拓展开发,通过可插拔体系帮助大家建立分片、加解密、迁移、治理、SQL审计、多租户、TTL、影子库、读写分离、高可用等标准功能和一些非标准功能,并借助数据库与应用之间的这个缓冲带,“搭个台子”帮助业界以最低成本打造一个良好的数据库生态。
未来,PolarDB自治服务DAS将进一步结合云原生数据库的弹性能力,向用户提供智能化的Serverless数据库服务。云原生与分布式也将深度结合,通过“Shared Nothing+Shared Everything”、“Shared Storage”、存储计算分离等技术,最大限度实现资源池化、弹性变配、超高并发等能力。
TiDB:Share Nothing的NewSQL数据库
在“去O”的方案中,TiDB则选择了Share Nothing的路线,本质上讲Share Nothing架构中各个子数据库之间是完全独立的,但是其跨库计算却是统一关联的,因此Share Nothing则是另外一种流派。
这个方案中各个节点共享所有的物理日志,并通过RAFT、Paxos等协议在各节点中进行同步TiDB则是这种方案的典范,而今年TiDB最主要的进展是在4月发布了5.0版本,这个版本中又将行列混存的方案发挥到了极致。
TP与AP的巨大差异本质是由于行存与列存在不同使用场景下的效能表现所造成的。在计算机的世界中数据吞吐速率往往是受数据访问局部性原理所支配的,我们知道现代硬盘、内存工作原理是当用户读某一区域的数据时,其邻接的数据也会被调入上一级高速缓存,读1k数据和连续的64M数据代价基本相同,用户在读取连续的磁盘或者内存信息时,其速度往往比随机读取快一个数量级。
因此行存储大多用在SQL的TP场景,而列存储基本用在NoSQL的AP场景。这背后的原因也很简单,还是以银行业的情况为例,联机交易的TP场景下比如当客户取款时,会校验用户、账号、密码、余额等信息,这些信息都是以行为单位存储的,联机交易中数据是经常是以行为单位访问的,把数据放在一行就会有访问速度的优势。但是在统计、分析营业报表,进行数据挖掘等AP场景下,往往只需要关注交易金额、账户余额等少量几个维度的信息,而不需要用户、账号、密码等这些数据,而在这种场景下将同一维度信息放在一起的列存储方案就有很大的速度优势了。
将行列进行混存,综合两者的优势,这方面业界倒也有不少尝试,但往往都不很成功。其最大的问题还是在于对于联机TP交易场景来说,列式存储的写入性能太低了,所以一般来说传统的方案往往还是退化成为行式存储TP数据库在交易量少的日终时刻,将数据吐给列式存储AP数据库进行数据挖掘。
TiDB数据库没有用双写方案,而创造性的将行存储与列存储做成一个基于一致性协议的集群,这样的做法使TiDB数据库行列混存的方案避免了之前列存储写入带来的性能损失。而且一致性集群还保证了列存储与行存储之间的数据差距不会太大。而且这种方案还把任务分配的工作完全封装在了管理节点内部,用户根本不用关心数据库的机制,更不用关心SQL到底是AP还是TP任务就能享受到混合负载的双重优势。
Hubble:HTAP进化版的AI原生数据库
2021年以来,与AI相结合成为数据库的重要发展方向,但传统的关系型数据库在应用到DB for AI的场景时经常会出现性能问题,因为数据库经典技术优化不好的话将导致机器学习性能下降。
正如前文所说,在目前很多社交、直播等连接的场景,传统的关系型数据库或者数据仓库根本不适用,这时候只能靠图数据库大展神威,在解决节点相似度计算,多跳关联计算等问题时,利用图论的框架体系比较容易解决。但是,传统的数据库模型则力不从新,因此图数据库也被称为AI原生数据库,图数据库厂商Neo4j也在今年获得了4.25亿美元的F轮融资。
图数据库的使用场景往往和传统的交易场景互相融合,因此业界正在呼唤一款能够综合关系型数据库、数据仓库以及图数据库等各方面性能达到平衡的产品,使混合式HTAP数据库走向进一步的超融合,而这方面Hubble数据库今年取得的进展最大。
Hubble的技术方案其实还是通过RAFT协议将TP库中的数据以异步的方式同步到图数据库当中,并针对图数据库的存储模型进行了大量的优化。在联机交易完成进行数据分析时,Hubble的MPP 层通过智能优化器来生成最优的执行计划,并分配计算任务。Hubble系统内的Coordinator会对表级的元数据进行管理和存储,在进行SQL解析时,会基于执行计划和数据分布,提供最佳的数据存储格式。如对聚合类的分析场景,优化器通过对SQL计划的解析,提取出相关的聚合算子,自动选择列存模式;对于记录级的修改和查询操作,会转变成行存模式,实现数据的点查、修改操作。
针对用户的分析计算场景,通过不同的优化器选择不同的数据存储格式,提供最佳的分析性能。而这样的创新点也给Hubble带来了实时大屏,这样一个可以提供实时多维数据分析结果的杀手级应用。
数牍科技:隐私计算的集大成者
如果目前图数据库是AI原生的数据库,那么隐私计算就是AI应用与数据挖掘的最强加速器。近年来各种AI模型规模按照以摩尔定律描述的方式不断扩大,从谷歌T5破百亿开始到GPT-3破千亿用了近2年,但从GPT-3到盘古的2000亿却只用了大半年的时间。
训练数据集越大,参数规模越强,取得效果越好,也成了目前AI领域的共识。但问题是单一一家企业的数据量都是有限的,即使是工行其市场份额也不足10%,而且一般企业数据往往都保有自身客户的敏感信息,想让工行将数据完全透明的共享出来是不可能的,而隐私计算技术恰恰是解决这个问题的关键。随着2021年中北京大数据交易所的建成,隐私计算技术也逐渐被人们所熟知,不少业内人士都将2021年定为隐私计算大规模应用元年。
数牍科技在隐私计算方面所取得的成果引业界瞩目,今年3月数牍科技成为北京国际大数据交易联盟的首批成员单位。今年11月数牍科技成为上海数据交易所、西部数据交易平台首批签约数据商,并深度参与深圳数据交易所关键技术预研项目,并将作为深圳数据交易所首批数据服务商之一参与数据交易服务。
从技术上讲数牍科技的整合秘密分享、模糊传输协议、同密加密等技术全方位打造了一个可信执行环境(TEE)。并基于这种高效的密态数据库框架;利用 TEE 提升设备的安全计算性能,构建面向海量设备的数据联邦。
随着隐私计算的发展,打破数据孤岛,实现“数据可用不可见”。在这种新型计算架构下,可区别于传统的集中式共享来保护各方的数据隐私安全,通过海量移动设备的端侧联邦学习,来保证个人敏感数据不离开端侧设备本地。因此未来数据库结合联邦学习、联邦计算也是热门的发展方向之一。
TDEngine:物联网时代的时序数据库
随着移动端发展走向饱和,现在整个IT行业都期待着“万物互联”的物联网时代所带来的流量红利,但是与互联网不同,物联网有自己的信息处理需求。
在物联网时代的首要目标是数据最大化,其底层逻辑是数据不能漏,loT终端往往都是一些传感器,其自身可靠性有限,一般都是靠多点这冗余相互验证来保证整体可靠性的,所以对于某一点的准确率要求并不高,但是很多数据不能及时采集就会丢失,因此物联网往往使用时序数据库,其对于速度与效率要求更高。如果用汽车类比,传统数据库的最高目标是做类似迈巴赫、宾利这样的顶级家用轿车以安全优先;而物联网则要做类似于法拉利这样为速度而生的跑车。
在典型的物联网场景中,往往有许多各类不同的终端设备,部署在不同的位置,去采集各种数据,比如某一生产区有5万个终端,每个终端每10秒发送一次数据。那么每年会产生1600亿个数据点。而这些数据都是顺序产生的,并且每次监测产生数据的格式全部是一致的、结构化的,并且没有删除和修改的需求,所以时序数据库一般使用LSM模型,从而将随机写转化为顺利写,以提升效率。
今年涛思数据就在数据时序性和结构化,继续做了很多开拓性的工作,一共发布了184个版本,其中社区版52个、企业版132个。合并4607个Pull Requests,正在运行的测试例接近1800个,软件代码行数共计104万行。从用户需求出发,我们在2021年发布了大大小小30余个新功能,重点包括:降低企业迁移成本的独立程序taosAdapter、基于Grafana的TDengine零依赖监控解决方案TDinsight、纳秒时间精度、浮点数有损压缩、原生接口写入、嵌套查询、无模式(Schemaless)写入等等。
写在最后
历史经验告诉我们:淘金时代下,埋头淘金的人可能不是胜利者,而洞察用户真切需求、并在适合的时间提供适合工具以提高效率的人,极有可能独占鳌头。
2021年国产数据库百花争鸣,蓬勃发展。在这个在独特的历史关键拐点下,各类国产数据库不断涌现,老牌厂商也开始逐步创新,取得了重大的进展。相信新的一年中,国产数据库势将创造新的惊喜等待着我们。
《新程序员003》正式上市,50余位技术专家共同创作,云原生和数字化的开发者们的一本技术精选图书。内容既有发展趋势及方法论结构,华为、阿里、字节跳动、网易、快手、微软、亚马逊、英特尔、西门子、施耐德等30多家知名公司云原生和数字化一手实战经验!