更多腾讯海量技术文章,请关注云+社区:https://cloud.tencent/developer
作者 | 那海蓝蓝,腾讯金融云数据库技术专家
作者 | 小编0.7,腾讯tdsql分布式数据库专家
作者 | 大米,腾讯tdsql分布式数据库专家
责编 | 仲培艺
由腾讯技术工程官方号发布在云+社区
在数据库领域,回顾2017这一年,精彩纷呈,热点不断,而且不乏标志性的事件发生。
如oracle提出的自治数据库这样的概念,把数据库技术带入一个新世界。其实ai技术应用于数据库由来已久,如ai技术调优数据库的性能、ai技术优化sql、ai技术自动创建数据库索引(learned index)等。但是能把ai和数据库结合使之进入大众视野的,还非“自治数据库”莫属。
再如ndbc(中国计算机学会数据库学术年会)庆祝四十华诞、阿里入股mariadb、国内类aurora架构的产品争相发布、数据库事务处理等核心技术的原创书籍出版、社区活动遍地开花等等,无一不在彰示着国内数据库界的精彩和繁荣。
ccf数据库专委会主任杜小勇教授说:客观来说,如今的中国数据库已经处于与世界并跑的位置了!
现在,让我们一起并跑,沿途中,我们将从学术界、工程界的角度,从国外到国内,从数据库内核技术到数据库运维等多种角度,一起来回顾精彩的2017。
1.百看不厌的数据库排行榜
截至2017年12月,在db-engines(https://db-engines/en/ranking)上排名的数据库引擎已多达361种。
从图1可见(对比去年同期数据如图2),oracle、mysql和microsoft sql server稳居前三,一路遥遥领先。
2017年12月数据库top5图
2016年11月数据库top5图
但从图3也不难看出,位于成熟期的同时,其成长空间也受到了一定的限制。oracle虽保持第一,但处于明显下滑趋势;mysql在17年6月表现出色,几乎与oracle持平,但后半年开始有所下滑;microsoft sql server自15年9月跌至谷底后一路回升,于17年趋于稳定,但总体仍处于下滑趋势。虽说没有显著上升,但rdbms三巨头雄踞排行榜top3已然且在不久的将来仍会是事实。
2013-2017数据库top3分值变化图
再把目光延伸至top20,就会惊人地发现,nosql家族正在爆炸式崛起。mongodb,redis,cassandra,hbase和hive年轻气盛,一路飙升,从14年到17年均已实现分值翻倍(图4)。稳坐非关系型数据库第一把交椅的mongodb,从09年的首度推出到现在不过十年,便已跻身top5,其发展潜力让人期待。
数据库产品的起起伏伏,是数据库工程界的一个风向标,但不是数据库界的全部。2017这一年,数据库的理论界也因ai而亮点多多。接下来,让我们睁眼看看世界,然后瞪大眼睛反观一下国内的情景。
2013-2017nosql数据库top5分值变化图
2.地球就那么大,世界的门早已打开
以前,国内数据库技术一直在跟跑国外的数据库技术,学术研究队伍如此,工程实践队伍也如此。可以说,在数据库技术的世界里,我们前30多年一直在学习、一直在探索。而国际的前沿技术引路者,还在不断引领数据库技术的潮流。2017这一年,世界上重大的一些事件如自治数据库的概念推出、aurora相关技术的论文发表、spanner用论文宣告成为了关系型数据库系统等等,都在影响着国内的技术圈子。
2.1 oracle,开启自治数据库时代
2017年的oracle open world大会上,oracle总裁拉里·埃里森公布了新杀器,oracle自治数据库云。这款全球首款“自动驾驶”的数据库,集成了人工智能和自适应的机器学习技术,实现全面的自动化。
自治数据库云的实现,是基于oracle database 18c的。对比目前的oracle数据库,oracle 18c在性能、内存优化、可用性、安全性、数据仓库等方面都作出优化提升,向htap数据库的目标更进一步。
oracle自治数据库云,消除了复杂性、人为错误和人工管理,能够以更低的成本提供更高的可靠性、安全性和运营效率。通过融合机器学习技术,自治数据库云具备这些特点:
自主驱动:完全自动化的打补丁、升级、备份和可用性架构,可执行所有日常数据库维护任务,无需任何人工干预。
消除人为错误:
自动恢复功能可自动检测并应用纠正措施,oracle 自治数据库云将自动实施 oracle real applicationclusters (rac) 和跨区域 oracle active data guard,确保持续的可用性。
oracle sla确保99.995%的可靠性和可用性,把代价高昂的计划内和计划外停机控制在每年30分钟内。
无需手动性能调优:采用自适应机器学习技术,自动激活列式缓存、存储索引、压缩和资源优先排序,根据负载所执行的实际工作分配资源,避免代价高昂的过度供应。
oracle推出oracle 18c和自治数据库云,正指出了数据库领域的发展趋势:数据库htap化,和人工智能结合,机器学习代替人工完成繁琐的数据库操作。放眼看去,如卡内基·梅隆的ottertune,一些开源项目顺应潮流,向智能化、自动化数据库靠近。
另外,这一年,oracle发布12c r2版本,也就是12.2.0.1,多方面得到提升,包括:
可用性方面:数据保护、逻辑复制、在线操作、分片等的表现得到提升,同时简化了升级操作。
大数据和数据仓库:完善大数据管理系统结构、提供数据库内的多维度分析、加强查询处理和优化等。
性能方面:优化共享队列,全局共享oracle云连接池,增强java虚拟机上oracle数据库的性能,完善内存数据库,简单支持非结构化数据存取等。
压缩、管理、公有云、安全性、空间和图等特性得到增强。
在数据库的世界里,oracle依旧是独占鳌头。
2.2 aws aurora,启动计算与存储分离的热潮
2017年,amazon在sigmod上发表了论文《amazon aurora: design considerations for high throughput cloud native relational databases》。
这篇论文,描述了amazon的云数据库aurora的架构。基于mysql的aurora对于单点写多点读的主从架构做了进一步的发展,使得事务和存储引擎分离,为数据库架构的发展提供了具有实战意义的已实践用例。其主要特点如下:
实践了“日志即数据库”[1]的理念。
事务引擎和存储引擎分离。
数据缓冲区提前预热。
redo日志从事务引擎中剥离,归并到存储引擎中。
储存层可以有6个副本,多个副本之间通过gossip协议可以保障数据的“自愈”能力。
主备服务的备机可达15份,提供强大的读服务能力。
持续可靠的云数据库的服务能力。
数据存储跨多个区:提供了多级别容灾能力。
数据容灾能力:数据冗余、备份、实时恢复等多种能力集成到云服务,提高的数据的保障能力。
万能数据库的概念呼之欲出。
而2017年尾,aws的技术大会上,又爆料称aws支持:multi write、类turetime、serveless等,这些都和最新的趋势紧密相融,前两者对应分布式数据库、后者对应数据库云化。
aurora对国内的计算与存储分离的产品研发影响深远,阿里的polardb、华为的fusioninsight系列等都在向aurora对齐。相传,腾讯、京东等都跃跃欲试准备做类aurora的产品。可见aurora对国内的影响深远。
2.3 spanner,引领分布式数据库潮流
2012年的《spanner: google’s globally-distributed database》论文描述了基于kv系统[2]实现的一个半数据库式的“分布式系统”[3],这个系统具备了大规模的扩展性,具有如下几个方面的特色:可扩展性(scalability)、自动分片(automatic sharding)、容错性(fault tolerance)、一致性复制(consistent replication),外部一致性(external consistency),和数据广域分布(wide-area distribution)。这些特色是通过提供了多行事务(multirow transactions)、外部一致性(external consistency)、跨数据中心的透明故障转移(transparent failover across datacenters)等功能实现的。spanner开创了nosql分布式数据库的新时代,主要解决了如下问题:
1. 数据分布。
2. 多副本高可用:failover。
3. 分布式事务处理:外部一致。
4. 计算分布(通过f1支持sql,松耦合结构)。
5. kv存储模型。
2017年,google发表了一篇题为《spanner: becoming a sql system》的论文。这篇论文描述了查询执行的切分(query execution in the presence of resharding)、瞬态故障情况下查询重新执行(query restarts upon transient failures)、驱动查询做路由和索引查找的范围查询(range extraction that drives query routing and index seeks)、以及改进的基于块的列存(the improved blockwisecolumnar storage format)等分布式查询优化技术。
较之2012年的spanner,本篇论文提到新增功能为:强类型的模式管理系统 (a strongly-typed schema system)、查询处理器(a sql query processor)和关系模型存储及列存系统,并论述了2012年以来,spanner系统向关系型数据库演进的历程,新论文愉快地表示spanner从一个nosql系统已经全面演进为了一个关系型分布式数据库系统。
这篇论文表明如下几点事实:
有分布式基因的nosql是可以进化为newsql的,进化的途径可参考spanner的发展历程,而spanner也给出了进化方式的建议(有了分布式处理能力后及早向关系型演进)。
这种进化具有“快乐”的“进步”意义。快乐如论文标题宣称“成为了”一个sql系统,口气十分地自豪;进步如论文标题宣称spanner已经是一个“sql”系统了,即具备了关系存储和关系运算的能力。
newsql的一个特征是支持混合数据类型存储,如spanner支持nosql也支持关系存储模型。而支持关系模型将是newsql系统的一个重要特征。
spanner的另外一个特征是由松耦合的系统进化到一个高效的紧耦合系统,这样的系统能够处理各种类型的大数据。与此不同的是目前的大数据处理组件因松耦合而导致三难(选型难、使用难、维护难)。这表明大数据处理的技术架构可能从松耦合向紧耦合演进。
从spanner的演化,我们可以感知关系型数据库的春天重返故里,而分布式关系型数据库已经踏着数据库前进的节拍走到了我们眼前。现在,已经不是潮流来临,而是在席卷2017年的我们,并继续横扫2018。以此来观察数据库界,这一年,oceanbase、tdsql、tidb、cockroachdb等等主流分布式数据库即newsql系统正如火如荼地发展着,技术层面不断向spanner靠拢。
2.4 nosql、图数据库、流数据库等场景化明显
随着互联网web2.0网站的兴起,传统的关系数据库在应付超大规模和高并发的sns类型的纯动态网站时已经显得力不从心,而nosql数据库由于其本身的特点得到了非常迅速的发展。
nosql家族主要分为键值(key-value)存储数据库、列存储数据库、文档型数据库和图数据库四大类,其产生就是为了解决大规模数据集合多重数据种类带来的挑战,故场景化也格外明显。
键值存储数据库适用于内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。
列存储数据库适用于分布式的文件系统;文档型数据库适用于web应用(与key-value类似,value是结构化的,不同的是数据库能够了解value的内容)。
图数据库适用于社交网络,推荐系统等,专注于构建关系图谱,如果与ai结合起来,我们可以设想一下他们美好的未来。
nosql数据库并没有一个统一的架构,而是各有所长,一个成功的nosql必然特别适用于某些场合或者某些应用。
还有意思的是,kafka今年终于正式迎来了1.0.0版本,不仅标识着各组件功能的稳定性,还引入了一些新的功能:kafka streams api的优化(增加了一些全新的操作算子如cogroup等);jmx监控指标的完善(引入很多集群健康度检查指标,对kafka connect监控体系做了较大程度的补足);优化sasl认证错误的处理;强化对jbod磁盘崩溃的处理;幂等producer的优化。此外,kafka新引入了ksql引擎,使得其更像一个流数据库而存在。
2017年,从关系型数据库之外的其他数据库,我们看到,数据库正在朝场景化方向发展,不同类型的数据库适用于不同的场景,数据库产品只有做好自己的场景定位,才能谋取到更大的发展。
2.5 一些老牌数据库,在变革中渐渐老去
2017年5月,微软还发布了首款全球分布式多模型数据库azure cosmos db,这是一款全球可用的json数据库平台。可以看到,关系数据库厂商抢占nosql市场的鏖战也将日趋激烈,几年前,postgresql和mysql已经支持了json类型数据,另外还有老牌的infomix也是如此。
2017年10月,微软发布了sql server2017 ctp2.1正式版。这是sql server 历史上首次同时发布windows和linux版,并支持docker部署。从数据库排行榜看,微软占据第三位,遥遥领先第四位postgresql。sql server似乎风光依旧。
但是,在国内,sql server已经很难打开高端市场的局面了(几乎就是oracle和mysql的天下)。其实在国内,得益于在教育领域的耕耘和出色的产品易用性,sql server 有着比较好的群众基础和亲和形象。但一直以来,sql server都给大部分人群留下“适用于中小企业”的陈旧印象,再加上缺乏本地技术社区的建设,sql server已经渐渐淡出“高端玩家”的视野。若想要反转局面,那么进一步塑造品牌、打造标杆案例、不断提升产品和建设本地技术社区是sql server浴火重生的必经之路。
无独有偶,起源于上世纪80年代的informix,一个全球市场占有率曾经超过10%的元老级数据库,如今也面临着窘境。一个曾经是世界上最好的关系型数据库,却因为企业自身的经营问题,掩盖了技术上的�...