面对互联网业务的不断深化以及业务量的爆发式增长,传统数据库架构迎来了前所未有的挑战和变革。
在传统数据库领域,Oracle一直占据了很大的市场份额,很多企业的业务系统基于此实现OLTP交易场景。
近年来,随着分布式技术的发展,分布式数据库逐渐占据了OLTP领域较大的市场,尤其在互联网领域,MYSQL、PG等分布式数据库的应用非常广泛。
在中国,软件国产化、自主可控战略的提出,“去Oracle”逐渐被提上日程,非互联网企业也开始考虑数据库转型。其中,分布式数据库即是一个重要转型方向。
然而,分布式数据库应该如何在企业中正确地落地,一直是业界讨论的焦点,首当其冲的问题就是:分布式数据库是否能替换Oracle?
走过漫长历程
分布式数据库的春天来了
在回答这个问题之前,先来看看分布式数据库的发展历程和特点。
20世纪80年代,伴随着关系数据库理论的诞生,IBM和Oracle两家公司开始提供商业化的数据库产品,服务于各类大型企业。
初期的数据库都是单机软件,跑在专有的硬件之上,比如IBM的大机、小型机,如果业务量或者数据量增加,只能进行垂直扩展,即采用增加CPU、存储的方式。
这套体系的优点是非常稳定,缺点是开放性不够,与通用x86服务器体系之上的开发环境兼容性差,另外当业务量增长过快时,其扩展能力有限,而且这套系统的造价非常昂贵。
2000年以后,随着互联网在线业务的发展,业务系统访问的并发度呈指数级上升,海量数据计算和分析需求越来越普遍,传统单机系统在业务支撑、成本、开放性等方面均面临巨大挑战,数据库垂直扩展的模式也无法维系。
以支付业务为例,随着在线购物、在线缴费方式的普及,支付业务系统的并发量迅速增长,尤其是在“双十一”“618”“春节抢红包”等场景下,每秒有上百万笔支付交易。
互联网企业开始探索新的水平扩展的方案,最常见的就是应用系统通过分库分表进行解决。
但是,这种解决方案的应用系统需要做大量改造,需要感知数据存储位置,增加了运维的复杂性,并因此出现了中间件的方式,如Mycat等。这种方式虽实现了数据对应用的透明,但未解决数据库运维的痛点。
随着大数据技术的发展,以Hadoop、Greenplum为代表的非结构化大规模数据处理技术崛起。
这些技术主要采用Shared-nothing架构,在分析领域率先实现了分布式的扩展,分析的主要任务是数据的查询,其应对的挑战主要是海量数据的存储、计算,对于事务的要求较低。
2010年后,谷歌Spanner、Tidb采用Paxos或Raft等一致性协议来解决中间件方案的单点瓶颈问题,这为事务数据库的分布式化提供了新的理论依据。
之后,分布式数据库发展迎来了热潮,各类分布式数据库百花齐放。
相比于传统的单机或主备模式的集中式数据库,分布式数据库是传统数据库技术与计算机网络的有机结合,在平滑扩展、高性能、高可靠、高可用、低成本等方面具有优势,特别是当数据量上升到一定程度,在性能方面可突破集中式数据库的瓶颈。
回顾过去10年,分布式数据库经历了从行业质疑、小规模试水、到如今在金融、互联网等行业的探索和应用,有一些甚至在生产系统中得到大量应用,可以说分布式数据库的春天已经到来。
分布式数据库替代Oracle
不能一刀切
那么,分布式数据库足以替代Oracle这样的传统数据库了吗?
传统关系型数据库在核心交易等领域深耕了40多年,到目前为止,大部分纯交易场景不论从数据量还是商业模式都没有本质的变化,其业务的扩展空间的确十分有限。
在企业数字化转型的过程中,数据量随着业务发展快速膨胀,为数据库带来全新的市场机遇。而分布式数据库的设计初衷,正是为了解决全新的数字化业务问题。
在Oracle所无法满足的场景中,分布式数据库成为了理想的落地方案。
但值得注意的是,在替代Oracle的问题上,并没有一刀切的答案。
分布式数据库的诞生,首先是为了解决传统数据库不擅长的场景,在关系型数据库做到极致的领域同样需要很长的时间才能完善,并不是为了单纯替换某个原有系统。
如果只是为了使用及推广新技术,而进行固有架构的替换,将会面临极大的技术风险与挑战。
可以看到,目前国内绝大部分的分布式数据库的产品试用,都是在一些非核心系统的应用。例如:在金融机构,分布式数据库常用于渠道类业务如:网联、第三方支付对接等,在生产环境中验证产品功能和稳定性,并没有实现真正的替代。
同时,分布式数据库的产品成熟度也有待提升。
相比较于DB2、Oracle等商业数据库和MySQL 等开源数据库,分布式数据库产品在生态圈、技术手册、技术支持等多个方面,还是稍逊一等,仍然有大量可提升的空间。
由于尚无统一的业界标准,也没有哪一款分布式数据库产品,是这个领域不可争议的第一名,就如同Oracle一样。
对于分布式数据库而言,想要替代Oracle,更大难点在于如何从Oracle迁移出来。
很多企业原本都是传统数据库一体化解决方案,其设计与运维经验不一定完全适合分布式数据库。从Oracle迁移至分布式数据库就会遇到各种障碍,例如:
- 不同数据库之间的异构数据如何做到无损迁移?
- 迁移过程中如何保障系统稳定性?
- 如何设置异构数据库并行过渡期?
- Oracle数据库往往和应用耦合度较高,迁移过程还会涉及到应用迁移和改造,如何评估改造量和改造难度?兼容性如何保障?
- 数据库迁移完成后如何成功建转运?
- 传统运维方案中的网络、存储、监控告警、备份恢复等等应该如何规划?
除此之外,尽管分布式数据库比原来各业务系统独立使用数据库更加易于运维,但是刚引入分布式数据库,难免碰到运维技术和人力跟不上的阶段。
这些都是分布式数据库需要解决的现实问题。
结语
从全球数据量发展的方向来看,其爆发性增长,主要集中在基于数字化创新的多样化业务场景。
因此,单纯替代传统Oracle占据核心优势的固有领域,并非是分布式数据库未来的增长方向。
分布式数据库的最佳落地与使用方式,是从海量数据业务到核心的逐步迭代过程。
先从存在海量数据弹性扩展的新兴业务需求入手,随着业务革新不断的深入,逐渐渗透进传统业务及应用中。
企业在选择分布式数据库落地场景时,也应该选择适当的应用场景,以真正发挥其优势能力,并持续打磨技术团队的运维能力,并逐步推向核心。