关系型数据库(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吧!

数据库历险记(一) | MySQL这么好,为什么还有人用Oracle?的更多相关文章

  1. 数据库历险记(三) | 缓存框架的连环炮 数据库历险记(二) | Redis 和 Mecached 到底哪个好? 数据库历险记(一) | MySQL这么好,为什么还有人用Oracle? 面对海量请求,缓存设计还应该考虑哪些问题?

    数据库历险记(三) | 缓存框架的连环炮   文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区.点击链接扫描二维码,与500位小伙伴一起共同进步.微信公众号二维码 http://p3n ...

  2. 您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧

    转载至: http://www.cnblogs.com/Imaigne/p/4153397.html 您的项目引用了最新实体框架:但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mys ...

  3. 4月数据库流行度排行榜 MySQL能否追上Oracle

    4月的数据库流行度排行榜可谓看点十足.闲言少叙,先上图: 前十名中,名次上升的都是NoSQL数据库,NoSQL凭借其对大数据处理的优势,发展越来越快.NoSQL是对众多非传统关系型数据库的总称,按存储 ...

  4. 腾讯云数据库团队:MySQL AHI 实现解析

    MySQL 定位用户记录的过程可以描述为:打开索引 -> 根据索引键值逐层查找 B+ 树 branch 结点 -> 定位到叶子结点,将 cursor 定位到满足条件的 rec 上:如果树高 ...

  5. 腾讯云数据库团队:MySQL数据库的高可用性分析

    作者介绍:易固武,腾讯高级工程师,参与腾讯账号安全建设,腾讯数据仓库(TDW)优化改造,腾讯云数据库等项目,对大规模分布式存储和计算系统有浓厚的兴趣和经历 MySQL数据库是目前开源应用最大的关系型数 ...

  6. Learning-MySQL【1】:数据库初识及 MySQL 的安装

    一.什么是数据 数据(Data):描述事务的符号记录,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中描述一个事物, ...

  7. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  8. 数据库优化之mysql【转】

    1. 优化流程图 mysql优化(主要增加数据库的select查询,让查询速度更快) 2. 优化mysql的方面 主要从以下四个方面去优化mysql ①存储层:如何选择一个数据库引擎,选择合适的字段列 ...

  9. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

随机推荐

  1. ORACLE EBS AP invoice 到付款的数据流

    --1.Invoice创建时生成数据如下表 --Invoice主表 SELECT * FROM AP_INVOICES_ALL A WHERE A.INVOICE_NUM = '20111213001 ...

  2. android 股票K线图

    现在在手上的是一个证券资讯类型的app,其中有涉及到股票行情界面,行情中有K线图等,看到网上很多人在求这方面的资料,所以我特地写了一个demo在此处给大家分享一下. 下面是做出来的效果图: 这个 界面 ...

  3. Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od

    cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似 ...

  4. 是我out了,c11标准出炉鸟

    gcc -std=c11 -Wall -O3 -g0 -s -o x.c x 或者 clang -std=c11 -Wall -O3 -g0 -s -o x.c x 来吧! 我是有多无聊啊 测试代码: ...

  5. 数据准备<2>:数据质量检查-实战篇

    上一篇文章:<数据质量检查-理论篇>主要介绍了数据质量检查的基本思路与方法,本文作为补充,从Python实战角度,提供具体的实现方法. 承接上文,仍然从重复值检查.缺失值检查.数据倾斜问题 ...

  6. WebService学习--(四)调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  7. TCP / IP,HTTP

    大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用 ...

  8. 解决XMind运行卡顿

    问题 XMind是一款很好用的脑图工具,它是基于eclipse开发的,而且基础功能是免费的.最近我安装了XMind 8 Pro,但是发现在Mac上运行有卡顿. 解决方式 解决这个问题的思路也很简单,软 ...

  9. 实现CString的Format功能,支持跨平台

    #include <string>#include <stdio.h> #include <stdarg.h> std::string& std_strin ...

  10. 彪悍开源的分析数据库-ClickHouse

    https://zhuanlan.zhihu.com/p/22165241 今天介绍一个来自俄罗斯的凶猛彪悍的分析数据库:ClickHouse,它是今年6月开源,俄语社区为主,好酒不怕巷子深. 本文内 ...