暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

初识数据库

GrowthDBA 2021-08-12
679



DBMS的前世今生


至今47年前,也就是1974年,IBM研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》。SEQUEL的语言标准是开放的,但是围绕它的商业化竞争却从来没有停止过。首先因为商标之争,SEQUEL改名为SQL,后来有一个重量级的公司基于那篇论文研发出了商业化的数据库管理软件,这就是Oracle。自此之后,又诞生了一堆大家熟知的DBMS,比如MySQL、SQL Server、PostgreSQL、DB2和MongoDB等。

在我们的日常工作中,使用的是类似MySQL、Oracle这种的数据库管理系统,实际上这些数据库管理系统都遵循SQL语言,这就意味着,我们在使用这些数据库的时候,都是通过SQL语言与它们打交道。自从SQL加入了TIOBE(https://www.tiobe.com/tiobe-index/)编程语言排行榜,就一直保持在Top 10。SQL有两个重要的标准,分别是SQL92和SQL99,它们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL的半衰期可以说是非常长了。




DB、DBS和DBMS的区别


  • DBMS的英文全称是DataBase Management System,数据库管理系统,实际上它可以对多个数据库进行管理,所以你可以理解为:DBMS = 多个数据库(DB) + 管理程序

  • DB的英文是DataBase,也就是数据库。数据库是存储数据的集合,你可以把它理解为多个数据表。

  • DBS的英文是DataBase System,数据库系统。它是更大的概念,包括了数据库、数据库管理系统以及数据库管理人员DBA。这里需要注意的是,虽然我们有时候把Oracle、MySQL等称之为数据库,但确切讲,它们应该是数据库管理系统,即DBMS。




排名靠前的DBMS


当前主流的DBMS排名可以参照DB-Engines(https://db-engines.com/en/ranking)公布的排名,从排名中我们能看出来,关系型数据库绝对是 DBMS 的主流,其中使用最多的DBMS分别是Oracle、MySQL和SQL Server。关系型数据库(RDBMS)就是建立在关系模型基础上的数据库,SQL就是关系型数据库的查询语言。相比于SQL,NoSQL泛指非关系型数据库,包括了榜单上的键值型数据库、文档型数据库、搜索引擎和列存储等,除此以外还包括图形数据库。




SQL阵营与NoSQL阵营


由于SQL一直称霸DBMS,因此许多人在思考是否有一种数据库技术能远离SQL,于是NoSQL诞生了,但是随着发展却发现越来越离不开SQL。到目前为止NoSQL阵营中的DBM都会有实现类似SQL的功能。下面是“NoSQL”这个名词在不同时期的诠释,从这些释义的变化中可以看出NoSQL功能的演变:
  • 1970:NoSQL = We have no SQL

  • 1980:NoSQL = Know SQL

  • 2000:NoSQL = No SQL!

  • 2005:NoSQL = Not only SQL

  • 2013:NoSQL = No, SQL!

NoSQL对SQL做出了很好的补充,它可以让我们在云计算时代,更好地使用数据库技术,比如快速读写,这样可以用低廉的成本,更方便进行扩展。




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的分支项目MariaDB,MariaDB在绝大部分情况下都是与MySQL兼容的,并且增加了许多新的特性,比如支持更多的存储引擎类型。许多企业也由原来的MySQL纷纷转向了MariaDB。
SQL Server是微软开发的商业数据库,诞生于1989年。实际上微软还推出了Access数据库,它是一种桌面数据库,同时具备后台存储和前台界面开发的功能,更加轻量级,适合小型的应用场景。因为后台的存储空间有限,一般只有2G,Access的优势在于可以在前台便捷地进行界面开发。而SQL Server是大型数据库,用于后台的存储和查询,不具备界面开发的功能。从这里我们也能看出,即使SQL语言是通用的,但是为了满足不同用户的使用场景,会存在多个DBMS。比如Oracle更适合大型跨国企业的使用,因为他们对费用不敏感,但是对性能要求以及安全性有更高的要求,而MySQL更受到许多互联网公司,尤其是早期创业公司的青睐。

补充知识


※ MySQL名字的由来:

MySQL以联合创始人Monty Widenius的女儿My的名字命名。MySQL的海豚标志的名字叫“sakila”,它是从用户在我们的“命名海豚”竞赛中建议的大量名称中选出的。获奖名称由来自非洲Eswatini(前斯威士兰)的开源软件开发人员Ambrose Twebaze提交。根据安布罗斯的说法,女性名字Sakila起源于埃斯瓦蒂尼的当地语言SiSwati。Sakila也是坦桑尼亚阿鲁沙的一个小镇的名字,靠近安布罗斯的原籍国乌干达。


※ MySQL的发音:

一般我们经常读成:“迈瑟抠”,而这不是正确的发音,正确的发音,MySQL官网(https://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html)中已给出解释:The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it as “my sequel” or in some other localized way.


※ SQL(Structured Query Language)语言分类:

① 数据查询语言(DQL,Data Query Language)也称为“数据检索语句”,用于从表中获得数据,确定数据怎样在应用程序给出。例:SELECT;

② 数据操作语言(DML,Data Manipulation Language)分别用于添加、修改和删除表中的行。例:INSERT、UPDATE、DELETE;

③ 事务处理语言(TPL/TCL,Transaction Processing/Control Language)能确保DML语句影响的表的所有行及时得以更新。例:BEGIN TRANSACTION、COMMIT、ROLLBACK;

④ 数据控制语言(DCL,Data Control Language)通过GRANT和REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。例:GRANT、REVOKE;

⑤ 数据定义语言(DDL,Data Definition Language)在数据库中创建新表或删除表;为表加入索引。例:CREATE TABLE、DROP TABLE、ALTER TABLE等;

⑥ 指针控制语言(CCL,Cursor Control Language)用于对一个或多个表的单独行进行操作。例:DECLARE CURSOR、FETCH INTO、UPDATE WHERE CURRENT等。

文章转载自GrowthDBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论