数据库学习之MySQL (一)——数据库管理系统 DBMS 的流行度排名 分类等背景

数据库DB 数据库管理系统DBMS

数据库,数据的仓库,而平时说的数据库是指数据库管理系统(Database Management System),用于建立、使用和维护数据库,简称DBMS。你可以理解为 DBMS,而具体的一个个仓库DB实例

DBMS 流行度(popularity)排名

那么我们应该选择什么样的数据库呢?以图为证,我们看看权威数据库排名网站 DB-engine 连续三年的流行度(popularity)排名情况:

2017.8 DB-engine DBMS 流行度(popularity)排名图2017.8 DB-engine 排名图
2018.11 DB-engine DBMS 流行度(popularity)排名图
2018.8 DB-engine 排名图
2020.1 DB-engine DBMS 流行度(popularity)排名图
2020.1 DB-engine 排名图
我们从连续三年,每次间隔大致一年取样,可见MySQL的地位在国际上始终很高,另外,MySQL作为较为传统的关系型数据库,自然也是我们入门DBMS,并且以后举一反三一通百通,学习其他DBMS的终南捷径。简而言之,学了绝对不亏。

另外值得说明的是,DB-engine的排名对国内的市场参考价值还是有不小偏差。毕竟,网络问题,我们绝大部分人不能在国外的开发社区去学习,发表文章等等,详细的可见这位博主的文章:你是否曾质疑过DB-Engine的数据库排名?

当然,这并不能阻止我们学习MySQL的步伐.jpg

数据库种类很多,关系型与非关系型是基本的两个大类。

关系型数据库 RDBMS

关系型数据库最为经典的开源软件就是我们要学习的MySQL。SUN被甲骨文收购后,MySQL 的原创人员有拉出另外一个分支,命名MariaDB ,该数据库被维基百科,Facebook 、Google 等技术巨头使用。

除此之外,还有很多开源的关系型数据库,比如经典的文件数据库SQLite和针对Web服务进行优化的CUBRID 等。

非关系型数据库 NRDBMS

一般就称为NoSQL更好:)

NoSQL 分类 代表性举例
键值存储数据库 Redis
列存储数据库 HBase
面向文档数据库 MongoDB
图形数据库 Neo4J
搜索引擎数据库 Elasticsearch

如果想要更深入了解的朋友可以看 NoSQL 还是 SQL ?这一篇讲清楚

SQL

结构化查询语言(Structured Query Language) 简称 SQL,用于存取数据以及查询、更新和管理数据库系统DBMS。意味着,SQL只是一个公共的标准语言,不属于各个DBMS的厂家,但是各个厂商的DBMS软件都需要支持SQL。
所以,学会了SQL,各个DBMS,无论是关系数据库还是作为关系数据库拓展的非关系数据库都大体适用。

文件系统与数据库系统

文件系统是操作系统(比如我们的windows)的子系统,用于操作系统明确存储设备或分区上的文件的方法和数据结构。

1、文件系统和数据库系统的对比
管理对象不同
两者最显而易见的区别就是,文件系统是以文件为载体记录数据的,管理的也是记载着这些数据的文件,而非数据本身,文件的各种形式对应着不同的数据结构。(给一个文件重命名并不会造成文件内记录的数据发生改变)。
而数据库系统管理的是数据本身,在数据库内的任何操作都会立刻影响到数据。

存储数据方式不同
文件系统用文件将数据长期保存在外存上。(这里的文件可以有很多不同的形式,不同后缀的文件就相当于不同的数据结构)
数据库系统用数据库统一存储数据。(有统一的数据结构)

程序与数据的关系不同
文件系统中,程序访问数据是直接访问的,对数据的查询修改必须在程序内完成,而这依赖于开发者对文件的逻辑及物理结构非常清楚。
数据库系统中,数据不再仅服务于某个程序或用户,而是以单位的形式共享出来,统一由DBMS软件管理。由于程序对数据的操作都是通过DBMS实现的,因此程序和数据彻底独立开,可以在更高的抽象级别观察和访问数据。

2、数据库系统的优点

无需了解实现细节
由于DBMS的存在,用户不再需要了解数据存储和其他实现的细节,直接 通过DBMS就能获取数据,为数据的使用带来极大便利。

并发访问的能力
具有以数据为单位的共享性,具有数据的并发访问能力。DBMS保证了在并发访问时数据的一致性。

低时延访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。

频繁修改数据
能够较为频繁的对数据进行增删改查CRUD,性能的消耗相比文件系统更。CRUD即增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete),小。

共享文件系统 与 C/S系统

有些DBMS采用基于共享文件系统的方式,如MS的access,但是现在更流行的是C/S(Client/Server 客户端/服务端)系统的DBMS,于是我们实际操作就需要在服务端编写SQL程序,以供客户端使用。因而我们先得有一个服务端程序, 我们就在那上面开发。下图是官网下载MySQL的截图,明显可见“MySQL Community Server“字样。
官网
当然官方传统开发采用命令行,实际上还可以采用GUI的配套软件如SQLyog,其图像界面能够帮助我们更好地理解数据库结构。下图是自己学习时对SQLyog的截图:
在这里插入图片描述
能够清晰看到表的样子,相比于命令行更加形象美观。而且SQL代码不会丢失。

我们该做什么

综上所述,SQL还是我们初学DBMS的切入点,当传统的SQL学完,再学习SQL的拓展——NoSQL(not only SQL),非关系型数据库的语言就会更加简单。
现在就让我们开始学习传统SQL经典——MySQL