有人和我讨论如何客观地评价某个国产数据库产品,我说在当前几乎没有可能存在能真正客观评价国产数据库产品的人,因为国产数据库的生产实践都还很少,人们对这些国产数据库的认知都处于比较低的阶段,因此想做出真正客观的评价是不可能的。
当年刚开始用Oracle数据库的时候,大家都觉得Oracle各种不爽,因此互联网企业高举去IOE大旗的时候,很多人跳出来说天下苦Oracle久以,终于有人跳出来干了。数年后,大家才发现,MySQL还不如Oracle呢。这其实就是认知的偏差导致的,大家刚开始只是看到MySQL小巧,易安装、易使用、易运维。有啥问题,重启一下大概就解决了。而且重启速度极快,对业务影响都不大。久而久之大家发现,MySQL虽然好用,毛病还是不少的,SQL写得差点,索引设计得差点,数据量大点,就不好使了。
认知上来了,评价也就更加客观了。有人批评我说这是不可知论。既然不好评价,那么我们怎么做数据库选型呢?实际上数据库选型也不见得就要十分客观地认知了各种国产数据库才可以做,事实上,在目前阶段想要客观地认知各种国产数据库也不大可能。
比如我们有一个需求,数据量很大,几十TB到上百TB,并发量很大,会话数超万,IO负载很大,用最高端存储有时候也出问题。存储过程很多,加在一起有几十万行。用户的改造上线时间很紧,没有时间做应用的大改造。事实上也改不动,系统已经开发了二十多年了,不断在往上叠加功能。而且数据也不能做历史归档,五十年前的合同现在每年还在计算收益。这个系统该如何做国产数据库选型?
对这个Oracle都跑得挺费劲的系统,可选的数据库反而很聚焦,在我的认知里,OceanBase可能是唯一的选项了。大不了多堆机器,上最好的SSD,大概还是能搞定的。如果OB都搞不定,那么换其他数据库肯定更搞不定平替这个工作了。也许我的认知不够全面,还有哪个国产数据库也能一战。这其实就是我说很难客观评价国产数据库的最主要的原因了。也许换个人,会得出相反的结论,这两种结论哪个是对的,恐怕只有试过才知道。但是用户投入上亿改造系统,也不能真的不靠谱吧,但是很多案例的实际情况就是如此,靠不靠谱,看领导更相信哪个人。想要对个对比也不是不行,找几个难度最大的模块,候选的数据库试试,看谁的效果好。这么做说起来似乎很容易,但是实践起来是成本很高的。我在几年前参与过类似的PK,在那次PK中我刷新了对很多国产数据库的认知,当然这些认知不见得有多客观,因为当时的测试场景有限。
如果不是平替,而是改造应用,那么选择范围就大多了,当年某国企做国产化改造,应用上线后,当时负责这件事的领导甚至进一步提出,今后我们这个系统中是不是可以把数据库彻底消灭了?因为通过应用改造,一个KV的文件系统也能把应用支撑起来了。只要肯改造,只要是能稳定运行不怎么宕机的数据应该都可以支撑起核心业务系统来。
另外让人认知与事实相差甚远的是国产数据库也在不断地发展,而且各个厂商之间的发展速度不太均衡,发展得比较快的进步还是挺大的。早些年用达梦数据库的时候,有客户说,达梦数据库不能太大,3-500M以内还是挺稳定的。后来听有用户说,达梦数据库不超过2TB用起来还行,最近又听说某个企业在数据库架构方案中提出达梦数据库的使用范围是不超过8TB的系统。从这些数据的变化,也可以看出国产数据库这些年也在不断进步。
综合上面的几点,一个普通的DBA,甚至是数据库专家,想要真正对目前国内常见的几十种国产数据库做真正深入的研究,了解其真实情况,并做出比较客观的评价,确实挺难的。其实数据库选型也不需要绝对的客观,选择一个适合自己场景的数据库就可以了。最重要的是走出第一步,走出去之后,哪怕走错了也不需要认错,继续往前走就好了,因为你也很难确定,往另外一个方向走是否也是错的呢!