为什么传统行业几乎都用Oracle，而互联网行业几乎都不用Oracle呢?
知乎老习惯，先说是不是，再说为什么？ 其实早期得互联网公司曾经不仅是Oracle 客户，还都是大客户，最典型的代表有两个，一个是亚马逊，一个是阿里巴巴，后来两者都纷纷去掉了O，可见并不是什么ZZ因素，一定有一些原因，我们一起来逐步拨开看看： 2. 互联网时代需要的数据库是什么？ 到了互联网时代，情况突然变了。比如我们都喜欢的知乎，微博这些信息流的App。 如果我发帖的瞬间，同时可能有很多人都在发帖，如果我们的App在全世界都在用，瞬间的用量峰值可能会因为某个热点事件突然变得很高，这个和上世纪80年代的企业级应用完全不同，即便是银行，我们还是可以保证当时的峰值大概有多少，因为营业点和ATM机的数量也是有限的，那时候你无法在手机上直接处理任何一笔交易。但是互联网的到来改变了一切，这个峰值不仅难以预估，而且可能和平时的平均值差别巨大。这样为了确保一个峰值，就去购买峰值所需的Oracle的License数量可能特别大。（Oracle是按照一个类似CPU数量或者用户数量来确定价格，你可以简单理解为用的峰值越高，你需要买的license越贵），这是一笔巨大的花费不说，而且还有另外一个问题。 3. 互联网时代的应用需求不同。 在我之前的一个回答里面写道了, 亚马逊工程师在优化自身的数据库的时候， 他们发现“： ” 大约70%的操作是键值类型的，其中只使用主键，只返回一行。大约20%的用户会返回一组行，但仍然只对单个表进行操作。“ 这是一个伟大的发现——70%的操作竟然都没有使用关系数据库的核心功能！为什么会这样呢？因为互联网时代的应用发生了变化。我举个例子，你如果设计一个类似亚马逊的电商网站的购物车，你允许客户把自己想买的东西放在里面。但是你设想一下，如果突然某个畅销的产品被卖家下架了，但是这个产品被很多的客户放在购物车里，你回想一下，银行交易需要确保的那种强一致性，在这里有必要么？如果你想强一致性，就需要这个商品下架的时候，清空每一个曾经加入购物车的这个商品。这样任何一个修改产品的操作，都可能有无数个关联的交易在那里等着更新，可能商品的目录更新这个事情，就会变得巨慢无比，而且毫无意义。为什么说毫无意义呢，比如我在9点购物车放了一部手机，到10点商家卖光了，把这个产品下架了，这个时候如果商家只是在自己店面的页面更新，但是你的购物车并不实时更新，即使最差的情况是什么呢，就是10点的同时，你提交了一个购买的请求，这个购买的请求是需要保持一致性的，这个时候商家会返回一个失败，因为这个商品不存在。你再刷新一看，哦，卖光了。。。你的用户体验丝毫不受影响。 再比如互联网的微博，如果我发一个微博就发上去，更新的时候，我不需要强一致性更新，那么可能和我距离近的朋友第一时间看到了，距离远的朋友可能稍晚一些看到了，有关系么？基本没什么影响，这些叫做分布式处理的方式在互联网应用非常普遍。 4. 互联网时代有了更多选择，一方面开源数据库逐步成熟，MySQL， Postgre这些后期之辈，陆续成熟且有越来越多的程序员能够熟练掌握，并且利用开源实现接近商业数据库的能力；另外一个方面，云厂商的出现让这个门槛更低，你不敢保证MySQL使用达到商业数据库的可靠性，你可以借助云厂商的产品，比如亚马逊云计算的托管数据库Aurora（兼容MySQL），这里非广告，只是告诉大家这种云厂商的产品让你用开源，性能和商业数据库接近，并且价格低廉，且无需运维或者很少运维成本，这样的情况下，中小互联网厂商就更多采用云厂商的托管开源数据库，自然不用Oracle这么昂贵的产品。 5. 数据发生了变化，前面讲到微博这种信息流的数据格式很明显和银行交易类的关系格式有重大区别。其实互联网时代，日志，物联网等产生了更多奇怪的数据格式，比如时序数据，一个物联网的温度计，可能每一毫秒钟发一个温度信息，你如果拿关系数据库去存，可能很快就爆表了。。。但是物联网就是这样，而且这种数据几乎从不更改，就是按照时间序列一直存。比如股票交易所的大盘数据也是类似，这种特殊数据格式带来的需求在过去可能用关系数据库凑合一下就可以了，但是今天，越来越多的不同类型格式需求，就需要按需设计和采用不同的数据库。这些数据库因为有云的托管，你也不太需要运维，这样采用的成本也不高，比如亚马逊aws的Timestream数据库，官方号称两百万次写入1KB的数据，价格才一美金，于是，越来越多的企业开始按需去采用专门构建的数据库，而且大量采用云上托管，这些都不是Oracle数据库可以做的。 所以，各方面的综合因素，导致今天的Oracle跟不上时代，也就逐步被慢慢取代了。前几天，看到Gartner的全球数据库市场排名，亚马逊AWS取代了Oracle在全球数据库厂商的位置，一个时代就这样慢慢的被改变了，不知道我当时在Oracle 10g某个Package里面的代码是否还在？