{CHAO声波}|GaussDB OLTP数据库,从“备胎”到尖刀产品
Hello,{CHAO声波}
一杯咖啡吸收宇宙能量,一篇好文联接大咖思想。
华为Cloud & AI产品与服务{CHAO声波}栏目正式营业,这里将集结各路大咖,与您一起碰撞思想、交流经验,共同进步。
亲爱的粉丝朋友们,你关心的,就是热点。希望看到哪方面的大咖,欢迎在留言区留言。下期见面的,或许就是你心中的TA。
首期{CHAO声波},将由华为GaussDB生态与标准CTO王伟民带来GaussDB数据库发展历程、关键技术和生态建设的分享。
1
GaussDB发展历程:
从“备胎”到尖刀产品
GaussDB的初心,是为电信主航道业务服务。其发展经历过三个阶段:
-
内部自用:从2007起,为解决预付费业务的在线计费对性能的严苛要求,开始构筑高并发、低时延的内存数据库。
-
联合创新:2011年起,为保障公司的业务连续性,公司开始研发面向通用场景的企业级数据库;采用技术创新和市场需求牵引的“双轮驱动”机制,通过与中国工商银行的联合创新,推出了聚焦开放平台,主打极致弹性的企业级分布式数据仓库GaussDB OLAP;通过与招商银行的联合创新,推出了聚焦高性能和高可用的企业级分布式OLTP。
-
产业化:2019年5月,华为正式面向全球发布了GaussDB,宣布GaussDB进入产业化阶段,开始在产业、技术、人才等方面发力构筑生态。
2
GaussDB OLTP构筑路径的选择
在GaussDB OLTP立项之初,团队就产品的可行构筑路径进行了深入分析和充分论证。最后聚焦到两个路径上:
1. 借力MySQL、PostgreSQL等流行开源产品改造优化?
2. 从零开始研发!
MySQL受益于互联网、移动互联网的兴起以及LAMP架构的流行,拥有了非常活跃的社区和众多拥趸,具有良好生态;此外,由于MySQL的计算和存储引擎解耦,最先实现了pluggable的引擎,云化改造成本低。但与商用数据库相比,MySQL在内核能力和企业级特性存在较大差距;MySQL的存储引擎实现为索引组织表,其性能随数据量增长下降明显;MySQL的优化器与企业级数据库的优化器相比差距较大,如多表关联等复杂查询难以生成最优执行计划;在企业级特性上,如高可用、备份恢复、安全加密、审计等亦存在较大差距。
PostgreSQL是另一款流行的开源数据库,企业级特性相对完善,业界有很多优秀的分析型数据库即是基于PostgreSQL构建,如Redshift、Greenplum、GaussDB OLAP;且PostgreSQL的开源协议PostgreSQL License是一种非常开放、商业友好的协议;基于PostgreSQL进行改造,最大的挑战有两个。首先PostgreSQL采用append only而非in place update机制,在多用户高并发的交易场景下极易因Vacuum引发性能抖动;其次,在实现上PostgreSQL的计算与存储引擎紧耦合,云化改造工作量大。
因此,无论是从当前的特性及能力还是从长期的演进看,MySQL和PostgreSQL都不能满足我们对企业级分布式OLTP数据库的需求,团队最终选择从零开始构筑GaussDB OLTP。从写下第一行代码开始,到今天GaussDB OLTP成功商用,凝聚了数百名开发人员的心血。
3
一个架构、多种部署形态
适配多样化业务负载
数据库作为通用的、平台型基础软件,其上层应用天然具备多样化的负载特征;以银行业务为例,其业务类、渠道类和管理类应用对数据库诉求各异;核心业务是“稳态”业务,要求高可靠和高性能;渠道业务和创新业务则为“敏态”业务,优先考虑高并发和高扩展。
通用数据库在设计上面临的诸多设计约束,使其无法在每一个场景下都有最佳表现;数据库领域先驱及图灵奖获得者Michael Stonebreaker就提出过“One size does not fit all”的观点。为匹配主流交易负载场景的诉求,GaussDB OLTP在设计上遵循了“一个架构、一个代码基线、多种部署形态”原则,当前可提供四种部署形态,以应对上诉困境:
-
极致高性能:基于企业级内核,面向AZ内极致高性能场景,可进行HA部署。
-
极致高可用:GaussDB共享集群解决多写问题,提供极致高可用和高性能。
-
全分布式高可用:基于Paxos分布式共识协议,跨地域多副本,满足金融级多地多中心、分布式多活。
-
极致高扩展:share-nothing架构的分布式数据库,提供极致的高扩展和大规模并行处理能力。
4
GaussDB OLTP四种部署形态
极致高性能
围绕高性能设计目标,GaussDB OLTP采用了一套“组合拳”;通过轻量化线程池,保证大并发下的稳定吞吐;通过采用段页式的空间管理及Undo机制,避免了空间膨胀与回收;多用户并发采用了基于SCN的可见性判别机制,有别于ReadView机制,显著提升了并发能力;此外,GaussDB是业界首款支持Kunpeng的数据库,针对Kunpeng多核的特点,采用了data affinity placement等手段进行NUMA-Aware优化;引入了会话级的私有log buffer pool应对日志写冲突。针对最让DBA们头疼的人为误操作,GaussDB OLTP提供了基于时间戳及回收站的两种闪回两种机制,实现对表、分区的drop、truncate等操作的快速闪回管理。
为了便于业务迁移、重用DBA的技能或降低学习曲线,GaussDB OLTP在主流商用数据库兼容性方面做了极大投入。兼容性工作主要体现在三个方面:
-
“表皮”兼容即形似:兼容主流商用数据库基本语法、存储过程、分区表;
-
“骨肉”兼容即神似:物理存储和逻辑存储与主流商用数据库完全兼容,管理方式一致;
-
“DNA”兼容:基于Undo的MVCC机制、一致的内存架构、网络架构等,并在语义方面与主流商用数据库保持一致。
极致高可用
企业关键业务希望7*24不间断服务,实现99.995%或99.999%的SLA,这意味着故障发生后,在保障零数据丢失下的前提下(RPO=0)RTO尽可能小。为追求极致的高可用,GaussDB研发了两大重量级特性:AZ内的Switch Turbo、基于Share-Everything架构的高可用;故障恢复所需时间取决于选定的恢复点、恢复点至故障发生点期间的日志规模。一般而言,更频繁的CheckPoint和并行日志应用可缩短恢复时间,但对系统的性能有影响。当前,Checkpoint到SSD盘的速度约为400MB/s,而通过高速网络写内存的速度在3~5GB/s,两者相差约一个量级。
因此,GaussDB设计了Switch Turbo特性,基于全局缓存、高速网络和网络协议优化,实现了AZ内的极致故障切换;其核心原理是在同AZ内的独立服务器或备机上设立全局缓存区,定期将本地缓存区的dirty page同时写入本地盘和全局缓存区,在故障发生时,对于尚未完成日志应用的页面,备库通过访问GBP而不是磁盘获取数据页面,进行roll forward,进而大幅降低RTO。同时,GaussDB还将推出存算分离、基于共享架构的集群,实现应用透明的并发多写。
分布式高可用
金融系统在监管要求下,采取“同城生产及应急、异地容灾”的两地三中心架构已成为业界最佳实践;通过引入Paxos分布式共识算法,GaussDB OLTP实现了多副本强一致性保障。在GaussDB的实现中,GS-Paxos作为数据库进程中的独立组件,通过回调函数与日志模块交互,对系统的侵入性小。本地日志落盘与网络日志传输可并行,日志在多数成员达成一致后,本地方确认事务提交成功。GS-Paxos协议在日志复制pipeline化,日志合并与压缩等方面做了大量优化。GS-Paxos还支持定义Passive角色,Passive节点仅接受日志但不参与一致性选主,支持选主优先级可配置,从而实现日志少的节点也可强制选主。支持通过单节点强起,实现数据库不完全恢复,即丢失少量数据的前提下实现站点级的容灾。
极致高扩展
GaussDB OLTP的极致高扩展部署形态采用了share-nothing架构,整个架构消除了中心节点,可提供Hash、范围、列表等多种数据分布策略,在极致的横向扩展下能保持准线性的性能提升。为提升开发与运维、管理效率,GaussDB OLTP提供了多款工具;SDR(Swift Data Replicator)支持多种主流数据库间的数据迁移、同步,支持灵活的、可配置的同步策略;Data Studio是一款图形化的集成开发环境,可简化开发与调测;Data Manager是一款企业级的监控和运维平台,可大幅提升运维效率。
5
携手产学研用合作伙伴,
共建开放繁荣的产业生态
生态建设是GaussDB OLTP在业界推广、规模化商用复制成功的关键。GaussDB从四个方面、分阶段加速推进GaussDB生态建设:
-
产业生态:携手金融、政府、大企业等行业的合作伙伴,为客户提供全栈解决方案,并积极参与数据库标准的研讨和制定。
-
技术生态:建立GaussDB OpenLab认证体系,面向生态伙伴开放对接流程、认证渠道,打造自研三方件“全家桶”。
-
用户生态:发布完整的、阶梯型的GaussDB培训认证体系,力争在5年内培养1万名DBA,吸引5万名注册用户,并在华为云上线GaussDB开发者社区。
-
高校合作:推出了“GaussDB高校金种子发展计划”,拟投入1.5亿人民币,建立10所高校联合创新实验室,使GaussDB实训课覆盖100万名高校学生。
- 点赞
- 收藏
- 关注作者
评论(0)