政企数字化转型大潮叠加国际形势风云变幻,让国产数据库遇到了千载难逢的历史机遇,不过面对的挑战也十分巨大。在这个巨大的风口上,猪都可以飞得很高,国产数据库的快速发展也就是必然的了。这些年国产数据库发展十分迅速,每年都有不少新版本新产品发布。每每新品发布,总是要有些新的功能,特别是创新性的功能出现才好意思拿出来见人。不过在每个创意满满的发布会上,我总是觉得似乎真正的创新并不那么丰满。很多所谓的新功能可能都是默认安装直接关闭的不够成熟的特性,或者弄些不知道哪些用户会用到的边缘功能作为核心功能来吹嘘。专家们也美其名曰:“弯道超车”。好好的康庄大道不走,为什么非要去弯道超车呢?这是因为敌人很强大。挡在国产数据库们前路上的是老牌帝国主义-Oracle、DB2、SYBASE以及这些年兵精粮足的新列强-谷歌亚马逊之流。就连开源数据库都混得风生水起,MYSQL、PostgreSQL、Mongodb,…,不一而足。我们的很多国产数据库还是人家的徒子徒孙,因此正面战场上硬刚肯定是占不了太大便宜的,换个玩法,搞搞游击战,麻雀战,弄个弯道,也许还能超车。于是玩个十八路诸侯讨董卓,用分布式数据库围殴Oracle;弄个人工智能数据库,功能性能全面超越Oracle等等;最不济也搞个单机200万TPMC,性价比全面碾压一下Oracle,这些场景每每会在国产数据库的产品发布会上上演。实际上用户的需求很简单,更简单、更易用、更稳定、更高效、更经济,可持续发展,这样的数据库产品就是客户需要的。不过要实现这些目标,其实不易,因为这些都是考验一个数据库产品的内功的,来不得半点花架子。有些客户在实际选择国产数据库的时候,要求已经降得很低了,只要能用,稳定,不贵,就可以考虑。虽然用户的要求并不太高,但是给我们的数据库厂商提出的要求并不低,数据库是企业信息管理系统中的核心部件,如果数据库干不了的,那就一定需要应用去干,这样企业的数据库使用成本就会大幅增加。企业在选择数据库产品的时候,是不得不考虑这个问题的。我遇到过一个客户,他说了一句大实话:“能让硬件去干的事情,我们肯定尽可能不麻烦数据库,但是必须让数据库干的活都得让应用去解决,那么我们就受不了了”。而让数据库把数据库该干的活都干好,就需要考验我们的数据库厂商的内功了。把SQL引擎做好,把优化器做好,把存储引擎优化好,把高并发下的事务锁性能提升提升。这些活干好了,用户在使用你的产品的时候是可以有深刻的感受的。但是这些工作在产品发布会上似乎亮度不够。如果你说我们把WAL日志的大小减少了7%,我们把主备切换时间从30秒提升到10秒以内,这些指标肯定没有DB4AI、AI4DB、单机TPMC 200万这些东西来得高大上。但是减少7%的WAL日志量,把主备切换时间缩短到10秒以内,都是需要投入大量资金去干的事情,其投入远远超出一些外观上看上去很炫酷的新功能。2015、16年的时候,我们帮一家国企基于PG数据库定制一个国产化版本。当时我们也没有能力去改PG核心,于是就做了些讨巧的工作,做了一套和ORACLE完全兼容的数据字典查询视图,类似DBA_TABLES之类的,同时做了一套常用的与Oracle兼容的函数、存储过程,另外通过对SQL语法解析器的修改,做了一些SQL语句上与Oracle兼容的修改。当时公司里也没有对PG数据库特别熟悉的人,于是一个老家伙带了几个甲方的小伙子一起搞了3-4个月,居然还搞出点模样了。从这件事上,我知道了某些数据库厂商所说的在开源代码上做了大量的工作的“大量”是个啥概念了。如果我们的国产数据库厂商,能够真正的从客户的需求出发,多下点功夫在里子里,而不是总把资金投放在面子上,少走弯路,多练内功,我们的数据库产品才能真正让我们的客户放心。