由腾讯技术工程官方号发布在云 + 社区
在数据库领域, 回顾 2017 这一年, 精彩纷呈, 热点不断, 而且不乏标志性的事件发生
如 Oracle 提出的自治数据库这样的概念, 把数据库技术带入一个新世界其实 AI 技术应用于数据库由来已久, 如 AI 技术调优数据库的性能 AI 技术优化 SQLAI 技术自动创建数据库索引 (Learned Index) 等但是能把 AI 和数据库结合使之进入大众视野的, 还非自治数据库莫属
再如 NDBC(中国计算机学会数据库学术年会)庆祝四十华诞阿里入股 MariaDB 国内类 Aurora 架构的产品争相发布数据库事务处理等核心技术的原创书籍出版社区活动遍地开花等等, 无一不在彰示着国内数据库界的精彩和繁荣
CCF 数据库专委会主任杜小勇教授说: 客观来说, 如今的中国数据库已经处于与世界并跑的位置了!
现在, 让我们一起并跑, 沿途中, 我们将从学术界工程界的角度, 从国外到国内, 从数据库内核技术到数据库运维等多种角度, 一起来回顾精彩的 2017
1. 百看不厌的数据库排行榜
截至 2017 年 12 月, 在 DB-Engines(https://db-engines.com/en/ranking)上排名的数据库引擎已多达 361 种
从图 1 可见(对比去年同期数据如图 2),OracleMySQL 和 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 类 TureTimeServeless 等, 这些都和最新的趋势紧密相融, 前两者对应分布式数据库后者对应数据库云化
Aurora 对国内的计算与存储分离的产品研发影响深远, 阿里的 PolarDB 华为的 FusionInsight 系列等都在向 Aurora 对齐相传, 腾讯京东等都跃跃欲试准备做类 Aurora 的产品可见 Aurora 对国内的影响深远
2.3 Spanner, 引领分布式数据库潮流
2012 年的 Spanner: Googles 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 以此来观察数据库界, 这一年, OceanBaseTDSQLTiDBCockroachDB 等等主流分布式数据库即 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 部署从数据库排行榜看, 微软占据第三位, 遥遥领先第四位 PostgreSQLSQL 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
- [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.
来源: https://www.cnblogs.com/qcloud1001/p/8487742.html