数据库是要拿来用的,不是用来PK先进性的
周五参加了WAIC后又和一家上海本地的数据库厂商交流了一下午。等我要买高铁票回南京的时候已经买不到票了。好不容易刷到一张到苏州北的高铁票,我就上了车。上车后突然想起还不如就回苏州老家住一晚算了。到家后洗漱完毕已经快10点了,发现刚才我开了半天空调的房间里温度还是很高,仔细一看空调的工作状态似乎不太正常。于是试了试书房的空调,显然是能制冷的,不管怎么样先对付一宿,明早再找维修人员过来看看吧。
第二天,修空调的师傅看了看,说这台有问题的空调运行状态是正常的,空调没毛病,不过今年天热,乡下电网的电压不稳定,你这台变频空调在这种情况下,很可能因为电压不稳而导致压缩机无法正常工作,影响制冷效率。你书房那台老式的空调反而是比较皮实的,所以这几天你还是睡书房吧。老师傅最后说最近这几天遇到多起这种情况了,村里已经有些人家把变频空调折旧换了普通空调了。这个结果倒是有点出乎我的意外了,技术更好的变频空调反而适应不了相对不稳定的电网,普通空调反而更皮实。在乡下这样的应用场景中,技术相对落后的普通空调居然完胜先进的变频空调。仔细想想,在数据库领域,似乎也是如此。30多年前,当时技术上相对简单或者说简陋的Oracle在与一系列架构水平更高的产品PK中完胜了几乎所有对手,获得了全面的胜利,而一些技术上颇有特色的数据库产品反而都折戟沉沙了,这种胜利在早期大多数是来自于其使用门槛较低。数据库最终还是要拿来用的,而不是为了PK技术的先进性或者某些领域的领先性的。
我和很多搞数据库的朋友聊天的时候,总是听到他们谈数据库的架构如何先进,使用了什么先进的技术,有哪些方面的独创技术。但是很少听到他们谈自己的数据库产品和客户应用场景适配方面的优势,似乎这些问题都是和应用层接近的,没啥技术难度,不太值得他们关注。实际上这样的数据库开发者与用户完全脱节了,用户和数据库厂商对数据库的需求完全是不同的,数据库厂商眼中的先进性与用户所需要的方便省心地使用数据库的需求出现了维度偏差,用户其实不关心,甚至不懂数据库厂商自己觉得很HIGH的先进性。一个仅仅知道写SQL的用户是不会去关注SQL执行引擎里是否使用了向量计算,他们只会关心自己的SQL是不是能够又快又准确的获得结果。在最近这两年的数据库产品的发布会上,我很少看到某个数据库厂商宣称更好的支撑了某些用户应用场景,而都是介绍一些用户都不大明白的高大上的技术。我不太清楚他们请来的最终用户GET到了这些新特性没有,搞了多年数据库的我,也需要边看边翻百度才能完全搞清楚这些对我而言还有点“新”的名词。
前阵子在帮一个用户测试一个数据库国产化改造项目,某数据库不说最后如何,光是把数据从Oracle迁移到目标国产数据库中就经历了十分痛苦的过程。测试时迁移的数据量不过几个TB,而用户的目标数据库有近百TB,对于今后利用厂家提供的迁移完整的数据库,基本上已经把用户劝退了。实际上以这家企业的规模与技术能力,写出一个高水平的数据库迁移工具来并不困难,只是他们并没有把业务重点放到这种体现不出技术水平的地方而已。还有一些新锐数据库公司,推出了架构设计与理念都十分新颖,创意满满的产品出来,各项技术指标都十分亮眼。不过如果某些用户真的选择了这些产品,那么随之而来的,一定不会是很好的使用体验。因为除了所谓的创新满满的核心,其辅助工具简陋得令人发指。这也难怪,因为企业规模本来就不大,根本没有资源往这些不太重要的地方投入宝贵的研发资源。
这些技术含量很低,但是个性化需求十分复杂的“小”工具就如此不重要吗?答案肯定是否定的,今年年初我和一个数据库厂商交流的时候,问他们目前研发主要投入在哪些方面。我以为我听到的回答应该是SQL引擎、CBO优化器、存储引擎、Oracle兼容性等比较核心的地方。没想到他们的回答令我十分意外,他们的研发负责人说,目前为了尽快改进用户现场反馈回来小的需求,他们接近一半的研发人员都投入到了周边小工具和小功能的新需求上去了。今年信创需求十分强烈,为了让用户把数据库用爽了,他们的主要研发力量在不断地优化这些看上去技术含量不高,但是十分重要的小功能。
我想只有数据库产品真正的被用户认认真真的用起来了,我们的数据库研发人员才会感受到他们以前无意中的一些偷懒和简化处理,就变成了用户使用时的痛苦不堪。数据库是要拿来用的,只有真的有大量的用户在认认真真的用你的数据库产品了,你才会知道用户需要的到底是什么样的功能吧。