上周看到老白公众号的一篇文章。其中写到一句大实话:“能让硬件去干的事情,我们肯定尽可能不麻烦数据库,但是必须让数据库干的活都得让应用去解决,那么我们就受不了了”。
我就以上实话说说我的看法,前半句是说硬件提升了,硬件能解决的,那么就不会抠抠索索的限制这个限制那个。数据库本来就够复杂的,别让他再复杂了。但是如果数据库的本职工作如果都不做,比如锁,都要靠程序去控制,那这还怎么用?
现实中我还真见过数据库能做,但是非要人去做的。比如说数据同步和锁。没办法微服务了。我也听过有些人有观点是要淡化数据库,似乎数据库是一个不重要的组件。或者说主导的应该是应用程序,而不是数据库。其实大家回看,应用程序几乎都是围绕着数据库而存在的,基于数据库开发。程序是舰队,数据库就是旗舰。程序是旗舰,数据库就是基地。不管用java、Python最终几乎都是要连接数据库的。NoSQL也是数据库。因为除非是静态页面,否则数据要动起来,数据在哪里?只能是在各式各样的数据库中。数据库不认java、Python只认SQL。
也有一种想法是做通用的,不想被一种数据库绑架。其实每种数据库的基因不一样,比如有的表是堆表,有的是索引聚集表。有的是B-tree索引有的是LSM-tree。怎可能通用?退一万步说有这么一种,那么一定是任何一种数据库都不沾边的,什么特性都没有的。就是一个在线的excel。
阳振坤老师(蚂蚁金融CTO)在死亡之谷中写道:我直接截图了。
高人都知道应用开发和数据库有一个适配关系。为什么说去O难,一个是O的确很好,还有一个是不管是用什么替代,都要重新适配,应用重写,难度大。如果说一个系统说他要全部重写,那是可能去得掉的。可能有人说被一个数据库绑架了,某种程度上可以这么说。去O还是去ABCDEFG,就是从一个绑架的换到另外一个绑架的。
我以前也经历或者听说,一个公司在选型开发语言或者数据库时候总是担心绑架或者这个消失了。其实最后发现技术都没有消失,这家公司先消失了。最好的数据证明就是Java在用,MySQL也没闭源、Oracle也没退出中国、PostgreSQL也依然在用、TiDB还出海了,OceanBase也出单机版了。别想那么多,这几年倒是因为疫情等等,倒闭关门的公司太多太多了。就是没倒闭的也是裁员、裁员、国内国外都是这样。
增强自己能力掌握了就不是被绑架了。有的公司有几个OCM或者找第三方服务,用Oracle就不买官方服务了。毕竟有的人能力就是强。(就是没补丁了,坚持几年等新版本,再买。我还是支持买许可的啊)。
有的用MySQL也买服务的。(当然我还是推荐买MySQL企业版,也就是买服务,不丢人),TiDB、OceanBase都应该买服务,毕竟大部分人能力有限嘛。本来用开源也不是说能省钱,开源需要付费给专业的数据库服务方。不能白嫖了数据库,还白嫖懂数据库的人。
总结:1本来该数据库做的,别自己给自己找麻烦。
2应该围绕着数据库作为核心来,不要弱化数据库
3绑架不绑架看自己有没有能力,没能力的才是绑架
4商用买许可,开源买服务
5多给点钱




