为什么很多公司都开始放弃 Oracle 而使用 MySQL？
题主的问题：为什么很多公司都开始去oracle而使用mysql? 关于这个问题已经看到很多很多很多次了，在浏览了各家之言后，就借知乎这块宝地，我也写一点我的看法，可能会有点长。 首先，题主直接问为什么，这个明显不符合知乎的规矩嘛，咱要先来看看是不是真的很多公司开始去oracle而使用mysql。 从图片来看，oracle和mysql的流行程度没有明显的逆转，oracle还是关系形数据库中的老大。 我没有找到在互联网行业中的统计数据，希望有知友补充。 在知道了是不是之后，正式开始答题。 我本人是一个mysql dba，对于oracle了解不多，所以要我直接从正面去解答这个问题呢，多多少少都是会有一些偏袒的，所以我想把这个问题转化一下，就是一个公司在作出数据库选型转变的时候，需要考虑哪些方面的因素？淘宝从oracle转为mysql可以作为这个问题很好的一个例子。 成本因素 我们都知道mysql是开源的，也就是说完全免费，而oracle价格不菲，如果再考虑到搭载oracle的服务器和存储设备的话，那直接可以看见的成本差距确实很大，这是现实。但是这样就简单的判断从oracle迁移到mysql就一定节约成本，我觉得这个事儿不好说。直接根据产品本身购买价格算成本的方式不能说错，但是肯定不全面，还漏了不少东西要算。 风险成本：2008年的淘宝是一辆在高速公路上飞驰的汽车，业务发展是很快的，这个时候要迁移数据库这样的基础架构，那必然是牵一发而动全身的事情。就好比要给这辆在高速公路上的汽车换个引擎，车还不能熄火，这个事情本身的难度和风险就是很大的。 技术成本：其实上面提到了迁移过程的难度大。主要有几个方面，业务不能停，数据一致性，大量的业务可能面临解耦，重构等等，这些做完整体架构可能都变天了，这个是需要大量开发人员费时费力还不一定就能百分百做好的事儿。如果没有一点前期的技术积累，几乎不可能完成，淘宝这方面的实力确实国内领先（这里感叹一下）。 人力成本：大量开发人员做重构的时候还是要拿工资的吧。新技术的学习成本也要算进去，这个包括了运维的dba和各个业务的开发人员，凡是需要用db的人都要新学一遍，这也要花不少时间和精力。还有在决定迁移的这一刻，对于之前的一些技术的积累，包括人员的培养等方面，一定是有浪费的，物体的运动轨迹发生突变往往意味着能量损失，这是一个道理。随着技术转型，一批老的出色的oracle dba和开发人员的流失带来的损失更难估量。 如果把这些七七八八都算进去的话，那还真的一定节约成本么？至少在短时间内，这个事儿不好说，反正我是老板的话，我算不清。 业务因素 这里可能用“业务场景”这个词解释更加合适，或者说这是一个数据库选型的问题。根据淘宝架构师在公开场合的描述，当时淘宝的业务量发展太快了，这使得原本基于oracle旧架构的系统扩展性不能很好支撑整个业务了，架构解藕这件事已经是车到山前了，这就意味着业务需要分拆，数据库需要分拆。如果业务只需要十几个或者几十个集群就能承载的话，那我觉得oracle完全ok，但是现在大型互联网公司的业务规模都是需要上百集群，上千机器来承载，对于这样的规模，mysql这样轻量级的数据库更合适。所以这里不是谁更好的问题，只是哪种数据库产品更适合当前及未来公司的业务场景，换句话说，就是“物尽其用”而已。现在不是也有很多数据从mysql向nosql迁移了么。 技术趋势 当前互联网技术发展有个整体的趋势，就是开源产品为主流。oracle是这个世界上到目前为止最优秀的关系形数据库产品，但是他闭源，闭源就意味着在整个互联网大行业背景下，这个产品本身就可能变的越来越小众，对于一家互联网公司使用的基础架构本身很小众的话还不是什么太大的问题，但是其导致的技术上的壁垒就很难接受了，自己最核心的基础架构掌握在别人家手里，核心技术都是人家的，这就好比芒刺在背。打个可能不太恰当的比方吧，有一天你LOL天梯打到了2000，但是你发现你的圈子里已经没什么人玩这个了，别人都去玩另外一个游戏了，而且还是别人自己开发的游戏，代码能自己改，能自己写外挂能加英雄加功能。你当然可以继续玩LOL，你可以始终是个顶级玩家，但是同时你失去了成为顶级游戏开发者的机会。 说到这里我想再延伸一下，有个成语叫“不破不立”，拿淘宝迁到mysql的例子来说的话（迁mysql我想可能只是一部分），淘宝在这个分拆重构的过程中积累了很多技术。淘宝内部人员也在公开场合也提到过，淘宝在那段时间诞生了很多出色的架构师，积累很多新技术，比如很多中间件，底层针对mysql的优化，运维工具等等，可能没有当时的那次变革，阿里的RDS出现可能还要晚几年，甚至出不来。 高层意志 我看到过有淘宝系的人说那次迁移其实是某博士的一次政治运动，反正咱不是阿里的人，咱就瞎猜了哈。迁移这事儿谁提出来的不好说，但是得到高层的首肯是必然的，甚至我觉得这样的规模必然是有高层的压力的，如果这个事情说服不了大老板，很难想象下面上千的开发人员行动能统一。 大概就先到这吧，写得有点乱，题主凑合看了，好像说了半天也没说去oracle而使用mysql到底好不好，题主可以自己根据以上因素自己掂量掂量。至于淘宝从oracle迁到mysql好不好，我挺某博士。 利益相关：mysql dba