2019,遇见最好的 MySQL 数据库

2019年,关于 MySQL 的新特性、新版本消息不绝于耳:

2019,10月,MySQL 8.0.18 发布,支持 HASH JOIN; 2019,4月,MySQL 8.0.11 发布,实现比 MySQL 5.7 快 2 倍的速度;

MySQL 一直是互联网数据内核的主宰,但是在经历从互联网到企业级的转变中,却是困难重重。然而在 2019年,越来越多的企业级客户开始在业务核心中使用 MySQL 数据库,这是一个标志性的转变,代表 MySQL 打开了更广泛的企业市场,而MySQL的技术变革也正在以更快的步伐去满足更广泛的用户需求。

毫无疑问,MySQL 是当今 最流行的数据库 和 最流行的开源数据库,在 DB-Engines 上,MySQL 的流行度几乎和 Oracle并驾齐驱,但是考虑到 Oracle 很多时候代表的不仅仅是 Oracle 数据库(更多的是代表一家公司),而 MySQL 就仅指 MySQL数据库,所以事实上,即便在指标上,MySQL 数据库可能早已凌驾于榜首之上。

而在 DB-Engines 的榜单上,还有一系列的独立数据库品牌是在 MySQL 的基础上发展而来的,MySQL 的生态庞大而无以伦比。

在中国的国产数据库领域,几乎所有的云厂商都有基于 MySQL 的 RDS 提供,而更进一步的,头部的 IT 厂商也都几乎基于 MySQL 发展出独立的解决方案或产品,这进一步推动了国内 MySQL 的广泛应用和发展。接下来让我们细数一下那些改变数据库核心应用的 MySQL 数据库们。

POLARDB for MySQL

PolarDB for MySQL,POLARDB是阿里云自主研发的,与MySQL完全兼容的云托管数据库产品,采用了分布式存储引擎、计算和存储分离的架构,单库最多可扩展到16个节点,存储容量最高可达100TB。

PolarDB 架构的设计特点包括:一写多读,计算与存储分离,读写分离,高速链路互联,共享分布式存储,数据多副本、支持Parallel-Raft协议

POLARDB在2019年发布了POLARDB MySQL 8.0兼容版,是第一个兼容MySQL 8.0版本的云原生数据库,据悉POLARDB的高性能存储引擎X-Engine即将发布,X-Engine存储引擎具有高性能和高压缩率,经历了2018年双11的实战考验。

根据官方信息,阿里云POLARDB 8.0版本提供了更多的内核引擎功能,比如:

独立可扩展的共享Buffer Pool、行级压缩、全球实例支持、并行DDL、分区表自建索引以及自建分区表等。

并行查询是POLARDB 8.0版本推出的一个特性,在TPCH 100G数据量的情况下,使用POLARDB并行查询时70%的查询可以被加速,40%的加速比超过10倍。在未来,POLARDB会实现自动的DOP以及ResourceManager,并将支持Subquery、GIS和Blob以及Procedure等。

通过以上的介绍,大家可以看到云数据库的发展速度,并行查询、高压缩比的存储引擎,这些都会为用户带来实际的收益。并行DDL、分区表自建索引等特性,其实已经将 MySQL 的特性极大的拉近到Oracle数据库的层面上来。

我非常期待阿里云的 X-Engine 引擎,众所周知,Oracle 在Exadata中提供了强大的混合列压缩特性,但是不开放给非一体机用户,在开源的世界里,自由的改造和创新为数据库带来了无以伦比的活力!

腾讯 TDSQL

腾讯的 TDSQL ,全称 Tencent Distributed mySQL -腾讯分布式MySQL,是针对金融联机交易场景的高一致性数据库解决方案。

2019 年 9 月 12 日,腾讯云官方宣布了 TDSQL 在张家港农村商业银行正式落地,成为国内首个被银行在传统核心业务场景中使用的国产数据库。

根据报道,在迁移之前,张家港行使用的是 Sybase 数据库,迁移的核心系统的数据量在 TB 级,包括了账户、账目、流水、账单、日志等数据。核心系统主要分为两大部分,一个为交易子系统,覆盖银行卡、资金管理等等;另一个为会计子系统,主要是资金的交易分离、清算总账。

2019 年 8 月 16 日下午 6 点,张家港行开始进行新核心系统的上线工作,数据库割接通过原有数据的导出、TDSQL 数据的导入以及中间数据的加工校验。48 小时之后整个改造工作结束。新核心在至今一个多月的时间里,数据库运行稳定各项指标均正常,即使业务高峰期数据库也维持极低负载

接下来我们来简单了解一下 TDSQL 的架构。

TDSQL 是由决策调度集群 /GTM,SQLEngine、数据存储层等核心组件组成,每个模块都基于分布式架构设计,可以实现快速扩展,无缝切换,实时故障恢复等,通过这一架构,TDSQL 的 Noshard、Shard、TDSpark 实例可以混合部署在同一集群中。

TDSQL 的核心思想有两个:数据的复制(Replica)和分片(Sharding),其中 replica 配合故障的检测和切换,解决可用性问题;Sharding 配合集群资源调度、访问路由管理等,解决容量伸缩问题。

在最终实现上,TDSQL 由 Scheduler、Gateway、Agent 三个核心组件加上 MySQL 组成:

TDSQL 在 SQLENGINE 实现了基于代价的查询引擎 (CBO),实现了基于 shard key 下推,索引条件下推,驱动表结果下推,null 下推,子查询下推, left join 转化成 inner join 等,以提供更好的分布式查询的能力,支撑金融交易的关联操作。

TDSQL 仍然是通过经典的 XA 两阶段提交加两阶段封锁协议实现了强分布式事务的语义,在使用语法上与 MySQL 完全一样,即后端的分布式事务处理对业务使用方是完全不感知,以保证兼容性。

张家港农村商业银行的项目实施过程分为两个阶段,功能性改造,性能优化。

整个改造过程是从简单到复杂,先从高频交易入手,集中处理与高频交易相关的业务以及子系统,然后是跑批类交易。

从集中式架构转变到分布式架构,要求所有的库表都要重新设计,这是所有数据库做分布式改造时都无法避免的问题。如何根据全局业务,选择最佳的数据分布策略,是分布式改造需要面对的首要问题。即使确定了分片关键字,还需要对该分片关键字以及索引做持续优化调整以寻求最佳实践。

兼容性差异,包括两部分:Oracle 生态与 MySQL 生态、集中式架构与分布式架构的差异,TDSQL 做了大量对 Oracle 语法兼容性的优化。对于一些不太适合分布式场景下的使用特性如:存储过程、视图、触发器等,将更合适放到应用层的部分逻辑上移,实现了更为彻底的分布式架构,极大提升了整体的水平扩展性。

针对复杂 SQL 问题,业务侧通过调整分片关键字和复杂 SQL 拆分两个方面做优化,让 SQL 尽可能限制在一个数据节点内。针对无法避免跨多个数据节点的表关联,TDSQL 做了大量复杂 SQL 的优化,如:子查询上提、左连接消除、丰富下推逻辑以及基于统计信息的条件推导逻辑等,尽可能提高处理这种复杂 sql 的性能。

TDSQL 还承载了微众银行 99% 以上线上数据库业务,微众和腾讯云合作的 TDSQL 智能运维 - 扁鹊项目,已在微众银行灰度上线,可以实时分析 TDSQL 的运行状态和性能问题,是智能化运维方面的有益探索。

中兴 GoldenDB

中兴 GoldenDB 数据库。它是中兴面向金融领域,自主研发的一款基于 MySQL 的分布式数据库。

中信银行信用卡核心业务将于2019年下半年全部迁移到GoldenDB数据库上,承载起核心金融的重要使命。

GoldenDB 的特性描述包括(来自官网):

  • Share Nothing全分布式架构:计算存储分离、存储节点具备强大的本地计算能力;无单点故障瓶颈,设备故障情况下,依旧保证数据零丢失、提供不间断服务;横向扩展,通过设备堆叠无限扩展计算性能和存储容量;支持超大规模节点的可视化监控运维;
  • 高效可靠的容灾能力:金融级多地多中心多活架构,实现RPO=0,RTO<30S,数据永不丢失,灾难情况下业务快速平稳切换;
  • 不停服务的在线扩容:支持哈希、列表、范围、复制四种分片规则;支持热点库分裂,保证数据分布均衡;支持多表关联扩容,减少跨库关联查询;扩容计划灵活配置,扩容过程可视化管理;
  • 金融级实时一致的分布式事务:引入全局事务管理器,保证分布式事务的实时一致性;对应用透明的分布式事务处理,应用无需改造;一阶段提交+自动补偿机制,提升分布式事务处理性能;
  • 金融级可靠性:快同步复制保证数据不丢失,分组复制保证业务不中断,高低水位实现策略灵活可配置;
  • 功能完备的备份恢复:支持全量、增量、实时和定时的备份策略,支持数据恢复到任意时间点,支持恢复到全局一致的数据状态;
  • SQL兼容:兼容标准SQL语法、MySQL语法、Oracle常见语法,支持分布式优化、分布式批处理。

中国电信 TeleDB

虽然公开的信息并不多,但是中国电信基于 MySQL 的增强 TeleDB 已经能够为电信及其合作伙伴提供基于交易或订单系统的数据库服务。

本文分享自微信公众号 - 数据和云(OraNews)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券