作者 | 那海蓝蓝,腾讯金融云数据库技术专家
作者 | 小编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.com/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 Application Clusters (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%的元老级数据库,如今也面临着窘境。一个曾经是世界上最好的关系型数据库,却因为企业自身的经营问题,掩盖了技术上的成功。2001年,Informix被IBM公司接管,虽然一直保持更新,但是销售始终不尽人意。终于在2017年5月1日,印度的HCL公司宣布正式接管Informix研发和支持团队,这将重写Informix与国内三家公司的关系。在此之前,IBM公司将Informix授权给了南大通用、华胜信泰和福建星瑞格这三家中国数据库厂商以期合作。现在变数未定。Informix或许再也不能恢复当年的辉煌,但我们有理由相信,一定能够在众多国内知名数据库里看到Informix的影子,看到它的技术精华被传承下去。
其实在IBM公司接管Informix期间,就融合了Informix的技术成就了DB2数据库。到了2017年6月22日,DB2已经 发布了V11.1 Mod Pack 2 and Fix Pack2版本,增强了crash recovery和SQL直接对JSON格式的数据进行操作的能力,包含了更多函数的支持。在DB-engines上,DB2也有着排名第六的不错的成绩。相较Informix,DB2显然更受IBM公司的青睐,但这仍掩盖不了DB2在中国销售不佳的事实(主要集中于金融行业)。DB2因其入门慢、市场推广差,往往不是用户的第一、甚至第二选择。
2017年9月,SAP发布了HANA 2.0 SPS 02最新版本,为支持使用最新内存技术运行业务,主要新增了以下四大功能:一是数据库功能的增强,包括高可用性和灾难恢复等。二是提供了高级分析处理能力,如使用SAP HANA预测分析库(PAL),以简化调用算法的方式加速预测性应用程序开发,并能够使用SAP Web HANA for SAP HANA开发预测性和机器学习模型等。三是应用程序开发和工具增强。四是数据管理功能增强等。但HANA在国内的表现,尚在普通之列。
2.6 一些开源的数据库,前途光明灿烂
开源,是一种成功的商业模式。在开源社区的支持下,众多开源数据库如百花齐放,前途一片光明灿烂,比较知名的如MySQL,PostgreSQL,MongoDB,HBase,Cassandra和MariaDB等等。
让我们来看看2017年,开源数据库都有哪些精彩的表现。
MySQL
10月发布最新的稳定版本5.7.20,修复很多bug,针对审计、Docker、安全、插件、复制、参数配置和管理等方面做了更新和调整。
日志审计功能增强;安全功能增强;X plugin更新;复制功能增强和更新。
修复Docker中MySQL镜像丢失的bug。
弃用、去除了一些配置参数,比如tx_isolation和tx_read_only将被弃用。
9月发布最新MySQL 8.0.3 RC版本,此版本在账户管理、原子DDL、性能优化、安全等方面做出优化,并且修复了大量bug。
支持角色管理,角色是一系列权限的集合,可以给某个用户授予和回收角色,使用角色可以更方便进行权限管理。
InnoDB存储引擎支持原子DDL操作,包括表相关DDL和非表相关DDL。
采用新的数据字典,所有元数据都用InnoDB引擎存储,以解决DDL的原子性问题。
修复历史悠久的bug,8.0版本不再重置auto_increment值。
MariaDB
11月发布最新版本10.2.11,此版本在优化、系统变量、主备复制、存储引擎等方面做出补充和改进。
现在InnoDB作为默认存储引擎,添加MyRocks存储引擎的alpha版本。
引入窗口函数。
更新InnoDB到5.7.18版本。
更新TokuDB到5.6.7-82.2。
PostgreSQL
11月发布新版本10.1,PostgreSQL 10的重磅特性有并行计算、逻辑订阅、FDW pushdown和sharding等。
支持陈述性表分区。
支持预写日志支持哈希索引。
主备复制,支持逻辑复制,同步复制的仲裁提交。
性能提升,支持并行位图堆扫描、B-树索引扫描、合并连接。
TiDB
10月发布GA版本(TiDB1.0),该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能等方面做了大量的工作:
SQL查询优化器(调整代价模型,Analyze下推,函数签名下推)。
优化内部数据格式,减小中间结果大小。
提升MySQL兼容性。
支持 NO_SQL_CACHE 语法,控制存储引擎对缓存的使用。
重构 Hash Aggregator 算子,降低内存使用。
支持 Stream Aggregator 算子。
MongoDB
于2017年10月19日在纳斯达克上市,11月发行最新版本3.6,伴随着MongoDB 3.6的发布,MongoDB Team提供了一个方便开发者的指南社区。新版本主 要提供以下几个功能:
Change stream,通过Oplog监听一个集合的DML事件,用来实现pubsub类型的场景。
Retryable writes,当集群出现换主现象时,写入操作会被自动重试从而保证应用端的透明。
Tunable consistency,MongoDB提供可调的一致性(一致或最终一致),并在query中定义。
Greater query and update expressivity,支持操作嵌套数组;提供新的聚合操作符,以及在查询语法中使用聚合表达式。
Apache Cassandra
最新版3.11.1,发布于2017年10月,此版本在完善功能,提高性能等方面做出大量工作,并且修复众多bug:
sstableloader忽略“ignore”选项。
实现分区边界的short read protection。
提升TRUNCATE性能、提升short read protection性能。
修复对SuperColumn表的支持。
总体上来看,在DB-Engines 排名top5中,开源数据库就占了三席,分别为MySQL,PostgreSQL和MongoDB。这些开源的数据库,究其成功的根本原因,是在放弃部分著作权的前提下,赢得了三大好处:培养开源社区,获得更大的用户群体;降低该产品和相关产品的技术支持成本;通过开源社区得到更多的衍生作品,提供更好的生态环境。
我们相信,在2018乃至更长远的未来,开源数据库会越走越好。
2.7 CockroachDB,开源NewSQL
CockroachDB是一个分布式类Spanner架构的数据库,通过基于时间戳的MVCC技术,完整地支持了ACID语义。在隔离级别层面,支持SSI和SI,且SSI作为默认级别。
对于SSI,CockroachDB受“write-snapshot isolation[4]”技术影响较大,着力于解决读-写冲突,以实现SSI。
CockroachDB支持外部一致性,支持有限的线性一致性。
2017年10月CockroachDB发布1.1版本,引入了快速并发导入数据的功能,主要做了三方面的工作:
1. 从遗留数据库进行无缝迁移 。
2. 简化集群管理。
3. 为云环境提高性能。
在《What’s Really New with NewSQL?》这篇论文里,如图5,NewSQL被分为了三种类型,CockroachDB、Spanner、TiDB归属第一类NewSQL。
TDSQL、DRDS等这样的产品归属第二类NewSQL,但是从2017年TDSQL的发展来看,TDSQL从架构上更加靠近第一类NewSQL。
而Aurora这样的产品,被划分为第三类NewSQL系统。但Aurora公布了multi write之后,其架构是否也会向第一类NewSQL靠近呢?
未来的世界,我们相信,NewSQL会继续引领数据库的潮流,每种类型的NewSQL会相互借鉴、不断融合、协同发展。
NewSQL类型图
3.中国数据库起源与发展
3.1 NDBC大会,中国数据库四十年
2017年金秋十月,第34届中国数据库学术会议(NDBC 2017)在西子湖畔成功召开,大会聚集了全国数据处理技术领域的前辈、专家、学者、师生。
今年,恰逢中国数据库学术会议四十华诞,NDBC2017回顾了中国数据库的四十年历程。这一届的NDBC,可谓中国数据库界2017年的最大事。
在四十年前,即1977年,中国数据库的开山鼻祖,萨师煊老师倡导召开了全国数据库技术研讨大会,中国数据库萌芽,数据库技术的研究和推广就此展开。
从当初老一辈专家萨师煊、王能斌、罗晓沛、施伯乐等播下数据库技术的火种,到杨冬青、马应章、王珊、尹良滨、冯玉才、李建中、何守才、何新贵、张大洋、张少润、张作民、郑怀远、郑振楣、周立柱、周龙骧、徐秋元、徐洁磐、唐世渭、唐常杰、姚卿达、童頫、董继润、瞿兆荣、岳丽华等专家教授奋发图强,再到新一代杜小勇、崔斌、高宏、李占怀、彭智勇、王国仁、周立柱、王建民、陈红、于戈等教授(还有很多专家教授没能一一列出,他们都是中国数据库的脊梁),中国数据库开始发展兴旺。
相较世界数据库技术,中国数据库技术从起步、跟踪、追赶,到并跑,凝结了数代老一辈专家的心血。
四十来,老一辈专家们培养了一批批的中国数据库人,他们或投身工业实践,或专心学术研究,或出国汲取经验,或开创国内数据库产品。这些人,正是中国数据库技术的脊梁,在众多数据库人的努力下,中国的数据库实现了:
科研国际化:论文发表直逼美国(如图5)、举办国际学术杂志/会议(如CODAS、WAIM、APWEB、DASFAA、PAKDD、WISE、CIKM 、E-R、VLDB等)、国际学术界获奖等。
教学精品化:各种数据库教材层出不穷,引领了国内数据库技术的发展。例如,现在分布式数据库技术非常火热,而NDBC的老专家们1998年就开始研究并出版了一系列的分布式数据库技术书籍,如图所示。
成果产业化:科研成果转化为实际的产品服务于中国的市场,并为中国数据库界培养了一代又一代的数据库工程实践人才。如国内最早做数据研发的人大金仓、武汉达梦、神舟通用、南大通用等公司,其背后的技术源泉都是来自高校的数据库研究团队。
现在,活跃在中国的科研、教学一线的数据库、大数据专家们,如数据库领域的杰青包括哈尔滨工业大学的李建中教授、华东师范大学的周傲英教授、东北大学的王国仁教授、清华大学的王建民教授,都成绩斐然;入选国家千人计划的数据库人才如周晓方、樊文飞、张彦春、林学民、文继荣、王晓阳、申恒涛、武新,都领军一方;成为长江学者特聘教授与长江学者讲座教授如冯玲、周傲英、王国仁、崔斌、樊文飞、黄铭钧、熊辉,都成绩卓著。这些杰出的专家教授们,同时又培养出一代又一代的数据库人才。
现在,活跃在华为、腾讯、阿里、京东等公司的数据库核心研发人员,有很多专家、技术骨干,都是出自人大金仓、武汉达梦、神舟通用、南大通用等公司,从他们身上,我们可以看到NDBC四十年前点燃的星火、四十年里培养浇灌的树苗,现在已经成才,成为国内数据库研发的骨干栋梁。
NDBC,四十年里,一直在深深地影响着中国的数据库界。NDBC用团结、执着、和谐、潇洒的优良学术文化,熏陶出了一批又一批的具有国际视野、脚踏实地的人才队伍。
中国在数据库三大顶级会议发文章数量图
分布式数据库等书籍封面图
3.2 春天里的数据库
数据库行业,又迎来了一个春天。春天里,百花开,众多的数据库产品、研发团队、数据服务团队在2017充满生机,各自芬芳。
3.2.1 百花齐放的数据库技术大会
越来越多的技术人,或专心数据库学术研究,或投身于数据库产品开发,各数据库技术大会在这样的背景下产生,为喜爱和从事数据库研究的技术人提供了交流、提高的平台。
国内规模较大的数据库学术会议有中国数据库技术学会(NDBC)和中国大数据技术大会(BDTC):
中国数据库技术学会(NDBC):自1977年至今,拥有四十年历史。始终秉承为大陆、港、澳、台和海外华裔数据库研究者、开发者和用户提供大中华数据库论坛,交流成果经验,探讨挑战问题和研究方向的宗旨。近年来,更吸引了海外数据库研究者、开发者投稿和参会。
中国大数据技术大会(BDTC),前身是Hadoop中国云计算会议,由中国计算机学会主办,大会内容涵盖数据库、大数据云服务、机器学习和深度学习、知识图谱、区块链等方方面面,是国内最具影响力、规模最大的大数据领域技术盛会。
国际的学术会议在国内召开:
DASFAA 2017(The 22nd International Conference on Database Systems for Advanced Applications),2017年3月在中国苏州召开。
The Asia Pacific Web (APWeb) 和 Web-Age Information Management (WAIM) Joint Conference:2017年6月在北京召开。
工业界规模较大的数据库技术大会,有中国数据库技术大会(DTCC),Oracle数据技术大会,中国MySQL用户组年会(ACMUG)和MySQL技术嘉年华(IMG),PostgreSQL中国用户大会(PCC)等:
中国数据库技术大会(DTCC):2017年DTCC吸引5000多名IT人士参会,是国内影响力最大的数据库技术大会,主题涵盖Oracle、MySQL、NoSQL、云端数据库、智能数据平台、区块链、数据可视化、深度学习等领域的前瞻性话题与技术。为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供最具价值的交流平台。
Oracle数据技术大会:2017年11月在北京召开,吸引了千人以上参会交流。拥有高质量、高新尖、高专业的特点,邀请业内顶尖的技术专家、企业客户、分享数据领域内的最新技术进展和实践。
中国MySQL用户组(ACMUG)年会、MySQL技术嘉年华(IMG):中国MySQL技术领域两朵花,在2017年12月的同一天,各自在北京和上海绽放。前者国际化意味浓厚,后者追求分享的质量。
PostgreSQL中国用户大会(PCC):是一场汇聚各界PostgreSQL大拿交流最新技术动态和应用案例的盛宴,推动了PostgreSQL在中国的发展,也起到了联系PG中国社区和国外社区的作用。
这一年,我们还看到,其他的社区活动也精彩不断,CockroachDB社区成立,Redis、HBase等社区活动开展,这些活动为中国工程界的数据库技术增添了亮色。
3.2.2 百舸争流的数据库产品
一 .传统的数据库产品
人大金仓(Kingbase):2017年8月,KingBaseES通用型数据库产品,成功入驻阿里云市场,具备适应当下云计算环境的数据库特征。
达梦数据库(DM):2017年,DM与多省展开合作,为四川地质环境信息建设、广西电子政务等提供数据库服务
南大通用(GBASE):2017年3月,旗下的通用型数据库登录青云App Center2.0平台,提供云化数据库服务。
二. 分布式数据库
国内分布式数据库的代表有腾讯分布式数据库TDSQL、阿里云(DRDS)、OceanBase、TiDB等,这些产品代表了国内分布式数据库的水平:
腾讯分布式数据库TDSQL:
一款企业级面向金融类业务的数据库产品。
支撑了腾讯自己的计费业务。
输出到诸如微众银行等企业,稳定运行了三年之久。
2017年发布了分布式事务、分布式JOIN、多种数据分区、多级数据分区、热点更新等特性。
阿里数据库产品家族:
云栖大会前夕,推出新一代高性能数据库PolarDB、X-Cluster等,均采用分布式存储引擎设计。
OceanBase,2017年发布1.4.51版本,提供了副本只读、前后端协议checksum机制、同义词功能和回收站等功能。
TiDB:
与腾讯云和Ucloud先后达成合作。
发布GA版(TiDB 1.0),对MySQL兼容性、SQL优化器、系统稳定性、性能等做了大量工作。
硅谷Office落地,此举标志着PingCAP进一步在全球布局云计算产业。
SequoiaDB:
SequoiaDB 发布v2.8.3企业版。
3.2.3 百马奔腾的数据库研发团队
从萨师煊老师起步,中国数据库已经有了四十年的历史。
现如今,国内的数据库研发队伍已经颇具规模。
从拥有200余人规模的阿里数据库技术团队(阿里云、蚂蚁金服和阿里集团数据库事业部),到人数300+的“中国最神秘研究基地”——华为2012高斯实验室,以及腾讯的TEG金融云、腾讯云,百度的搜索架构团队,京东的京东云等,国内数据库研发无不展现出一派生机勃勃的景象。
这些研发队伍,不仅积极为开源社区添砖加瓦,也大力投入自主研发。
在此,让我们罗列一下已知的数据库引擎研发团队(尚不完整…),与他们一起见证国产数据库研发的繁荣,也让我们思考一下繁荣的背后,为什么我们还没有世界级产品?
大型通用数据库系列:人大金仓、达梦、神州通用、南大通用
腾讯系:TDSQL、TXSQL、Tbase、PhxSQL
阿里系三个团队:阿里巴巴集团数据库事业部、阿里云、Oceanbase
其他互联网:京东云、百度、小米
华为系三个团队:2012高斯、2012分布式实验室、华为云(IT企业产品线)
DB2中国研发团队(曾经的存在)、EsgynDB中国团队、国家电网、中国移动苏州研究院、中国电信广州团队(尚存在否?)
NewSQL系列:PingCAP、巨杉
PostgreSQL系:亚信南京AntDB、中兴GoldenDB 、Greenplum中国团队、飞象
MySQL系列:爱可生、上海热璞、万里开源、MySQL中国区研发成员、OneSQL
分析型系列/大数据系列:柏睿数据RapidsDB、酷克数据、偶数科技、Kylin创业团队Kyligence、星环科技
Informix系列:华胜信泰、福建星瑞格、南大通用(重复)
其他:Haisql、Highgo db、许继集团SG-RDB、Cedar、上容、天曦TXDB、HHDB、博阳数据管理系统、东方国信、优炫云数据库、新华三、鼎天盛华、Open base、Huayisoft、HUABASE等
3.3 双11,源自中国的需求大于技术突破的意义
每年电商双11大促,中国单一群体的巨量行为(同一文化氛围下的同一种行为相较世界其他民族,有着不可预估的量,是不可预估的群体行为),对阿里、京东等电商的数据库团队都是一次巨大考验。
经过9年的发展,双十一场景对数据库的稳定性、性能提出非常高的要求,尤其是零点高峰,无论国内国外,都是难得一见的。
面对交易洪流,阿里集团的数据库扛住一波波洪峰,阿里的OceanBase扛住了交易洪峰,整个阿里交易创建峰值32.5万笔/秒,支付成功峰值25.6万笔/秒,数据库处理峰值4200万次/秒。而京东的交易,也是一路攀升。这些成绩、支撑业务发展的幕后英雄之一是数据库技术。
双11的成绩,宣告的不仅是商业的胜利,也不仅是数据库技术获得“巨大”突破的胜利(技术的进步有待探讨),而是中国式需求对数据库技术提出的场景考验,这种场景的考验将持续不断地对数据库技术发出新的考题,促使在中国做数据库研发的技术人员“被迫”进步,数据库技术“被迫”创新。互联网场景将引发多行业的创新场景,也许正是国产数据库单点突破所在。
3.4 TiDB,国内开源界的一抹亮色
这一年,成立近3年的TiDB,亮点颇多(2017年10月份发布了GA V1.0版本、还提供了TiSpark查询方案),已然成为国内鲜有的数据库原创开源代表,甚至在国际上赢得颇多赞许(GitHub stars 11000+, contributors 155+,媲美CockroachDB)。
TiDB是 PingCAP 公司自主开发的开源分布式数据库产品,模型参考了 Google 的分布式数据库论文(Spanner / F1),解决了关系型数据库水平扩展的难题,具备水平弹性伸缩,强一致的分布式事务,基于 Raft 算法的多副本复制等特性。作为一个典型的 SQL Above NoSQL 的架构,TiDB底层是一个支持跨行事务和强一致性的分布式 KV 存储引擎,上层是支持SQL 语法和查询的分布式执行引擎,这种存储和计算分层的架构具有更好的灵活性,可以根据不同的业务负载做弹性的水平伸缩。
从使用者角度来看,TiDB 高度兼容 MySQL 协议,在大多数情况下,应用层不需要修改一行代码,就可以获得支持高并发的扩展能力,同时支持智能的数据调度和故障自恢复功能,用户迁移和维护成本都会非常低。
未来,TiDB 会在数据库云的多租户和资源隔离、高效实时的查询分析引擎、新硬件下的新技术架构优化、完善智能的调度系统、HTAP等方面发力,为用户带来更多的价值。
因为有了OceanBase、TDSQL等,有了TiDB,国内数据库界有了“创新”的味道,而TiDB开源可能会使更多的人多方面受益,相较于一些产品从开源到闭源,这一点更有意义。
3.5 立言,原创有深度
一个领域内的图书出版量和销售量,往往能反映该领域的发展态势。
一个领域内的出版的图书的质量,往往能反映该领域的深入程度。
让我们先来看看近几年国内几家出版社的数据库类图书出版量(如下图8),可以发现,数据库类图书虽然在总出版量中占比不大,但还是有逐年上升的趋势,这其中大数据与数据分析类图书占据了相当大一部分,而数据库理论类图书则较低迷。
2013-2017数据库类图书出版量统计图
再来看看数据库类图书的销售情况。线上销售以亚马逊销售排行榜为例,截至2017年12月,在数据库类实时销售排行榜中,top3分别为《大数据时代:生活、工作与思维的大变革》、《SQL必知必会(第四版)》和《深入浅出数据分析》,而数据库理论类图书中仅《数据库索引设计与优化》与《数据库系统概念》两本跻身top10。这一现象在线下销售中得到了更充分的体现。以新华书店为例,在2017年11月份数据库技术类畅销榜中,大数据与数据分析类图书抢占了top10全部席位,即便是top20中也难得一见理论类图书的影子。
这难道是数据库领域已经不需要理论知识扎实的人才了么?其实不然。在数据库行业中,刚入门的新手渴求的是一本涵盖全面的工具书,对理论类图书大都是望而却步;而已经摸爬滚打十几年的老手们,凭借丰富的经验和阅历,足以满足企业研发所需,自然就不需要这方面的书了,所以数据库理论类的书籍较少。
入门菜鸟希望得到老鸟的经验,国内的图书基本满足了入门的需要。
经验丰富的老鸟希望深入原理、深入代码让自己百尺竿头更进一步,可是这方面的书籍太少。
国内数据库原创书籍,深入到原理和源码层面的,经典的有《MySQL技术内幕:InnoDB存储引擎》、《PostgreSQL数据库内核分析》、《数据库查询优化器的艺术》这几本书,极高的质量和极佳的口碑为中国数据库界增色不少。
而2017年出版的数据库图书中,《MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实》销量较好,《数据库事务处理的艺术:事务管理与并发控制》一书则直接深入到数据库最核心的技术——事务处理层面讨论了并发访问控制等核心技术,这种有深度的书籍折射出国内数据库研发的水准在向最核心部分攀登前进。
站在2017年尾,数据库界更加期盼,未来有更多高质量有深度的数据库原创书籍,来推高国内数据库研发、运维的水准。因为我们看到,国内数据库研发的团队在日渐兴旺。
4.数据库发展小故事
本篇是发生在2017年的小故事,故事的选取,有一定的随机性,未必能代表数据库界的整体情况。放在这里,我们希望能通过研发、运维这么几朵小小的浪花,折射几点太阳的光辉。
4.1 盖老师深度思考的浪花
Oracle 18c,是一个时代的终结。这是盖国强老师在2017年的的感悟。
2017年10月1日,盖国强老师在旧金山OOW大会现场,感受了Larry Ellison发布Oracle Database 18c产品的盛况,18c被称为数据库领域的第一个自治产品,能够实现自我驱动、自我安全和自我修复,事实上就是最大程度的减少了人工的参与。
业界在感叹技术进步的同时,也存在一股淡淡的忧虑和哀伤,因为一个重要的岗位 - DBA可能不再重要,或者不再被需要。
而事实上,盖老师认为更重要的变化是18c这个版本,从12c到18c,Oracle公司改变了数据库的命名策略,以后每年都将发布一个以年为单位的版本,例如19c,20c,这,意味着一个时代的终结。
传统的商业软件迭代,通常以数年为单位,研发一个目标明确、更新众多的发布版本,而这种方式在快速变化的互联网时代,已经过时,用户习惯了快速看到新的变化、快速感受、快速试错,从产品研发到产品发布,一切都在加速,显然Oracle的这一变化就是在适应时代,期望以快速的迭代降低让用户长时间等待的风险。其实无独有偶,微软也已经宣布Windows 10将是最后一个版本,同样改变了重量级大版本的发布模式,变革为小版本快速革新。传统大规模商业软件的运作方式正在改变,Oracle和微软都在通过云平台去重构两家公司的产品输出形态,当一切都可以通过服务的形态输出之后,商业和开源的界限事实上就已经不存在了。
基于此,盖老师在思考:在企业级数据库领域,下一个时代是什么?
盖老师认为下一个时代是自动化、智能化的时代,从靠人去解决问题,过渡到靠产品、靠架构去解决问题,让数据库回归存储的本质,新的时代已经开启。
这是一朵深度思考的浪花,浪花背后是对产业前进之路的探索。
4.2 向MySQL提交bug的小浪花
2017年9月,鹅厂实习生晓宇同学向MySQL官方提交了BugID为87637的一个有关缓冲区刷脏页时消耗CPU资源严重的性能bug,并给出一个解决了涵盖多种场景下消耗CPU的patch。
Bug hunter并未重视这个有场景描述有代码分析有测试数据的bug,反而修改bug状态为“not a bug”,晓宇同学在bug被标识为“not a bug”后,有理有据地指出bug的成因、patch的原理等,然后有礼貌地再次打开bug,请MySQL官方重视。这样的过程,反反复复,反反复复,竟然反复了五次。直到一个月之后,持久的争执引起InnoDB研发老大Sunny Bains的关注,Sunny Bains认同了晓宇同学的patch,这场拉锯战才宣告结束。
现在,这朵小浪花已经随潮而去,但是这么一朵小小浪花,却能折射出较大的意义:
国内研发人员的素养和MySQL官方的傲慢形成了对比。
当世界并没有足够重视国内数据库技术研发的力量时,我们可以用实力说明事实。
现如今,我们还需要积极参与开源社区,提交Bug与patch,甚至提交有影响力的模块/WorkLog,这样才能逐步扭转“国内数据库尚未被国际认可,尚不达先进水平,发展尚任重道远”这样的现状。
在采访这个小故事结束时,晓宇所在团队TDSQL研发负责人说:TDSQL源自MySQL,我们鼓励TDSQL的组员为社区多做贡献。晓宇的这个故事,是我们团队的一个小事,相信更是中国数据库界的一个小事,但是勿以善小而不为,积善助善为这个世界多做一点好事是有意义的。
这,应该是一种情怀吧。
4.3 规范运维的小浪花
数据库运维中会制定各种流程和规范,很多运维同学不以为意,觉得太繁琐,殊不知这些都是在大量的失败经验中总结而来,是运维保障的基石。
让我们用发生在建荣同学身边的一个故事,一起感受DBA的生活。
公司每隔一段时间会发布一些活动,来提高人气和热度。
而发布一个活动的常规流程是这样的:
开发同学提交了一个DB变更,会打包发布到了ftp中。
DBA会从ftp得到指定的数据压缩包,解压把数据导入数据库。
测试同学会验证测试,验证后上线活动。
业务运营的同学会跟进活动,做活动反馈。
结果有一次却发生了一个诡异的问题。
活动已经接近尾声,运营的同学才发现数据比以往差了很多,然后测试的同学排查发现导入的数据比预期的少,然后追查到DBA这边,DBA发现数据导入是成功的,然后继续追根溯源,发现开发同学提供的数据更新包和DBA导入的包大小不一致。
经过一番排查和验证,发现原因就在于开发同学上传到ftp中的文件因为网络的原因,提示上传成功了,但是文件是不完整的,DBA解压的时候就少了很多数据,后续测试,运营跟进活动都会受到影响。
我们做故障复盘的时候,发现虽然整个流程是完整的,但是很多环节还是没有形成闭环。
怎么改进呢?
第一就是使用md5的校验码,能够做到文件校验。
第二就是通过平台化管理来杜绝人为问题。
第三就是业务的及时跟进。
所以说很多问题都不是纯粹的技术问题,要靠一套完整的制度和流程来规范和完善,规范本身虽不能够解决问题,但是能够减少出问题的概率。
5.跨年之夜,我们一起进步
随着云计算产业的发展,数据库云化趋势已经形成,而云化对大规模的数据库群、数据库集群等的运维提出挑战,于是数据库智能运维因需而生,而Oracle在AI火热的环境下,用自治数据库一举点燃了本年度数据库燃爆点。自治数据库已经不再是自动运维的数据库,而是智能运维的云端数据库。
总结2017,我们看到的不仅仅有技术的创新,也有国内公司在国际化背景下主动出海寻航的思维变革,还有技术沉淀之下的有深度的技术书籍的出版,更有引领中国数据库技术发展的四十华诞的NDBC,这些,都在提高着国内数据库技术的质量,增强了中国数据库技术在世界的影响力,使之上升、使之前进。
但是,国内数据库的发展,依旧有很多不足,正视不足,中国数据库将轻装前行,且快且稳、不断创新。
5.1 2017,前行中有很多不足
2017这一年,数据库界热闹的背后,不足更甚。浮光掠影,采摘一小点儿,权作纪念,莫负了这春光里美景。
5.1.1 浮夸之风日盛
跟跑作为事实,使得很多人渴望突破,这本是好事。
而国内的一些媒体和自媒体在产品或成果的宣介上,往往用词宏大,举轻若重,笑话不断。如“事务的核心是锁和并发”、“破解世界性技术难题!
XXX让分布式事务简单高效”等宣讲词,前者对事务的理解不到位,封锁机制是并发控制的技术之一,锁和并发并不能在此语境下处于同等地位;后者则更是夸大其词,夸张的词语之后显露出一颗浮躁的心。
这样的错误或极其夸大的词在公众中传播,危害甚大。技术来不得半点儿虚假,踏踏实实做技术,如实地说明成绩,以求实为本才是技术人员的本质。
在2018,期望:数据库界求实地回归技术,回归技术人员的朴实。
5.1.2 借东风片面式宣传日盛
在这一年,还广为流传过一篇文章《中国数据库四十年历史》,文章借中国数据库发展四十年的时节,借助萨师煊老师的名,宣传了个别公司、个别人。文章以“中国数据库四十年历史”为大背景,涵盖范围却极其有限,用意十分明显且可笑。
如果熟知中国数据库发展历程,可以看到作者一知半解的数据库知识和数据库历史,很好地在其文、其图中暴露。
中国数据库技术的发展,源于高校的老专家们、兴于高校科研力量数代的师徒传承,之后才演化出各种研发、运维的力量。
现在,貌似部分团队做数据库红红火火,但是数据库前辈专家和师徒传承才是根之所在,干之所撑,才有众多团队之花汲养而开;更为本质的,是国内尚没有一个团队真正掌握数据库核心技术、更不用谈有真实的创新之举。
当我们在讲述自己成绩的时候,应该把自己放到历史的环境当中,放到世界的范围内,寻找到自己的位置,客观地加以描述,方能正确地自我评价。
德国前总理勃兰特有一句名言:“谁忘记历史,谁就在灵魂上有病”。如果只能看到自己的一点点成绩,蜡烛之光便会变成太阳,尼采便会再生。
所以,我们需要看到业界的不足,继续倡导求实之风。
5.1.3 自说自话的背后
2017年12月13日,一个值得纪念的事情,是中国有三家数据库产品进入Gartner的数据库行业报告,这是个喜事,于三家入围的公司形象有益。这也是个好事,代表着国产数据库厂商在商业意识上有所“突破”,入围Gartner的行业报告,毕竟入选需要资金的支持。
对国产数据库入围,不管花钱与否,可以肯定的是,主动宣传推荐而不夸大不误导是正解所在。
2017年,国内数据库产品热闹非凡的同时,我们依旧看不到有团队公开自家产品的TPC-C、TPC-H、TPC-D等验证方案以及结果数据。一方面传奇般地宣称自家产品的神奇,另一方面又对一些公认的标准三缄其口、不与国际接轨,这也是一种特色。更有甚者,用Sysbench的部分测试场景而展示特定场景下的特定测试数据,因场景特定而貌似很好的测试数据蒙蔽了大众的眼。
这些行为,实是不该。
我们认为,营造一个诚信、诚实的行业范围,是很必要的。如果我们有实力真正做到了世界前列,相信未来必是:你若盛开蝴蝶自来。
5.1.4 人才的匮乏
国产数据库引擎的研发,貌似数据库研发团队众多,但人才寥寥,所以我们能够感受到跟跑的步伐而不是并跑,能看到产品发布的速度慢而新特性不多,能够看到产品的相似度高是因缺乏创新没有深度人才。
国产数据库研发,没有大师,只有普通或略微好一点的工程师。真正的大师,不是十年、二十年就能修炼而得的。在数据库这个行业中,内外兼修,坐得了冷板凳者,才有望成为大师。
而略微好一点的工程师的定义是:基本能独立承担模块的研发。
搞定个别问题,与掌握数据库内核的核心技术,相距甚远。莫让他人浮躁的言语荼毒坏了听者的耳力。
人才匮乏,这在很长一段时间内,是一个客观存在。
5.2 2018,我们清楚方向在哪里,但需要加速前行
5.2.1 AI对数据库的影响
数据库技术的发展,是一个众多技术集成的过程,数据库把编译原理、操作系统等众多技术“集合”在一起,开创了自己的时代。其特点是不断融合新技术到数据库体系内,让业务开发简化。所以,数据库融合人工智能技术,也将是一个趋势。目前,我们可以看到AI将对数据库技术的发展,产生较大影响,比如:
现有数据库系统的调优,严重依赖DBA的经验。将人工智能应用于数据库调优,可以花费最低的人力,实现数据库最高的效率。
现有的数据库系统,须严格遵循语法才能使用。利用自然语言处理技术,用户可以使用自然语言描述查询,经由Query Interface翻译为SQL语法,大大降低用户的学习难度。
自数据库诞生以来,查询优化始终作为一大研究问题。目前查询优化,只能依靠数据库专家的经验,人工智能技术,能够帮助更广泛地应用查询优化技术。
人工智能的技术,能极大地推动数据挖掘的发展,更充分地利用数据库中存储的信息。
人工智能究竟对数据库有多少益处,不能穷举。但肯定的是,不论是数据库开发还是数据库使用,人工智能都会帮助数据库技术获得长足的进步(除了功能外,架构方面的颠覆可能更甚),且AI技术会不断集成到数据库当中。
5.2.2 硬件对数据库的影响
云平台对于特定的硬件,可以进行定制。由于云数据库发展迅速,因此可以忽略一部分硬件对数据库的影响。但是,这不代表着硬件将不再会对数据库产生影响。
相反,硬件技术的发展,对数据库带来的影响,依旧可能是革命性的。如图8所示,我们借用鹅厂内部的一次分享的页面,用NVM等对数据库产生的影响简述如下,一切尽在图之外……
关系数据库的未来展望-硬件技术图
6.未来是什么?卸载包袱,实践现在
写到这里的时候,也该收尾了,一篇冗长而又缺乏喜感还敢说诸多不足的杂文,在一个偌大的背景下以区区万字就想回顾2017实在是螳臂当车之举。就让这些挂一漏万且还惹人烦的言语随着2017远去吧。
轻轻的,你挥一挥衣袖,作别2017的浮云。
默默的,你站在2018起头的日子,重重地撸起袖子,低下头去,在实践中求实,口里念叨着我尚不明白的一些词语:YugaByte、BigChainDB、Learned Index……
[1] 参考《High performance transactions in deuteronomy》
[2] 《Bigtable: A Distributed Storage System for Structured Data》
[3] 《Spanner: Becoming a SQL System》:Spanner is built on ideas from both the systems and database communities.
[4] 详情参见《数据库事务处理的艺术:事务管理与并发控制》6.3.4节
转载声明:转自 《程序员》 杂志 2018年 第一期,本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅《程序员》。
相关阅读:
此文已由作者授权云+社区发布,转载请注明文章出处