关系型数据库(Relational DataBase Management System),简称 RDBMS。说起关系型数据库,我们脑海中会立即浮现出 Oracle、MySQL、SQLServer 等数据库,这些都是我们常用的关系型数据库。
关系型数据库最大的特点就是在其关系这个词,它可以保存数据库中的各种关系。那么这个关系如何理解呢?我们就拿学校的一个例子来讲吧。在学校里,我们有老师(Teacher)、学生(Student)、课程(Course)这几个实体,而这几个实体之间都是有一定关系的。例如:一个老师能教多个学生,一个学生也能被多个老师教,所以老师和学生之间的关系是N:N的关系。于此类似,学生与课程也是N:N的关系。
关系型数据库的发展历程在1979年,Larry Ellison 使用汇编和C语言主导开发了第一个商用关系型数据库 Oracle。在此之后的接近16年内的时间,Oracle 数据库一路奔跑,成为了世界上最流行的关系型数据库。
在1989年,微软(Microsoft)也发布了一个关系型数据库 SQL Server,但其同样也是一个收费的商业型数据库。
直到1995年,瑞典公司MySQL AB发布了 MySQL 数据库的第一个版本,从此终结了关系型数据库只能用 Oracle、SQL Server 这些收费软件的神话。
在 MySQL 诞生后,因为其开源、免费的特性,所以其得到了众多中小使用者的拥护,其用户量增长迅猛。而在这期间,MySQL的主人也几易其手。在2008年,Sun 公司收购了 MySQL AB 公司,同时也获得了 MySQL 数据库的管理权。在 2010 年的时候,Oracle 公司收购了 Sun 公司,获得了 MySQL 的管理权。而就在 Oracle 收购 Sun 公司的当天,因为担心被 Oracle 收购后MySQL的前景会受到限制,被称为 MySQL 之父的 Michael Widenius fork 了 MySQL 的一个分支,启动了 MariaDB 项目。
果不其然,在被收购不久后,MySQL随即推出了相关的收费版本。虽然原来的免费版本仍然可以使用,但在可预见的未来,Oracle 投入到 MySQL 中的精力可能很有限。毕竟Oracle是一个商业公司,也是要养家糊口的。
现在我们可以了解到现在主流关系型数据库的诞生和发展概况,主要可以分为下面几个阶段:
1979年,Oracle 数据库诞生
1989年,SQL Server 数据库诞生
1995年,MySQL 数据库诞生
那这些关系型数据库都有什么差异呢?
它们各自的适用场景又是哪些呢?
MySQL 与 Oracle 之间的恩怨说到上面这三个数据库,很多人的印象是 Oracle 很大,但是很难使用。MySQL 使用很方便,似乎是最好的选择。SQL Server 是最没有存在感的一个数据库,基本上处于高不成低不就的状态。
从 db-engines.com 网站关系型数据库市场份额排名来看,现在市场份额最高的还是 Oracle 数据库,MySQL 次之,接下来则是 SQL Server 数据库。
上图的排名似乎远远颠覆了我们的日常认知,因为在我们周边貌似很少人使用Oracle,但为什么其市场份额能这么高呢?
任何事情都不可能空穴来风,Oracle能占有这么大市场份额是因为其在海量数据的处理上更具有优势,并且能提供一整套的数据存储解决方案。所以在一些非常大的企业里,这些企业拥有庞大的资金能力,所以它们会选择用钱购买解决方案,而不是自己雇佣人员使用 MySQL 去维护。总的来说,Oracle比起MySQL具有下面的优点:
众多的数据库特性,能满足企业的多样性需求
海量数据处理的优势
一整套数据解决方案
但是 Oracle 的缺点也很明显,那就是价格昂贵。
因为Oracle有上面这些特性,所以Oracle更加适合那些大型跨国企业。因为这些企业资金充足,能承担得起Oracle的昂贵费用。另一方面,这些企业的数据量也是非常庞大,它们更注重数据的安全性和高效存储,并且关心的出现问题的时候能快速解决,Oracle提供的一系列服务正好符合它们的需求。
而对于一些中小型企业或者个人使用者来说,一方面Oracle软件非常笨重,另一方面Oracle授权费用昂贵,对于它们来说无法承受。而它们的数据库又恰好不是特别大,所以对于这些使用者来说,使用MySQL已经能够解决它们的需求了。那么也就无需去付费使用Oracle的数据库了。
总结如果单单是从数据库性能来比较的话,那么Oracle数据库无疑是天下第一、吊打MySQL的,毕竟Oracle比MySQL诞生早了10多年。但很多时候还是得结合具体的使用场景来做出合适的选择,毕竟杀鸡不用牛刀嘛,能不用钱解决的,为何要付费解决呢!
所以当你的数据量很大,并且你自身并不缺钱,那么你直接上Oracle吧!如果资金有限,数据量也不大,那么就用MySQL吧!