初探oceanbase和newsql数据库
为什么是分布式数据库?
互联网时代,数据已经成为企业运营的命脉。作为聚合支付的领军企业之一,李俶2021年受理交易金额3500亿,覆盖全国600+城市,服务110万+线下商户,日交易量2300万+,合作伙伴1000+。在如此庞大的交易和支付场景下,数据意味着李俶的服务质量,意味着企业管理的未来和活力。所以对于数据的基础来说,数据库的稳定性高于一切,7*24*365稳定运行是基本要求,服务连续性是服务质量的底线,数据库的高可用性、避免单点故障、快速容灾切换、数据无损是数据库技术的大势所趋,newsql数据库也扮演着很重要的角色。
数据库技术发展
从数据库技术的发展历史来看,经历了单数据库、子数据库和子表数据库、分布式数据库的发展。相对于我们的业务应用和服务,我们很早就开始了微服务和单元化架构升级,其本质也是服务分发。我们通过分布式一致性协议来协调各种应用和组件,从而达到高服务可用性和高吞吐量的能力。虽然延迟的分布式数据库技术比应用服务的技术框架落后半步,但是从最终的发展趋势来看,分布式数据库一定会成为主流数据库。
单机数据库
自1970年IBM研究员E.F.Codd博士提出关系模型以来,经过几十年的发展,关系模型得到了充分的发展,成为数据库的主流模型。这几十年也产生了知名的独立数据库产品,如Oracle、DB2、MySQL和PG。
单数据库易用,单节点维护成本低,保证了ACID的特性(原子原子性、一致性一致性、隔离性和持久性)。但随着业务量的增长,似乎无法应对高并发读写,海量数据的高效处理。不断提高单个节点的规格,最终会遇到天花板,摩尔定律赶不上业务增长的规模。
对于电脑时代的史前产品,放个黑白图片例子。
子数据库和子表
当单个数据库无法承载高并发、海量读写等任务时,分库分表的方案已经开始出现,至今仍方兴未艾。分库分表的方案,解决了业务快速增长带来的高并发访问问题,同时可以通过分而治之的方式满足海量读写。典型的中间件包括TDDL、分片JDBC、MyCat等。
通过对目前一些主流云数据库产品的调研,我们发现大部分云上的分布式数据库基本都是以MySQL和PG为核心的子数据库产品。使用分布式组件,如ZooKeeper和etcd,可以管理多个数据库实例,从而实现一个分布式数据库产品。本质上,它类似于将多个数据库与应用程序连接起来,只是元数据管理被移到了单独的组件中。在实际使用中会发现,ACID无法保证,快速的业务发展需要拆分实例数据迁移等运维工作的高投入。
分布式数据库
21世纪,分布式数据库的概念被提出。与传统数据库和非关系数据库NoSQL相比,新一代数据库是newsql数据库。这种数据库兼有传统数据库和NoSQL数据库的功能和优点。两者完美结合,既能保证ACID特性,又能解决分布式扩展能力,又能保证海量存储,同时达到高可用、高效率的目的。
21世纪初,分布式数据库已经初具规模。Oracle的RAC以共享存储为代表,计算节点的分布式处理可以看作是分布式数据库的一种尝试。毕竟高端存储硬件一般企业买不起,存储层还是无法横向扩展。
2012年,谷歌发布了Spanner。由于其封闭的源代码,我们只能通过论文一窥端倪。共享无,Paxos,ACID,MVCC等基本建立了分布式数据库的主流架构模型。
在众多分布式数据库选择中,TPCC榜单上的OceanBase进入了我们的视线,TPCC连续两年测试第一,超过Oracle性能20多倍。同时,经过了解,OceanBase数据库是一个完全独立的分布式数据库,而不是基于其他内核产品的包,这也是我们准备测试OceanBase的一个重要原因。
选型验证海洋基地
基于数据库的发展趋势,李俶作为一家创新型互联网企业,始终紧跟技术发展的步伐,不断迭代平台架构,以不断提升服务质量,应对业务发展的不断增长。因此,基于对分布式数据库的研究,我们选择OceanBase进行测试和验证,并基于我们的业务使用newsql数据库进行测试,这也是对分布式数据库产品的初步探索。
其实对OceanBase并不陌生。2019年我们已经和OceanBase团队沟通过了。当时经过初步了解,发现对我们的数据迁移和运维管理提出了一些挑战,成本和风险让我们暂时搁置。时隔两年,再次见到OceanBase团队,感觉很亲切,也希望这两年的沉淀能给我们带来不一样的产品。
高兼容性
切换应用程序数据库不仅仅是改变数据库驱动程序那么简单。驱动程序只解决应用程序和数据库之间的通信协议。数据库与SQL的兼容性直接影响我们业务迁移的转换成本。OceanBase的一个集群同时支持Oracle和MySQL两种模式,是我们研究的众多数据库中唯一的一个。
在本次兼容性评估中,OceanBase提供了OMA迁移评估工具,可以在数据迁移前全面扫描newsql数据库通过OMA评估工具,我们直接评估了测试库的结构和SQL的兼容性。同时,我们还可以通过静态代码分析来分析应用中的SQL,并通过评估报告对不兼容项提供详细的解释和改进建议。
通过命令行方式的结构化迁移评估,快速生成评估报告。根据评测报告中的不兼容项,我们还找到了两种非口号的方法来消除兼容性隐患。
OMA还支持静态代码分析评估。通过OMA工具直接在本地进行静态代码分析,避免核心代码的泄露。兼容性分析为100%。在实际的应用接入测试中,发现评测报告是准确的。当然,前提是保证perfomance _ schema中的SQL覆盖我们业务的所有SQL。
OMA使用方便,评估准确。给OceanBase点个赞。
高压缩比
评估结束后,我们通过OMS迁移工具整理并迁移了几条数据进行测试和对比。我们不得不提到OMS,它可以通过几个步骤的配置操作进行拉取和迁移。整个操作过程非常简单易用。
迁移后,我们专门比较了数据库存储的差异。对于一个以数据为核心业务的公司来说,数据的存储成本是与日俱增的,OceanBase存储压缩比确实让我们大吃一惊。超高的压缩比可以大大节省存储成本。下图是一个300GB+宽的表的存储对比,整个库的存储压缩率在70%以上。
业务库表的存储比较
OceanBase的高压缩比不仅是zlib、lz4等传统压缩算法,还有编码、差分算法等先进的压缩算法。与传统的压缩算法相比,它提供了一个更极端的压缩比,这真的是意想不到的。
HTAP
OceanBase数据库不仅仅是一个TP关系数据库,它的主HTAP也是我们最喜欢的特性。对于李俶的支付场景,支付交易订单量巨大,业务规模快速增长。在线交易的同时,希望有一些实时的统计分析,比如合作商家对近期交易汇总信息的统计查询,这也是服务体验对于查询时效的重要一环。
为此,我们对我们现有的数据库和OceanBase的TP和AP能力进行了详细的对比,验证其能否在保证支付业务稳定性的场景下,提供实时的统计查询能力。通过4.9亿+条数据的宽表和SQL在不同场景下的统计分析,我们发现OceanBase具有出色的查询性能。TP性能是TPCC顶级的,保证了高并发和高性能。同时,HTAP混合动力引擎还提供实时数据分析能力。
通过真实业务SQL的执行对比,OceanBase的表现再次超出预期。
通过在不同场景下的测试和验证,OceanBase不仅满足了我们对分布式数据库的要求,还具有意想不到的性能和较高的存储压缩比。
首先,我们选择了一个创新的业务“合作伙伴”进行迁移和割接。这个业务上线时间不长,但是业务增长很快。快速增长的业务对newsql数据库也是极大的挑战。不知道哪一天会有突然的增长。对于传统的MySQL来说,即使把数据库和表分了,再把表分了再迁移也来不及了。
在数据迁移过程中,OMS再次发挥作用,不仅支持数据的全量迁移,还支持结构迁移、全量校验、增量迁移、反向同步等功能。全额验证对我们支付场景的帮助非常大,省去了我们开发验证程序的工作,同时也保证了数据迁移的准确性。增量迁移可以与源数据库保持实时同步,为我们的业务验证提供了一个窗口,以充分验证和保证在线割接的稳定性。
通过全量数据的数据迁移,对比一个逻辑库的存储压缩,“Laipartnership”业务的基础压缩率为26.4%,符合之前的测试预期。
对比迁移到逻辑库前后,11.06GB的存储下降到2.92GB
在迁移和割接的过程中,应用代码只需要修改配置文件和切换数据源,OceanBase与MySQL协议的兼容性完全不需要改变驱动。同时,基于之前OMA的评测报告,应用的验证也非常流畅,OceanBase对MySQL语法的兼容也降低了newsql数据库的切换门槛。
迁移后,通过OceanBase的云服务平台,CPU、TPS、QPS等的性能可以监控,同时可以设置告警,保证服务SLA。实时诊断功能为DBA提供了一套“利器”,如慢速SQL查询、TopSQL查询,甚至慢速SQL的索引绑定,无需更改业务代码,大大提高了数据库运维效率。
感谢OceanBase生态工具的加持,成功迁移了第一笔业务,同时继续在线监测。目前业务运行顺利。后续李俶将逐步迁移其他业务线,迁移到OceanBase,拥抱分布式数据库时代,享受分布式数据库带来的技术红利!
在过去的两年中,虽然楚不可能爱上楚,但在过去的两年中,OceanBase在各种生态产品上取得了突破性的进展。各类周边配套产品基于客户的实际问题,解决了评估、迁移、运维等一系列问题。这个测试验证了数据库和生态产品都得到了客户的认可,也是我们“把简单留给客户,把复杂留给自己”的实践。
针对李俶高流量、高并发的业务场景,在评估和迁移过程中,结合ant的最佳实践,对core newsql数据库 table结构进行了部分优化,实现了业务代码的零转换,提升了数据库扩展能力和性能。
Chu在OceanBase的首次商业登陆仅仅是一个开始。对于其他业务,尤其是海量数据付费,我们会和楚一起努力,希望通过OceanBase给客户带来一键迁移、运维一体化、HTAP库的服务体验。