
我发现很多企业开始鼓励把原来用数据库完成的逻辑从存储层迁移到应用逻辑层,让数据存储和业务逻辑逐渐解耦。
这使得很多很复杂的数据库操作变得越来越少用:什么连表查询,外键,存储过程,触发器。。。阿里好像还规定了“《阿里巴巴JAVA开发手册》里面写超过三张表禁止join”。而且越来越多的数据库表设计倾向于:主键可sharding水平拆分扩容,尽量避免无主键查询操作。这已经成为我见过的很多企业在使用数据库或者开发数据库时所推荐的标准范式。腾讯的tdsql就是这样一个典型,已经在很多银行里推广使用了(银行账户先天就是绝对主键)。
在这个情况下,原本并未对这些复杂操作进行太多优化的mysql存储引擎弱点不再凸显,而免费(有一些特殊使用case需要购买授权,这个在oracle收购之前就有这个),开源让bug不需要找官方支持就可以修正,允许第三方或独立分支改进优化等特点却开始吸引了一些有能力的大公司。这些公司如果又特别张扬爱分享,就免不了让很多人耳朵里充满了这样的声音:mysql是否快把oracle淘汰了啊。事实上BAT应该都用过ORACLE但各自现在应该都很少用了,不知道BT2家是什么时候弃用的。
反过来,oracle sqlserver 等依然在持续的对那些复杂的操作的性能进行优化,所以对这方面的性能,架构有依赖的企业,短时间不太可能会迁移自己的基础存储设施的。其次,学校里学习数据库课程时的主流声音并不倾向于禁用这些复杂操作,相反把这些复杂操作和相关设计原则列为数据库学习的主要内容,所以也不断让新的血液补充这块份额。加加减减,ORACLE数据库的份额,好像这些年从来不见减(我只有些感性认识但没有真正的数据哈)?
