CategoryResourceRepost/极客时间专栏/SQL必知必会/第一章:SQL语法基础篇/02丨DBMS的前世今生.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

89 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<audio id="audio" title="02丨DBMS的前世今生" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/82/46/82aba5e8d81c9ac11c675c79d2d7b246.mp3"></audio>
上一讲我们介绍过两个IBM研究员在1974年发表了一篇有关结构化英语查询语言的论文并将这门语言命名为SEQUEL。SEQUEL的语言标准是开放的但是围绕它的商业化竞争却从来没有停止过。首先因为商标之争SEQUEL改名为SQL后来有一个重量级的公司基于那篇论文研发出了商业化的数据库管理软件这就是Oracle。自此之后又诞生了一堆大家熟知的DBMS比如MySQL、SQL Server、PostgreSQL、DB2和MongoDB等。
我们今天了解一下这些数据库管理软件也就是DBMS。为什么需要了解它们呢因为在工作中我们通常都是和这些数据库管理软件打交道只不过SQL是它们的通用语言。
今天我们先从SQL语言中跳脱出来来分析下这些DBMS。关于今天的内容你可以从以下几个方面进行思考
1. 主流的DBMS都有哪些它们各自都有哪些特点
1. 既然SQL是通用的标准语言为什么能存在这么多DBMS
1. 从这些DBMS的发展史中你有哪些感悟。
## DB、DBS和DBMS的区别是什么
说到DBMS有一些概念你需要了解。
DBMS的英文全称是DataBase Management System数据库管理系统实际上它可以对多个数据库进行管理所以你可以理解为DBMS = 多个数据库DB + 管理程序。
DB的英文是DataBase也就是数据库。数据库是存储数据的集合你可以把它理解为多个数据表。
DBS的英文是DataBase System数据库系统。它是更大的概念包括了数据库、数据库管理系统以及数据库管理人员DBA。
这里需要注意的是虽然我们有时候把Oracle、MySQL等称之为数据库但确切讲它们应该是数据库管理系统即DBMS。
## 排名前20的DBMS都有哪些
了解了DBMS的概念之后我们来看下当前主流的DBMS都有哪些。下面这张表是2019年5月DB-Engines公布的DBMS的排名每年的排名会有更新主要依据这些DBMS在搜索引擎上的热度
<img src="https://static001.geekbang.org/resource/image/a7/91/a7237ddbe4ca69353bd21a6eff35d391.png" alt="">
从排名中我们能看出来关系型数据库绝对是DBMS的主流其中使用最多的DBMS分别是Oracle、MySQL和SQL Server。
关系型数据库RDBMS就是建立在关系模型基础上的数据库SQL就是关系型数据库的查询语言。
相比于SQLNoSQL泛指非关系型数据库包括了榜单上的键值型数据库、文档型数据库、搜索引擎和列存储等除此以外还包括图形数据库。
键值型数据库通过Key-Value键值的方式来存储数据其中Key和Value可以是简单的对象也可以是复杂的对象。Key作为唯一的标识符优点是查找速度快在这方面明显优于关系型数据库同时缺点也很明显它无法像关系型数据库一样自由使用条件过滤比如WHERE如果你不知道去哪里找数据就要遍历所有的键这就会消耗大量的计算。键值型数据库典型的使用场景是作为内容缓存。Redis是最流行的键值型数据库。
文档型数据库用来管理文档在数据库中文档作为处理信息的基本单位一个文档就相当于一条记录MongoDB是最流行的文档型数据库。
搜索引擎也是数据库检索中的重要应用常见的全文搜索引擎有Elasticsearch、Splunk和Solr。虽然关系型数据库采用了索引提升检索效率但是针对全文索引效率却较低。搜索引擎的优势在于采用了全文搜索的技术核心原理是“倒排索引”。
列式数据库是相对于行式存储的数据库Oracle、MySQL、SQL Server等数据库都是采用的行式存储Row-based而列式数据库是将数据按照列存储到数据库中这样做的好处是可以大量降低系统的I/O适合于分布式文件系统不足在于功能相对有限。
图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
## SQL阵营与NoSQL阵营
NoSQL的分类很多刚才提到的键值型、文档型、搜索引擎、列式存储和图形数据库等都属于NoSQL阵营。也只有用NoSQL一词才能将这些技术囊括进来。即便如此在DBMS排名中还是SQL阵营的比重更大影响力前5的DBMS中有4个是关系型数据库而排名前20的DBMS中也有12个是关系型数据库。所以说掌握SQL是非常有必要的。
由于SQL一直称霸DBMS因此许多人在思考是否有一种数据库技术能远离SQL于是NoSQL诞生了但是随着发展却发现越来越离不开SQL。到目前为止NoSQL阵营中的DBMS都会有实现类似SQL的功能。下面是“NoSQL”这个名词在不同时期的诠释从这些释义的变化中可以看出NoSQL功能的演变
1970NoSQL = We have no SQL
1980NoSQL = Know SQL
2000NoSQL = No SQL!
2005NoSQL = Not only SQL
2013NoSQL = No, SQL!
NoSQL对SQL做出了很好的补充它可以让我们在云计算时代更好地使用数据库技术比如快速读写这样可以用低廉的成本更方便进行扩展。整个专栏的学习也将围绕SQL展开同时你还需要了解SQL阵营中不同的DBMS之间的使用差异。这些DBMS除了支持SQL标准以外还会有自己的“方言”也就是自己独有的语法。在专栏中我也会对近些年热门的NoSQL进行讲解方便你在后续使用中更快上手。
## SQL阵营中的DBMS
如果我们把数据互通作为当今数字化社会发展的大中台能力那么DBMS无疑是一个巨大的市场。在这个市场中排名前20的DBMS有12个属于SQL阵营其中排名前3名的DBMS均为SQL阵营它们分别是Oracle、MySQL和SQL Server。这三家的市场份额远超其他DBMS的市场份额。
下面我们来简单介绍下这三个主流DBMS的发展。
1979年Oracle 2诞生它是第一个商用的RDBMS关系型数据库管理系统随后被卖给了军方客户。随着Oracle软件的名气越来越大公司也改叫Oracle公司。20世纪90年代Oracle的创始人埃里森成为继比尔·盖茨之后第二富有的人可以说IBM缔造了两个帝国一个是软件业的霸主微软另一个是企业软件市场的霸主Oracle。如今Oracle的年收入达到了400亿美金足以证明商用数据库软件的价值。从这点我们也能看出如果选择了一个大的赛道就要尽早商业化占据大型企业客户完全可以创建巨大的商业价值也足以证明一个软件企业不需要靠卖硬件也可以挣到很多钱。
MySQL是1995年诞生的开源数据库管理系统因为免费开源的特性得到了开发者的喜爱用户量迅速增长成为开源数据库的No.1。但在发展过程中MySQL先后两次被易手先是在2008年被SUN收购然后在2010年SUN被Oracle收购于是Oracle同时拥有了MySQL的管理权至此Oracle在数据库领域中成为绝对的领导者。从这里我们也能看到虽然MySQL是免费的产品但是使用人数多就足以证明巨大的用户价值。一个有巨大用户价值的产品即使没有直接的商业价值但作为基础设施也会被商业巨头看上。
不过在Oracle收购MySQL的同时MySQL的创造者担心MySQL有闭源的风险因此创建了MySQL的分支项目MariaDBMariaDB在绝大部分情况下都是与MySQL兼容的并且增加了许多新的特性比如支持更多的存储引擎类型。许多企业也由原来的MySQL纷纷转向了MariaDB。
SQL Server是微软开发的商业数据库诞生于1989年。实际上微软还推出了Access数据库它是一种桌面数据库同时具备后台存储和前台界面开发的功能更加轻量级适合小型的应用场景。因为后台的存储空间有限一般只有2GAccess的优势在于可以在前台便捷地进行界面开发。而SQL Server是大型数据库用于后台的存储和查询不具备界面开发的功能。从这里我们也能看出即使SQL语言是通用的但是为了满足不同用户的使用场景会存在多个DBMS。比如Oracle更适合大型跨国企业的使用因为他们对费用不敏感但是对性能要求以及安全性有更高的要求而MySQL更受到许多互联网公司尤其是早期创业公司的青睐。
## 总结
今天我们简单梳理了DBMS的发展。1974年SEQUEL论文发表1979年第一个商用关系型数据库Oracle 2诞生1995年MySQL开源数据库诞生如今NoSQL得到了发展并且围绕SQL标准展开的DBMS竞赛从来没有停止过。在这段发展史中既有SQL阵营又有NoSQL阵营既有商业数据库软件又有开源产品在不同的应用场景下同一家公司也会有不同的DBMS布局。
如果说不同的DBMS代表了不同公司的利益那么作为使用者的我们更应该注重的是这些DBMS的使用场景。比如Oracle作为市场占有率最高的商用数据库软件适合大型的跨国企业而针对轻量级的桌面数据库我们采用Access就可以了。对于免费开源的产品来说可以选用MySQL或者MariaDB。同时在NoSQL阵营中我们也需要了解键值型、文档型、搜索引擎、列式数据库和图形数据库的区别。
我在文章中列举了排名前20的DBMS你都使用过哪些呢可以说说你的使用体会吗另外你有没有想过虽然SQL是通用的标准语言但为什么能存在这么多DBMS呢
<img src="https://static001.geekbang.org/resource/image/fc/d0/fcb0eba7fe352cb1dd5a17efc99d81d0.jpg" alt=""><br>
欢迎你在评论区写下你的思考,也欢迎把这篇文章分享给你的朋友或者同事。