您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 数据库 > 正文

数据库国产化怎么换,你学会了吗?

发表于:2022-11-01 作者:白鳝 来源:白鳝的洞穴

昨天有朋友留言问,如果要更换国产化数据库,我们该怎么换呢?这个问题确实不好回答,因为不同的应用特点、不同的预算规模、不同的运维水平,这些差异都会导致企业要更换数据库,都会面临不同的难点。这实际上是其中的一部分原因,真正的原因是一个我们做数据库国产化替代都必须面对的问题,那就是我们要更换的数据库产品与Oracle比起来,在成熟度、功能、性能、可靠性等方面都存在差距,并且在某些方面的差距还真的不小。这就是为什么有些企业说替换Oracle很轻松,而有些企业则觉得困难异常。

因为更换数据库比较麻烦,也比较困难,所以哪怕是去IOE运动轰轰烈烈的时候,大部分企业也只是去了IE,而这个O依然是岿然不动。不过现在面临不管如何都必须更换数据库的问题,那么我们该采取怎样的更换策略呢?

对于一些IT规模不是很大,信息化应用相对比较简单的企业,数据库国产化替代实际上技术上没有太大的问题,最主要是实施方法的问题了。如何更好,更平稳的替换数据库是其中的关键。在今年实际上金融等行业在办公自动化等应用上已经开展了国产数据库替代工作,泛微、蓝凌等国产OA系统已经在全国产平台上做了大量的替代工作。通过咨询这些企业可以看出,他们的OA系统主要是选择了国家认可的国产化数据库平台,并且重点选择了与Oracle兼容性较好的集中式数据库,比如达梦、人大金仓等。在大量的替换案例中,国产OA软件厂商已经对这些全国产平台从服务器到操作系统到数据库都做了全面的适配与优化,目前都是能够跑的比较平稳的。一些技术能力较弱的企业,在国产数据库替代上,也可以考虑先从OA等系统开始替换,积累经验,最后做出更加合理的选择。

不过国产数据库替换工作并不是如此简单的事情,很多企业有着更为复杂,规模更大,性能和可靠性要求更高的核心业务系统,因此他们的选择往往更为谨慎。这种企业自己的IT规模较大,IT能力也较强,因此完全可以通过自己的测试,找出一款与自己的业务特点比较吻合的系统来。我曾经问过一个大型的运营商客户,他们是否在考虑国产数据库替代的问题,他回答我说,以他们的技术能力,在需要替代的时候,马上就可以开展替代工作,这是他们技术完全可以支撑的。当然也不是所有的企业都有这种能力与信心,因此开展测试是目前在大型企业中普遍采用的方法。只不过有些企业采用的测试方法并不一定能够替你找到正确的选项。

目前数据库的种类很多,虽然对外接口上要么兼容Oracle,要么兼容MYSQL,或者说和PG差不多,不过其后面的架构、存储引擎等各不相同,在技术上也存在一些优缺点。如果我们仅仅使用TPCC/TPCH等比较通用的测试工具去做测试对比,那么我们可能最终会盲人摸象一样瞎选一通。这些测试工具对于数据库来说,其测试场景都太简单了,很难测试到一些我们今后面临的十分头痛的问题。

昨天在微信群里,有个朋友问如何做OCEANBASE和TDSQL的对比测试。面对这两种分布式数据库,可能有些朋友会觉得二者都是高度兼容MYSQL语法的数据库产品,也都是分布式数据库,那么二者是不是很相似?实际上并不是的,如果你的测试场景复杂一点,那么你肯定会发现二者的差异十分大。我建议这个朋友找自己业务中的一些比较复杂的场景去测试一下,一定要覆盖到大并发简单查询、超多表(7、8张大表甚至更多)复杂关联、大数据量输出(一次性返回数百万甚至更多数据)、超大型事务(一次性修改数百万甚至数千万条数据,在数据维护升级的时候,我们经常会用到)、大批量数据删除操作、两张大表的复杂HASH JOIN场景等这些比较复杂的场景。对于分布式数据库来说,大数据量载入的能力一般都不错,也都够用,因此测不测问题都不是很大。如果企业中有ERP/SCM等系统,用这些系统的数据和SQL做测试应该是最具有挑战性的。如果这些系统的复杂场景都能适用,那么这个数据库基本上能够覆盖你的企业应用了。

当然数据库选项并不一定都是从性能上的考虑,每个企业都有着自己的特点。总体使用成本是一个企业在数据库选型时必须考虑的问题。如果企业的应用系统大多数都是Oracle数据库的,很多系统比较老,迁移时希望应用改造尽可能少,那么选择与Oracle数据库兼容性较好的数据库产品是十分合理的选择。我们可以选择达梦、金仓、神通、海量等与Oracle兼容性较好的集中式,也可以选择OceanBase、Polardb-O等分布式数据库。

如果你的企业中大量使用MySQL并且在MySQL生态中已经投入了大量的资金,今后也准备主要以MySQL生态构建自己的国产数据库体系,那么目前也有很多选择。爱可生、万里开源、TiDB、OceanBase、HotDB、星环KunDB、中兴通讯GoldenDB、腾讯TDSQL等等一系列数据库产品都是可以考虑的选项。如果你的企业中还有一些数据库是Oracle,想尽可能少改动的迁移过来,那么选择Oceanbase可能是比较好的选择,因为Oceanbase有MySQL/Oracle两种兼容租户,MySQL租户与Mysql完全兼容,Oracle租户兼容95%以上的SQL与PL/SQL。

如果你的企业使用大量的Postgresql系列开源数据库,而且也希望继续使用下去。那么在做数据库替换的时候,选择PG兼容的数据库会比较好。实际上目前国产数据库产品里,很多都是基于PG开源代码开发的,再加上openGauss虽然是独立的开源数据库产品,已经与PG社区版本脱离,但是其基础还是PG数据库,在兼容性上也是十分强的。国产数据库中,人大金仓、瀚高、优璇等都是基于PG代码研发的国产数据库,MogDB、海量、神通等数据库产品都是基于openGauss开源项目的。

当然,对于很多企业来说,数据库替换的投资也十分大,因此在选择数据库上还有一个经济性的考虑。如果企业中的数据库规模十分庞大,那么我建议尽可能选择生态中既有开源又有商用版本的数据库产品,从而节约总体投资。

另外一个需要考虑的因素是运维和售后服务问题,昨天我的文中已经说了,目前国产数据库的运维服务生态还比较薄弱,因此运维问题也必须考虑。选择与开源产品较为兼容的国产数据库产品,今后在运维支撑方面和构建自己的运维能力方面有一定的优势。这些因素都是需要考虑的。

数据库选项要考虑的因素很多,我今天也只能说出其中很少的一部分,每个企业都有自己的特点,因此也会有一些其他方面的考虑。我今天所说也不见得正确,只是一种可借鉴的思路,如果你有些不同的见解,也不妨说出来,只有大家思考的多了,解决方案才会越来越清晰。不过我觉得,数据库国产化替代,最重要的还不是选,而是选之后的做。