第1章 数据库介绍与分类
1.1 数据库介绍
什么是数据库
简单地说,数据库(Database)就是一个存放计算机数据的仓库,该仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)对数据进行组织和存储,我们可以通过数据库提供的多种方法来管理其中的数据。
若以生活中的案例来进行更形象的描述,那么计算机里的数据库就是类似于人们存放杂物的储物间和仓库,它们的区别只是存放的东西不同,杂物间存放的是实体物件,而数据库里存储的是计算机数据。
1.2 数据库的种类
按照早期的数据库理论,比较流行的数据库模型分为三种,分别为层次数据库、网状数据库和关系型数据库。而在当今的互联网企业中,最常用的数据库模型主要分为两种,即关系型数据库和非关系型数据库。我们不是写教科书,更不是研究数据库理论,因此,本书主要讲解关系型数据库和非关系型数据库NoSQL这两类最重要也是目前互联网企业里实际使用最多的数据库类型。
1.2.1 关系型数据库介绍
(1)关系型数据库的由来
虽然网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据的独立性和抽象级别上仍然存在很大的欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而关系型数据库则可以较好地解决这些问题。
(2)关系型数据库介绍
关系型数据库模型可将复杂的数据结构归结为简单的二元关系(即二维表格形式)。例如,老男孩IT教育某一期的学生表格(见表1-1)关系就是一个二元关系。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格进行分类、合并、连接或选取等运算来实现对数据的管理。
关系型数据库的诞生距今已有几十年,已经从理论逐步发展成为大家耳熟能详的企业产品,例如,最常见的MySQL和Oracle数据库,其中,Oracle在数据库领域里上升到了霸主地位,形成了每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库,近些年逐渐崛起,以至于被Oracle重金收购,目前它们占据了互联网领域90%以上的数据库市场份额。
(3)关系型数据库表格之间的关系举例
前面已经讲过,数据库简单来说就是一个存放计算机数据的仓库,但是数据存放在数据库里还是有一定的组织形式的。在一个关系型数据库里,二维表格是组织数据的基本形式,每个不同的数据库里可以包含多张表格,例如,oldboy库里可以包含如下的表1-1~1-3。
表1-1 学生表
表1-2 课程表
表1-3 学生选课表
而数据库里的每个表格又是由若干个列组成的,例如,表1-3中的学号、课程号、成绩都是组成表格的列,此外,一个表格可以有多个列,每个列又存储着不同的信息。
由此,我们可以理解列的概念了,列是表中的字段,所有的表都是由一个或多个列组成的。
数据库中的每个列(或称字段)都有相应的数据类型,数据类型定义每个列存储数据的类别,例如,如果某个列中希望存储的内容为数字,那么可以选择的数据类型为数字类型(int等);如果列中存储的是少量文本或日期,甚至是大量文本等类别,那么数据库都会对应不同的数据类型来进行存储。
由此我们就可以理解数据类型的概念了,数据类型用于定义每个列需要存储什么样的数据,每个列都可以根据存储数据的实际需要来设置数据类型,在指定数据类型的同时还可以指定存储数据的长度。
图1-1是关系型数据库表格的基本信息说明。
图1-1 关系型数据库表格基本信息
关系型数据库知识和特点小结
1)关系型数据库在存储数据时实际上采用的就是二维表格形式(和Word、Excel里的表格几乎一样)。
2)市场上占有量较大的是MySQL和Oracle数据库,而互联网场景最常用的是MySQL数据库。
3)通过SQL(结构化查询语言)来存取、管理关系型数据库的数据。
4)关系型数据库在保持数据安全和数据一致性方面功能很强,遵循ACID理论(后文会讲此知识)。
1.2.2 非关系型数据库介绍
1.非关系型数据库诞生的背景
非关系型数据库也称为NoSQL数据库,请注意,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”(没有SQL)的意思。因此,NoSQL数据库的产生之初并不是要彻底地否定和终结关系型数据库,而是作为传统关系型数据库的一个有效补充。
随着互联网Web2.0、Web3.0网站的兴起,传统的关系型数据库在应付这些网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信等类型的动态网站时已经显得力不从心,暴露了很多难以克服的问题,例如,传统关系型数据库的I/O瓶颈、性能瓶颈等都难以有效突破。于是出现了大批针对特定场景,以高性能、高并发以及使用便利为目的的功能特异化的数据库产品,非关系型数据库就是在这样的情景中诞生并得到非常迅速发展的。在这些特定的场景下,NoSQL数据库可以发挥出难以想象的高效率和高性能。近年来,NoSQL这个术语得到了广泛认同。
NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据库的数据存储不需要固定的表结构,通常也不存在连接操作。其在大数据存取上具备关系型数据库无法比拟的性能优势,满足了企业应用需要将数据存储在横向且伸缩性上更强的功能需求。例如,Google的BigTable、Amazon的Dynamo都是非常成功的商业NoSQL实现。在开源的NoSQL体系中,从早期的Memcached缓存软件到当今Facebook的Cassandra、Apache的HBase,都得到了广泛应用,redis、MongoDB等新兴的NoSQL数据库,也逐渐受到各类公司的欢迎和追捧。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。
非关系型数据库(NoSQL)知识小结
1)NoSQL数据库不是否定关系型数据库,而是作为关系型数据库的一个重要补充。
2)NoSQL数据库为了适应灵活及高性能、高并发需求而生,忽略影响高性能、高并发的功能。
3)在NoSQL数据库领域,当今的最典型产品为redis(持久化缓存)、MongoDB、Memcached(纯内存)等。
4)NoSQL数据库没有标准的查询语言(SQL),通常使用REST式的数据接口或者查询API。
2.非关系型数据库种类介绍
(1)键值存储数据库
键值(key-value)数据库类似于传统语言中使用的哈希表,可以通过key来添加、查询或者删除数据,因为是使用key主键访问,所以会获得很高的性能及扩展性。
键值数据库主要使用一个哈希表,表中有一个特定的键和一个指针(指向特定的数据)。对于IT系统来说,key/value模型的优势在于简单、易部署、高并发。
下面就来举例说明。
k1→oldboy, k1是键,相当于学号,oldboy对应的就是真实的数据,相当于具体的人。
k2→oldgirl, k2是键,相当于学号,oldgirl对应的就是真实的数据,相当于具体的人。
我们要找人,首先定位学号(k1, k2),然后再找到具体的数据(oldboy、oldgirl)。
键值存储数据库的典型产品为Memcached、redis。
提示:Memcached、redis是互联网领域里中小型企业网站使用最多的NoSQL数据库种类。
(2)列存储数据库
列存储(column-oriented)数据库会将数据储存在列族(column family)中,一个列族通常存储会被一起查询的相关数据。举个例子,对于Person类,我们通常会查询他们的姓名和年龄,而不是薪资。在这种情况下,姓名和年龄就会放入一个列族中,而薪资则放在另一个列族中。
这部分数据库通常用于应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列族来安排的。
列存储数据库的典型产品为Cassandra、HBase。
提示:Cassandra、HBase是互联网领域大型门户网站使用较多的NoSQL数据库种类。例如,新浪、京东网站使用的是HBase(曾经笔者所在培训机构的DBA老师就曾经在新浪公司维护数台HBase集群),360安全公司使用的是Cassandra(笔者的学生曾在该公司维护数百台Cassandra集群)。
(3)面向文档的数据库
面向文档(document-oriented)的数据库的灵感来自于Lotus Notes办公软件,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。面向文档(document-oriented)的数据库可以看作键值数据库的升级版,允许之间嵌套键值。而且面向文档(document-oriented)的数据库比键值数据库的查询更高效。
面向文档的数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个与名称对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象等。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。
面向文档的数据库的典型产品为MongoDB。
提示:MongoDB是互联网领域里中小型企业比较常用的面向文档的数据库种类,在部分企业里,可以替代MySQL作为数据库使用。
(4)图形数据库(了解即可)
图形(graph)数据库允许我们将数据以图形的方式进行存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。
图形结构的数据库与其他行列以及刚性结构的SQL数据库不同,它使用的是灵活的图形模型,并且能够扩展到多个服务器上。
图形数据库的典型产品为Neo4J、InfoGrid
提示:在笔者工作的十多年里,没有使用过图形数据库,不过根据国外网站数据库排名信息来看,Neo4J上升到了21位(截至笔者写作时),看来该软件正在被越来越多的人所熟知,我们对它保持关注吧,建议简单了解就可以了。
1.3 常用关系型数据库产品介绍
1.3.1 Oracle数据库
Oracle前身叫作SDL,由Larry Ellison和另外两个开发人员于1977年创办,他们开发了自己的拳头产品,在市场上大量销售,1979年,Oracle公司引入了第一个商用SQL关系型数据库管理系统。Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系型数据库产品的市场占有率很高。
Oracle公司是目前全球最大的数据库软件公司,也是近年来业务增长极为迅速的软件提供商与服务商。
2007年7月,Oracle公司在美国纽约宣布推出数据库Oracle 11g,这是Oracle数据库的较新版本。据官方介绍,Oracle 11g有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。Oracle 11g在安全、XML DB、备份等方面得到了很大的提升。
主要的应用企业包括传统大企业、大公司、政府、金融、证券等。
版本包括Oracle 8i、Oracle 9i、Oracle 10g、Oracle 11g、Oracle 12c等。
1.3.2 MySQL数据库
MySQL数据库是一个开源的中小型关系型数据库管理系统,由瑞典MySQL AB公司开发。该公司于2008年被Sun公司收购,后Sun公司又被Oracle公司收购。目前MySQL被广泛地应用于各大中小型网站中。由于其具有体积小、速度快、总体拥有成本低,且开放源码等特点,因此许多大中小型网站选择它作为网站数据库,从而降低网站总体拥有成本,甚至国内知名的淘宝网也选择弃用Oracle而更换成更为开放的MySQL。
MySQL数据库的应用范围主要包括互联网领域、大中小型网站、游戏公司、电商平台等,因用户广泛,其产生了很多高并发的成熟解决方案,因此传统企业的用户也在逐渐增多。
1.3.3 MariaDB数据库
MariaDB数据库管理系统是MySQL数据库的一个分支,主要由开源社区维护,采用GPL授权许可。开发这个MariaDB数据库分支的可能原因之一是:Oracle公司收购了MySQL之后,有将MySQL闭源的潜在风险,因此MySQL开源社区采用分支的方式来避开这个风险。
开发MariaDB数据库的目的是完全兼容MySQL数据库,包括API和命令行,使之能够轻松地成为MySQL的替代品。在存储引擎方面,它使用XtraDB来代替MySQL的InnoDB。MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给Sun,此后,随着Sun被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB数据库的名称来自MySQL的创始人Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,使用Percona的XtraDB替换了MySQL的InnoDB存储引擎。
MariaDB数据库的早期版本,均依照MySQL的版本发行。因此,使用MariaDB的人都会从MySQL中了解到MariaDB的相关功能,学习MySQL数据库的人,也可以轻松上手掌握MariaDB数据库。
1.3.4 SQL Server数据库
Microsoft SQL Server是微软公司开发的大型关系型数据库系统。SQL Server的功能比较全面、效率高,可以作为中型企业或单位的数据库平台。由于SQL Server与Windows操作系统紧密集成,所以不论是应用程序的开发速度,还是系统事务处理的运行速度,都得到了较大的提升。对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构,SQL Server都是一个很好的选择。但SQL Server也有它的缺点,即只能在Windows系统下运行。
1987年,微软和IBM合作开发完成OS/2, IBM在其销售的OS/2 ExtendedEdition系统中绑定了OS/2 Database Manager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase签订了合作协议,使用Sybase的技术开发了基于OS/2平台的关系型数据库。1989年,微软发布了SQL Server 1.0版。Microsoft在与Sybase分道扬镳之后,在其6.05和7.0版本中重写了核心数据库系统,最终形成了如今的SQL Server。
SQL Server数据库主要应用于使用Windows服务器平台的企业。
1.3.5 Access数据库
美国Microsoft公司于1994年推出了微机数据库管理系统。它结合了Microsoft Jet Database Engine和图形用户界面两项特点,是Microsoft Off ice的成员之一。具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面关系型数据库管理系统。Access能够存取Access/Jet、Microsoft SQL Server、Oracle,或者任何ODBC兼容数据库的资料。Access界面友好而且易学易用,作为Off ice套件的一部分,可以与Off ice集成,实现无缝连接,Access提供了表(Table)、查询(Query)、窗体(Form)、报表(Report)、宏(Macro)、模块(Module)等用来建立数据库系统的对象,而且还提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化。
Access是入门级小型桌面数据库,性能、安全性都很一般。可供个人管理或小型网站之用。Access不是数据库语言,只是一个数据库程序。集成于Off ice中。其主要具有如下特点。
完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。
强大的数据处理功能,Access具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。
可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。
作为Off ice套件的一部分,可以与Off ice集成,实现无缝连接。
能够利用Web检索和发布数据,实现与Internet的连接。Access主要适用于中小型应用系统,或者作为客户机/服务器系统中的客户端数据库。
早期应用领域为小型程序系统ASP+Access系统,例如,留言板、校友录、BBS等,目前在互联网场景下使用得较少。
1.3.6 PostgreSQL数据库
PostgreSQL是加州大学伯克利分校计算机系开发的,以POSTGRES为基础,后来更名为PostgreSQL,它是除了MySQL之外发展较快的另一个关系型数据库管理系统(RDBMS)。
PostgreSQL在灵活的BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如MySQL)和专有系统(比如Oracle、Sybase、Microsoft SQL Server)之外的另一种选择。
PostgreSQL支持大部分SQL标准,并且提供了非常多的特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引等来扩展。任何人都可以免费使用、修改和分发PostgreSQL,不管是私用、商用,还是学术研究使用,目前数据库产品排名在第四位,是一个很有潜力的数据库,但不建议新手或者经验欠缺的企业人员使用。
1.3.7 其他不常用的关系型数据库
本书主要关注互联网领域常用的数据库产品,像DB2、Informix、Sybase等在互联网公司几乎见不到,因此这里就不多介绍了。
1.4 常用非关系型数据库产品介绍
1.4.1 Memcached(key-value)
Memcached是一个开源的、支持高性能、高并发的分布式内存缓存系统,由C语言编写,总共2000多行代码。从软件名称上看,前3个字符“Mem”就是内存的意思,而接下来的5个字符“Cache”就是缓存的意思,最后一个字符d,是daemon的意思,代表是服务端守护进程模式服务。
Memcached服务分为服务端和客户端两部分,其中,服务端软件的名字形如Memcached-1.4.24.tar.gz,客户端软件的名字形如Memcached-2.25.tar.gz。
Memcached软件诞生于2003年,最初由LiveJournal的Brad Fitzpatrick开发完成。Memcache是整个项目的名称,而Memcached是服务器端的主程序名,因其协议简单,应用部署方便且支持高并发,因此广泛应用于互联网企业,直到现在仍然如此。其官方网站地址为:http://memcached.org/。
缓存一般用于保存一些经常被存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来),通过缓存来存取对象或数据要比在磁盘上存取快很多,因为前者使用的是内存,后者使用的是磁盘。Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在Memcached的内存中,程序通过API的方式存取这些被缓存的数据,Memcached里面的数据就像一张巨大的HASH表,数据以key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出速度更快的可扩展的Web应用。
由于Memcached为纯内存缓存软件,一旦重启,所有的数据都会丢失,因此,新浪网基于Memcached开发了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的持久化存储机制和异步主辅复制机制,使Memcached具备了事务恢复能力、持久化数据存储能力和分布式复制能力,Memcachedb非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年其正逐渐被其他的持久化产品所替代,例如redis。
有关Memcached的知识小结
1)Memcached为key-value型数据库。
2)Memcached为纯内存数据库。
3)Memcached相关持久化产品Memcachedb、Tokyo Cabinet\Tokyo Tyrant(ttserver)。
4)Memcached企业级讲解见《跟老男孩学Linux运维:Web集群实战》第13章。
1.4.2 redis(key-value)
和Memcached类似,redis也是一个key-value型存储系统。但redis支持的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove和取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础之上,redis支持各种不同方式的排序。与Memcached一样,为了保证效率,redis的数据都是缓存在内存中的。区别是redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件中,并且在此基础之上实现master-slave(主从)复制。
redis是一个高性能的key-value数据库。redis的出现,在很大程度上补偿了Memcached这类key/value软件的不足,在部分场合还可以对关系型数据库起到很好的补充作用。它提供了Python、Ruby、Erlang和PHP客户端,使用很方便。
redis的官方网址为http://www.redis.io/documentation。
redis知识小结
1)支持内存缓存,这个功能和Memcached相同。
2)支持持久化存储,这个功能和Memcachedb、ttserver相同。
3)数据类型更丰富。比其他key-value库功能更强。
4)支持主从、分布式等集群模式。
5)支持队列等特殊功能。
1.4.3 MongoDB(document-oriented)
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的一种产品。它支持的数据结构非常松散,类似JSON的bjson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是其所支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。
其主要功能特性具体如下。
面向集合存储,易存储对象类型的数据。“面向集合”(collenction-orented),意思是数据被分组存储在数据集中,称为一个集合(collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似于关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
模式自由(schema-free),这意味着对于存储在MongoDB数据库中的文件,我们不需要知道它的任何结构定义。如果需要,你完全可以把不同结构的文件存储在同一个数据库里。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性。
支持Ruby、Python、Java、C++、PHP等多种语言。
文件存储格式为BSON(JSON的一种扩展)。BSON(Binary Serialized document Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。
此外,还可以通过网络访问。MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,而且它是把数据存储在文件中的,为提高效率其使用内存映射文件进行管理。
关于MongoDB更详细的文档请见http://www.mongodb.org/display/DOCS/Manual
Documentation:http://www.mongodb.org/display/DOCS/Home。
MongoDB是很有发展潜力的课程之一,后续会重点讲解该软件。
1.4.4 Cassandra(column-oriented)
Apache Cassandra是一套开源分布式key-value存储系统。它最初由Facebook开发,用于储存特别大的数据。Facebook目前使用的正是此系统。
Cassandra的主要特性如下所示。
分布式。
基于列的结构化。
高伸展性。
Cassandra的主要特点是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。
Cassandra是一个混合型的非关系型数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的key-value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面很理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(column family)的数据模型。P2P去中心化的存储,在很多方面都可以称为Dynamo 2.0。
Cassandra的官方网址为:http://cassandra.org。
1.4.5 其他非关系型数据库
除此之外,其他非关系型数据库还有HBase、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver)等。
1.5 数据库相关知识
1.5.1 数据库发展历史大事记
1951:Univac系统使用磁带和穿孔卡片作为数据存储。
1956:IBM公司在其Model 305 RAMAC中第一次引入了磁盘驱动器。
1961:通用电气(GE)公司的Charles Bachman开发了第一个数据库管理系统IDS。
1969:E.F. Codd发明了关系型数据库。
1973:由John J.Cullinane领导Cullinane公司开发了针对IBM主机的基于网络模型的数据库IDMS。
1976:Honeywell公司推出了第一个商用关系型数据库产品Multics Relational Data Store。
1979:Oracle公司引入了第一个商用SQL关系型数据库管理系统。
1983:IBM推出了DB2数据库产品。
1985:为Procter & Gamble系统设计的第一个商务智能系统产生。
1991:W.H.“Bill”Inmon发表了“构建数据仓库”。
1.5.2 数据库软件企业应用排名及发展趋势参考
2013年数据库软件企业应用排名如图1-2所示。
图1-2 2013年数据库软件企业应用排名
2015年数据库软件企业应用排名如图1-3所示。
图1-3 2015年数据库软件企业应用排名
2016年数据库软件企业应用排名如图1-4所示。
图1-4 2016年数据库软件企业应用排名
2017年数据库软件企业应用排名趋势如图1-5所示。
图1-5 2017年数据库软件企业应用排名
2018年数据库软件企业应用排名如图1-6所示。
图1-6 2018年数据库软件企业应用排名
上述内容源自http://db-engines.com/en/ranking。
从图1-6所示的2018年的数据库软件企业应用排名趋势可以看出,Oracle依然是稳坐第一,但是已有落后的趋势了,即将讲解的“主人公”MySQL稳坐第二,如果再加上同源的MariaDB,则已经超过了Oracle的排名,而后面的PostgreSQL、MongoDB的上升趋势也较明显,因此,建议大家重点掌握MySQL,其次是MongoDB。
1.6 本章重点
1)关系型数据库知识及特点介绍。
2)关系型数据库的典型产品介绍及应用场景说明。
3)非关系型数据库知识及特点介绍。
4)非关系型数据库典型产品介绍及应用场景说明。
5)常见数据库产品的发展趋势排名。
1.7 章节试题
1)什么是关系型数据库,其有什么特点?
2)关系型数据库的典型产品有哪些,各自对应什么应用场景?
3)什么是非关系型数据库,其有什么特点?
4)非关系型数据库的常见种类及相应的典型产品有哪些?
5)请分别说出5个最流行的关系型和非关系型数据库产品名称。