经常有朋友问我,在做国产数据库替代选型的时候,是优先考虑兼容性呢,还是优先考虑性能呢?我们可能会遇到这样的情况,有些国产数据库的性能一般,但是兼容性和稳定性不错。有些数据库性能很好,但是与Oracle、MySQL等原有数据库的兼容性不太好。
这个问题其实是比较复杂的,你无法用一种回答来适配企业数据库应用的所有场景。哪怕是同一个企业,甚至同一套系统,在不同的场合可能都会有不同的答案。因此在做决策前,首先要对自己现有的应用系统进行分析,同时要考虑兼容性和性能哪个优先的问题。
如果用户有大量的系统(比如超过100套)要做国产化替代,这些系统的规模都不是很大,对性能的要求也没那么高,比原有的Oracle慢得不是太多就能够接受,那么在做国产化替代选型的时候,应该以兼容性作为优先考虑因素,选择兼容性最好,迁移成本最低的数据库产品。这样可以节约大量的迁移改造成本。
如果涉及到关键的核心系统,对响应速度和响应速度的稳定性都有要求,那么必须选择稳定性与性能都比较好的产品,兼容性要求作为次要要求。如果选择兼容性相对不足的数据库产品,就要考虑在研发上加大投入。考虑到企业中关键核心系统的数量不多,并且改造的研发投入是有保障的,而面对兼容性不佳的数据库,最主要的问题是加大迁移投入成本,这个成本是一次性的,而性能与稳定运行则是长期成本。从总体成本来说,迁移成本占比不高。
如果对于一些比较难于改造的老系统,可能源代码都已经不全了,那么只能选择兼容性优先的策略,在性能优化方面只能通过优化系统级配置、索引、HINT等方式来实现。
在考虑兼容性的时候有几点必须注意,首先数据库厂商所宣称的兼容性并不一定和你的应用场景相适应。几乎所有的数据库厂商都会发布兼容性百分比的问题,很多数据库号称与Oracle的兼容性也高达95%+,我们不能被这个数字给蒙蔽了。你要想想,大家都是兼容SQL标准的,哪怕不做兼容性改造,数据库之间都是存在一定兼容性的。其实你要关注的兼容性可能就在这个毫厘之间,从用户自身的应用系统去分析兼容性,才能获得更加客观的评价结果,做出合理的数据库选型。
