首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么银行几乎都用Oracle,而互联网单位几乎都不用Oracle?

这种情况都是行业应用特性和数据库自身对应特性决定的。Oracle是付费闭源大型数据库。我们可以理解为大而全的数据库,它可以支持很大的并发,很大的访问量,目前是OLTP联机事务处理过程最好的工具。而Mysql等是开源免费的中小型数据库,还是有很大不同的。下面我们详细看一下:

1、资源占用方面不同

oralce在底层计算资源上,它默认就会占更多资源以保障Oracle的高效并发处理。oracle在启动后,它占用的内存远大于mysql等这些开源数据库。所以,银行等传统行业的核心Oracle数据库一般都会配备并发性能高的小型机来作为基础硬件支撑。一般会采用oracle RAC+DataGuard来实现。

Mysql本身就是针对中小型数据库的,所以默认占用的资源也是较小的。互联网企业是通过以量取胜的方法来满足资源需要。通常采用大量的PC服务器组件集群来实现。

补充一点,oracle默认对事务是完全支持的,而mysql则只有innodb才支持。

2、并发的不同

在银行应用中,我们可以想象到,每天都有很多人对账户进行操作。而且通常都是读写同时进行。从技术上说,大量的写并发会导致写入冲突。为了保障数据的一致性,一次只能有1个会话可以写入。oralce为了保障数据的高并发,采用的行级锁,只锁定SQL语句要写入数据库对应的数据行。这样子就可以保障其他并发用户依然可以写入其他行。这和银行的银行业务是非常吻合的,所以银行还是使用Oracle居多。

而Mysql只有innodb下才有行锁,但该行锁需要通过给索引项加锁来实现,这种innodb行锁主要分为3种:分别是Record lock(对索引项加锁)、Gap lock(对索引项之间的“间隙”、第一条记录前的“间隙”或最后一条记录后的“间隙”加锁。)、Next-key lock(前两种的组合,对记录及其前面的间隙加锁)。这种行锁意味着,如果不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,实际效果跟表锁一样。互联网企业在应用开发商也采用微服务架构,尽量将大应用拆分成很多微服务来实现,这样每个微服务的表都很小。这样可以减少锁冲突。

在大量并发读取数据方面,我们同样要保障读取数据的一致性。Oracle通过在undo表空间中构造多版本数据块来实现读一致性,支持serializable的隔离级别,可以实现最高级别的读一致性。每个session 查询时,如果对应的数据块发生变化,Oracle会在undo表空间中为这个session构造它查询时的旧的数据块。这也是银行等传统行业所需要的特性。

而mysql虽然也有undo 表空间,但只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。对互联网行业来说,因为采用了微服务架构,每个表都很小,基本影响就很小了。

3、数据安全性的不同

oracle为了保障所有的事务数据都可以恢复,采用在线联机日志。每一次的SQL操作都会被写入在线联机日志中,如果出现数据库或者主机故障,Oracle可以通过联机在线日志来恢复用户提交的每一个操作数据。这个特性也正好符合银行业务的使用特性。

而mysql则没有这个机制,默认提交sql语句,但是如果更新过程中出现db或者主机重启的问题,可能会丢失数据。但互联网企业采用分布式集群架构,也就是尽量减少主机和db故障,来减少这种数据丢失风险。

4、复制备份的不同

oralce在做数据复制时,既可以采用推也可以采用拉的方式来进行数据复制。同时,Rac集群和Dataguard的灾备机制可以保障一个库出现问题时,可以自动切换。备份数据不需要锁定数据也能保持数据一致性。当然各种配置也是相当复杂。但收费软件有专业服务工程师为银行服务。

mysql则不同,它在数据复制方面配置比较简单,主库出现问题时,备库可能也会丢失数据。而在备份方面,mysql逻辑备份需要锁定数据才能保障备份数据的一致性。互联网企业也是需要靠分布式和微服务架构来解决这个问题。

5、收费不同

Oracle功能齐全,当然收费也是最贵的,按你主机的物理CPU收费,随随便便都是大几十万起步,买个4个CPU就已经上百万了。而且,每年的维护费还非常贵,你如果中途敢不续维保费,下一次觉得问题大了再来买原厂,原厂就要求补齐所有遗漏的维保费。利润不高的企业还真未必用得起,银行这些高利润的企业是可以的。一般利润的企业很多都是盗版使用,被Oracle查到就得罚款。

Mysql就不同了,开源软件完全免费。只需要自己有技术能力会定制、配置、维护它即可使用。互联网企业一般都会养一帮DBA或者外包给第三方服务公司来维护管理。

总结

总之,银行等传统行业之所以选择闭源收费的Oracle,是因为他们的业务和oacle的特性决定。互联网企业选择开源免费的Mysql也是他们的业务特性决定的。所谓存在即合理也是这个道理。每个行业都会选择最适合自己的解决方案。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201004A0AKMR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券