vlambda博客
学习文章列表

争议 | 再论国产数据库能否替换 Oracle 数据库

来自twt社区同行交流,欢迎更多同行参与交流

国产数据库能否替换Oracle数据库?

Oracle还是主流数据库,那么如果进行国产化替换,国产的数据库,达梦、南大通用、金仓等真的可以替换Oracle吗?国产数据库现在和Oracle比,还欠缺哪些,如性能、架构、兼容性、稳定性?如果真的将Oracle替换了,那么对于维护人员会带来哪些风险?

问题来自社区会员@yulu4314 系统工程师

* “争议”栏目内容来自同行分享的一手体验和观察,仅代表个人观点


@潘延晟  系统工程师:

我觉得和国产汽车一样,欠缺的是大规模实际应用,没有应用只在实验室环境中的测试,理论上都是可以实现替换的,但真正在不同的行业用户中所产生的各种各样的问题才是目前国产信息化面临的问题。包括和中间件的配合,包括对不同行业的数据处理的需求,包括在不同的系统环境、硬件环境下的适配,其实是整个生态圈的问题。但终究中国要走这一步。


@赵海  技术经理:

对于Oracle能否被开源系衍生的数据库代替这个问题,个人觉得需要从两个维度去看。

第一个维度,技术维度。从技术维度来展开的话,首先需要看的就是产品的成熟度,这一点来讲,Oracle从三足鼎立的时代发展到今天独霸关系数据库排名之首的局面,是经历了很多年的技术洗礼,并且是来自全世界各种业务场景考验之后,才得到今天DB Engine上的荣耀。所以从通用产品的技术成熟度角度来讲,一定会胜过其他派系数据库。从性能维度展开的话,目前看到的一些性能测试报告都是来自于某厂商、某客户等局部范围内的报告,不具备权威性及足够的说服力。个人认为只有看到国际权威技术组织得出的权威报告之后才可评估。从特殊场景的支持角度来展开的话,这一点相信Oracle会逊色于一些从互联网业务场景诞生的开源系数据库,作为通用产品来讲,Oracle的设计之初一定没有想到今天中国互联网业务场景的复杂性和规模之巨大。但是这一点来讲,我觉得比的不够客观、因为我们是拿一个通用产品和一个为某类业务定制化的产品来进行比较,逻辑上有些牵强。

第二个维度,生态维度。Oracle数据库之所以发展到今天的地位,不仅仅是技术上的迭代更新,更重要的是服务、培训、社区等各个层面的同步发展。当用户不熟悉它的时候,它可以想尽办法去培养自己的用户群,一直培养到客户已经离不开它,这是一种技术行为习惯的颠覆。如果对全世界的DBA进行一个分类的话,我相信Oracle DBA 的人数一定远胜于其他,如果在所有搜索引擎上进行一个测试,基于Oracle的技术文章、问题讨论、原理分析等等的知识一定也会远胜于其他,这就是Oracle放水养鱼数年之后形成的巨大生态。这种生态不是一朝一夕就可以扭转的。

总而言之,国产化大背景的驱动下,这是发展国产数据库最好的机会,未来中国的DB市场格局一定是会向多元化方向发展。技术上我们经历了中国互联网业务飞速发展的这个特殊阶段,同时也掌握了一些别人掌握不了的尖端技术,这是我们的优势,市场也会给我们很多机会。但是如何培养好生态,站稳市场并最终发展壮大,这里有我们需要向国际厂商学习的地方。


@韩成亮 KE 数据库管理员:

这个问题需要考虑多方面的因素。首先是国产化,如果这个是优先考虑的话,那么答案很明显,可以替换,这是毋庸置疑的。当然就目前国产数据库而言,一种是基于开源修改,一种是购买源码修改,其实并没有真正意义上的国产数据库,这个是现实问题,理论基础缺少实践,当然基于修改的数据库也在逐渐的适应中国的国情,逐渐的中国化。

其次从技术上而言, 国产的数据库,达梦、南大通用、金仓等其他的国产数据库,都有自己的适应场景,并不能单纯的说 替换Oracle数据库,这是两码事,再者Oracle数据库也是有区分的不同的类型对应不同的模式,举个例子,你让一个基于ap业务的数据库去支持tp,先不说表结构的逻辑关系,底层的优化也是不一样的,性能也是千差万别的。

总而言之,替换一个数据库,首先需要看到的是业务场景,如果是一个点查,每秒几百万QPS,你放啥数据库都会打死,当然你后面堆无数的数据库再谈,如果是一个分析性的场景,实时性不高,可能离线计算会更加适合,并不一定要放数据库。

后面也列举了诸如性能,架构,兼容性,稳定性,维护,这个成本其实并不高。

所以,唯有适合才是替换的核心要求。


@某金融单位 架构师:

这个问题很多年前就被提出来,当时去IOE最难的一点就是去O,既然有人提出这个想法,肯定很多企业很多人去在为这件事努力,近几年国产的数据库越来越多,也有一些客户进行了替换。

如果单从技术来说,国产厂商无论是代码开发还是版本维护,肯定可以做出媲美Oracle的数据库,但是一时间没有那么多客户敢一步迈出去,技术来说没有问题,现在只是推进方面,大家比较谨慎。不过国际大环境如此,相信国产替换这只是时间问题,这段时间也给了国产数据库的厂商更多的机会。

性能,架构,包括其他一些功能,国产数据库肯定没有任何问题。如果真的替换了,对于运维人员来说,其实应该没啥问题,技术是相通的,很容易就能入手的,这不会给运维带来问题的,现在最主要的就是一些大客户进行推进,一些中小企业并没有足够的技术支持进行替换,如果大客户逐渐替换,给其他人员更多的经验和案例,我相信,近几年,国产数据库会更多的替换Oracle。


@孔再华 中国民生银行 数据库运维工程师

国产数据库能不能替换Oracle?能,但是困难一定很多。没有什么数据库是无法替代的,只是替代的代价到底有多高。迁移替代需要考虑很多方面:

1、性能

首先是性能有没有Oracle好。其实是大部分国产数据库都不一定比得过Oracle,但也不是天差地别。单纯的简单sql应该相差不大,复杂的sql经过优化拆解,也能变成简单sql。

国产分三种,自研内核,基于pg内核改造,或者是在mysql基础上改造。我测了很多数据库,现在拿openGauss作为迁移对象。这个数据库能够支撑混合负载类型,性能不差Oracle多少。

2、兼容性和迁移方式

这个可能是代价最高的地方。向存储过程,内部函数什么的,几遍国产数据库做的再好,也不可能100%完全兼容Oracle语法。所以对于需要迁移的Oracle,如何迁移数据库对象,如何将原有的存储过程改写到程序里面去。

对象迁移都还好说,厂商也会有些工具来帮助迁移。数据迁移也会有各种办法,无论是否落地。但是这些都是很繁琐的工作,也很容易出错。反正加点投入还是能做到的。

3、数据同步

保险起见,迁移之后有可能需要并行运行一段时间,其中Oracle和新的数据库需要有实时同步数据的方式,这个当前也是需要工具支持的。不同的数据库有不同的工具,这个具体好不好用不太好说。数据同步还能当做短暂停机切服务的迁移方式来用。

4、架构和稳定性

Oracle的架构和稳定性已经很成熟了。而现在的国产数据库架构也和Oracle差不多,都是双机,HA,物理日志同步等方式。架构上应该差别不大。但是稳定性肯定存在不确定性。

所以新的国产数据库,一定要在高可用保护上多做文章,尽可能多冗余,自动化切换方案等方式要做好,争取面对突发问题的时候有快速的解决方案。

5、分布式

现在分布式数据库也大行其道。通过资源横向扩展,数据分片等方式,既满足了性能扩展需求,也减少了单点故障的影响。部分高负载的Oracle数据库,考虑迁移到分布式的国产数据库环境也算是个方案。

国产数据库替代已经是个不得不面对的事情,所以下定决心去O,总是能办到的。


@anonymous:

阿里的数据库挺牛,但是可能是他们的DBA牛。国产数据库可能缺少场景的应用。替代是个过程,不可能一蹴而就的。


@war111111H GD:

这个是个扎心的问题,目前的情况看,从性能,稳定性上看,国产数据库很尴尬。即便阿里和华为研究的数据库也是基于开源,太容易被卡嗓子了。国产数据库之路,不比芯片国产化的路好走,这是个长期的过程,希望别步子太激进,造成不必要的损失。加油吧,国产数据库。


@王巧雷 sino-bridge 系统工程师:

个人感觉从技术上讲,替换肯定是可以的,但是很多事情不能单从技术上考虑。

1.  很多传统的IT架构,都是经过很多年演进过来的。不管是上传应用开发还是中间层,和数据库有一定的耦合程度。不同的数据库有不同的特点,比如隔离级别、锁类型支持等,底层数据库的更换需要对上层应用做一定的修改适配。修改后的可用性、稳定性、性能都需做充分的规划和测试,确保可用支撑。如果从关系型数据库更换为分布式数据库,应用的改动可能就更大了,以前由数据库实现的功能逻辑可能都得在应用代码层实现。

2. 生态问题,目前国产数据库的生态相对还不如主流的几个国外数据库,在后续的技术支持,日常运维保障、运维团队组建等方面相对还有一定的劣势。这个也需要一个过程的积累。

3. 成本,对于一些技术实力强大的公司来说,使用国产数据库乃至自研+开源都是非常合适的,比如一些互联网公司。但是对于一些传统企业,比如医院、制造业,其IT部门的技术实力相对较弱,使用成熟的产品架构反而总体成本比较低。

目前,国产数据库发展还是比较快的,一些非核心的系统可以完全替代。有的甚至可以替换核心,如之前社区分享的某行TiDB上核心的案例,作为技术人的我们可以多关注一些,拥抱变化。


@nqliu 河钢集团唐钢公司 系统工程师:

我觉得这个问题要分场景,不然就像问Mysql能不能替代Oracle一样了。


@anonym:

可能除了达梦,其他的国产都是开源改的,不看好国产。


@冯岩 银行 数据库管理员:

首先,国产数据库无论从性能、高可用,还是稳定性方面,都是无法和 Oracle 比拟的!

但是,重要信息领域国产自主化是国家战略,必须得走!这是大势所趋!

对于数据库相关从业人员要做的是顺势而为,支持推动落实国家战略!

建议尽早关注基于 Mysql、postgreSQL源码的国产数据库,开源社区活跃、产品成熟度高,也有很多周边厂商支持。

至于您说的那些国产数据库厂商,力量过于单薄,很难吃下 Oracle的国产化市场,毕竟他们还没有成长为微软、甲骨文这样的软件巨头,在核心研发能力、支持力度上都很有限,最关键的是数据库生态的建设任重道远。所以我建议您关注开源社区诞生的商业数据库,比如 openGauss 等,背后都有巨头的商业支持,以开源社区逐步构建生态圈。

并且从Oracle迁移的兼容性难题方面考虑,最好的选择也是  PostgreSQL、 Mysql 类数据库,SQL、存储过程兼容度高,需要重构应用的成本也相对低些。而国产数据库,之所以迁移成本很高,不是钱的事儿,而是需要大量的人员及其技能再培训的时间成本。

希望我的这点感受能帮助到您。


@小马哥 某第三方基金公司 系统运维工程师:

实验环境下的产物需要大量的级别测试。才可能在生产环境下使用,毕竟企业要承担更大的风险。数据库也要适配物理硬件的。磁盘,内存,cpu,Gpu等等。响应匹配的操作系统。

数据作为企业后台最重要的数据证据。从前端,到中台,最后的应用等。一系列的适配才能使用。从小规模实测,到千万量级的数据交互。应用系统的匹配。一个环节出错,都可以造成企业致命的失败。


@freebile 金融行业 数据库运维工程师:

对于国产数据库是否可以替换Oracle数据库的这个问题,我看不少大佬和专家都有过回复,回复的也挺到位,很多方面都提及到了,在这里我就从日常工作情况和环境中了解的信息方面,谈一谈如何使用国产数据库替换Oracle的思路,供大家参考,我个人还是希望国产数据库能够大力发展起来。

为了支持国产化道路,可以选择一些新上线的、不是特别重要的系统优先使用国产数据库,上线前与数据库厂商进行充分交流和测试(现在数据库厂商一般都给予大力支持),这样降低了风险,也没有迁移的风险;其次,这样也是一个学习和了解国产数据库最好的过程,只有真正使用国产数据库,数据库厂商才能不断迭代更新,越来越好,也只有使用了,厂商的服务、培训、社区等各个层面才能同步发展起来。最后,也希望国内数据库厂商能真正用心把产品做好,只有做好了,大家才愿意去买单,你不能让大家花了钱还得承担更大的风险。

至于重要的核心的一些系统,如果公司有实力也是可以替换的。


@周光明 People's Bank of China 软件架构设计师:

一、政策层面:

数据库去O、国产化已经是确定的道路,现在大家对这点已经达成共识,基本没有异议了。

二、实施途径方面:

分步开展,步步见效,不宜冒进,先外围系统使用国产化数据库+开源数据库,积累经验和打磨技术,建设新平台和制定新规范,后核心系统逐步从主机下移。

三、与数字化转型结合:

企业信息化向数字化转型,以数字化为变革基础,不要只是做简单的数据库迁移,而是整个企业数字化转型。站在企业数字化转型视角,使用国产化数据库,数据迁移、存储过程迁移,这些都是必须做的工作,不要指望完全自动化的一键式数据库迁移切换,需要投入就加大投入。


@annoymous:

虽然国内数据库种类也不少,真要替换了,那就是一个平台类替换与兼容问题:上层应用、操作系统、底层硬件设备。

国产数据库是否兼容,性能是否满足应用需要,底层硬件支持是否全面。

不是说国产的不好,就是国产的资料封锁太严重,很多在网络上搜索根本找不到!

甚至官网都下载不了!

对运维人员可能在超出质保范围外会有一定困难!


@GBase_David  DBA:

这是一个很纠结的问题,说的不好,容易被拍板砖。但是又不得不去面对。

从题目的角度来看,“# 国产数据库能否替换oracle数据库”,我认为肯定是可以是替换的。

为什么这样来讲呢?

传统的OLTP数据库对于应用程序来说,我认为最大的价值还是ACID的四个特性,其他都可以看做附属价值,换言之,其他的一些功能是可以通过应用补偿来去实现的,ACID确实不好在应用侧来去实现。

所谓“ 国产数据库能否替换oracle数据库 ”可行性,唯一办法是从项目的角度出发,数据库能力不如Oracle的地方,应用程序去做补位以完成数据库的替换。所以我说,国产替换Oracle是可行的。

但是从数据库产品能力和软件能力来去评判,国产数据库和Oracle还有很大很大的鸿沟,这个现状我们需要有清醒的认识。不是说我们完成了一个Oracle数据库替换的项目,我们的国产数据库就具备和Oracle PK的产品能力。我认为这是两件事情。

我遇到过很多很多用Oracle数据库的甲方,他们提的问题通常是两个:1、Oracle的兼容性如何?2、是否可以超过Oracle计算能力。

其实我们应该反过来思考:

1、提到了Oracle的兼容性,基本上都是面向应用的语法和函数的兼容性,而不能代表产品的全部能力。从这点上来说,Oracle的兼容性和Oracle具备的产品能力两者之前还有很大差距。

很多客户都以为自己对Oracle很熟悉很了解,其实大部分还是停留在应用层面。我个人认为Oracle本身如同一个庞大而复杂的机器,极少有人能退出来看到机器的全貌,绝大部分人都是扎到机器里面看到某几个部分。

2、从代码、算法、还是优化器、RAC、ADG等,我都认为Oracle是非常非常非常强大的,换言之,就算我们在某个场景比Oracle计算的快,也不能说我们具备了和Oracle一样的能力,更不能说完全替换Oracle

我们需要清醒的认识到数据库到底是干什么用的,我们自己的业务场景到底是需要什么样的数据库能力,我们就能选择出适合自己的数据库产品。

总之,我的看法国产数据库的路还长,我们不能因为在项目上替换几个Oracle数据库而骄傲自满,也不能因为看到和Oracle产品能力的差距而妄自菲薄。

@入错行:

国产数据库目前仅仅解决了有无问题,形成战斗力为时尚早!

@板儿砖:

我觉得不是替换,是在全新的数据库领域超越。

@💭:

不理解什么叫国产数据库 ,哪一个数据库是纯国产的?

@Grace_小浮:

MySQL也是Oracle的公司的。基于MySQL,PG上修改的数据库号称国产,我只能呵呵了。

@如人饮水冷暖自知

文章中肯且不失深度,确实,例如阿里主打的Polardb也是基于开源MySQL、 Postgresql进行的源码改造,架构改造,基于云原生iaas平台最大限度发挥数据库作用,但这真的不是实质的国产数据库,Oracle从来都是一直被模仿从未被超越,哎。

@SCOTTī⃰lG:

Oracle公司的数据库技术已经达到融合数据库的层级,意味着兼容了现有所有数据库的功能与优点(包括关系型与非关系型所有主流数据库技术)!如果一味的为了所谓的抵制而抵制最终会与最先进技术脱节,得不偿失!

@Foye:

上面兄弟看好,你难道不知道吗?

发展历程都相似性,都是先模仿再创新。

给国产化一点时间。

@王小小武:

Oracle提出很多未来新的数据库理念,同时不断进步,开发团队也是国际化的,应用市场也是全球化的,我们只是跟随不是超越,主要解决非关键业务的数据库替换。

@王亮:

在一个已经存在的赛道上面,所有想重复造轮子的,都是不靠谱的想法,学会站在巨人的肩膀上面做事情,做自己的事情,同样也可以有所成就,除非你选择新的赛道,美国也不会有公司现在会重新从零写一个一样功能的数据库。现在这个时代是网络时代,共享时代,开源已经比较成熟,为何还要死脑筋。

欢迎点击文末阅读原文到社区阅读和讨论交流,发表您的看法

觉得本文有用,请转发或点击在看,让更多同行看到


 资料/文章推荐:



https://www.talkwithtrend.com/Channel/597


下载 twt 社区客户端 APP

争议 | 再论国产数据库能否替换 Oracle 数据库

或到应用商店搜索“twt”