一、数据库开发与实战专栏导学及数据库基础概念入门

一、专栏导学

1.1 课程内容

  1. 零基础带你入门三大主流数据库 (MySQL+MongoDB+Redis)
  2. 零基础带你搞定数据库必备技能SQL语言,增、删、改、查
  3. Python进阶,带你入门 Flask 微框架
  4. 完成网易新闻客户端和管理端的实战
  5. 数据库高阶,让你轻松掌握数据库在实际工作中的落地(例如:数据备份与恢复、MySQL高可用架构)

1.2 学习安排

在这里插入图片描述
Python 操作 MySQL/MariaDB,具体学习内容如下:

1.MySQL/MariaDB的安装、配置、管理工具
2.SQL语言基础和进阶
3.使用Python连接、操作MySQL
4.Flask入门、ORM操作
5.网易新闻H5客户端和PC管理端的实现

Python 操作 MongoDB,具体学习内容如下:

1.MongoDB的安装、配置、管理工具
2.MongoDB基础知识(数据库、权限、集合、文档) 
3.MongoDB数据库的增删改查语法
4.使用Python连接、操作MongoDB (ODM)
5.使用MongoDB开发网易新闻实战项目中的评论服务

Python 操作 Redis,具体学习内容如下:

1.Redis的安装、配置、管理工具
2.Redis中支持的五种类型的数据结构
3.使用Python连接、操作Redis数据库
4.在网新闻实战项目中的应用

生产环境下的数据库,具体学习内容如下:

1.数据库权限管理
2.MySQL主从架构
3.MySQL数据的备份与恢复
4.MongoDB集群方案及搭建
5.Redis集群方案及搭建

1.3 适合人群

  1. HR、财会、审计人员、销售人员。需要在多个 Excel 中捣腾数据、Excel 在数据量大时会卡顿
  2. 数据分析师。需要跟不同来源的数据打交道,SQL知识、数据库知识是必备技能
  3. 开发人员(学生党、前后端开发人员)。无论你是什么编程语言,99%业务的可能性都会用到不同的数据库。

1.4 学习方法

  1. 培养兴趣。兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率,当然学习数据库也不例外。
  2. 及时学习新知识。正确、有效地利用学习资源,可以参考别人解决问题的思路和经验,即使获取掌握最新的知识。推荐:学习官网
  3. 多练习、多操作。数据库系统具有极强的操作性,所以要想熟练的掌握数据库,就必须经常上机练习。只有实际操作使用才能发现问题。通常情况下,数据库管理员工作的时间越长,其工作经验就越丰富。很多复杂的问题,都可以根据数据库管理员的经验来很好地解决。上机练习的过程中,可以将学到的数据库理论知识理解得更加透彻。
  4. 多编写 SQL 语句。SQL 语句是数据库的灵魂。数据库中的很多操作都是通过 SQL 语句来实现的。虽然现在的数据库都有易用的图形界面,可以直接在图形界面上创建数据库和表。但是,图形界面却掩盖了这些操作是如何实现的。只有经常使用 SQL 语句来操作数据库中的数据,才能更加深刻地理解数据库。
  5. 通过 Python 等编程语言来操作数据库。开发的软件系统中都需要使用数据库。软件开发者学习数据库的最终目的就是在软件开发中使用数据库。因此,在学习过程中,多思考一下如何使用 Python 等程序语言来操作数据库。最好多编一些程序来操作数据库。这样,既可以加深对数据库的理解,也可以提高自己的编程能力。
  6. 数据库理论知识不能丢。计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,但是随着技术应用的深入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。数据库理论知识是学好数据库的基础,虽然理论知识会有点枯燥,但是这是学好数据库的前提。如果没有理论基础,学习的东西就不扎实。例如,数据库理论中会讲解 E-R 图、数据库设计原则等知识,如果不了解这些知识,就很难独立设计一个很好的数据库及表。可以将理论和实例结合在一起来学习,这样效率会更高。

二、认识数据库

2.1 生活中的数据库

下面是生活中一些常见的数据库应用。

1、超市购物。 我们在超市购买商品时,就是在访问一个数据库。结账时,收银员使用条形码阅读器扫描客户购买的每一件商品。这个条形码阅读器连接着一个访问商品数据库的应用程序,该程序根据条形码从商品数据库中找出商品价格,然后从库存中减去本次销售这种商品的数量,并且在屏幕上显示相应的价格。如果存货量低于设置的临界值,数据库系统将提示进货以补充存货。如果有客户向超市打电话订购商品,售货员可以通过运行应用程序,查看数据库中此商品是否有足够的存货。
在这里插入图片描述
2、信用卡消费。 使用信用卡购买商品时,售货员要检查客户是否有足够的信用额度。该项检查可以通过打电话进行,也可以通过一个与计算机系统相连接的信用卡阅读器自动进行。无论哪种方式,一定在某个数据库中存有该客户使用信用卡购买商品的所有信息。为了检查客户的信用情况,需要有一个数据库应用程序,使用信用卡号码可以查询出这个月客户已购买商品的总价格,加上这次希望用信用卡购买的商品的价格,判断是否仍在信用额度之内。并且,如果用户确认购买,则此次购买商品的详细内容会被记录到该数据库中。应用程序还要访问数据库,在同意购买之前,检查信用卡不属被盗或丢失之列。此外,一般还有一些其它的应用程序负责每月向信用卡持卡人发送信用卡使用记录,并在收到付款之后向信用卡持卡人发送信息。
在这里插入图片描述
3、旅行社预订假期行程。 当旅客向旅行社咨询假期行程安排时,旅行社将访问多个包含假日和航班详细信息的数据库。若客户预定行程,数据库系统必须进行所有必要的预定安排。在这种情况下,系统必须确保一个座位不被两个不同的旅行社预定,以及航班的预定座位不超过航班的固定座位。例如,假设从青海飞往北京的航班上仅剩最后一个座位,却有两个旅行社同时要求预定该座位,系统必须能够分辨和处理这种情况,即允许一个预定继续进行,通知另外一个旅行社已经没有剩余的座位。旅行社通常可能还有另外一个数据库用于开列票据。

4、图书馆。 在图书馆中可能存在一个数据库,用来存储图书馆中所有图书的详细资料和读者的详细信息等。数据库系统还能提供预定服务,即允许读者预定图书,当该书可以借阅时,用邮件或其它方式通知读者。系统还可以向借书的读者发送提醒信息,告知其在规定的期限内尚未归还所借书。另外,现在所有的图书馆都配备了计算机索引系统,实现了图书的自动查询。使用该系统,可以让读者通过查询书名、作者或出版年份等信息,查找出希望借阅图书的所在位置,以及是否已经借出等信息。

5、购买保险。 无论何时,如果想投保某个保险,比如寿险、家庭财产险或汽车保险,保险经纪人都要访问多个保险机构的数据库。数据库系统会根据所提供的客户个人详细信息,如姓名、家庭住址、年龄等情况,来确定保险的金额。保险经纪人可通过查阅多个数据库,找到一个能给客户最大实惠的保险。

6、网上购物。 我们平时使用的购物网站都是通过数据库应用驱动的,例如,淘宝、京东、当当等。当当中有好多在线书店,它允许客户在不同的种类(例如计算机类或者管理类)中浏览和购买书籍。还可以按作者的姓名来浏览书籍。无论何种情形,该组织的网络服务器中都存在一个数据库,含有所有书籍的详细信息(书名、作者、价格、销售记录、出版社、简介和详细描述等),以及是否有存货、书籍运送情况、库存量和订购等信息。在数据库中书籍可被交叉引用。例如,一本书可能被列在多个种类下,比如同时列在计算机、程序语言、畅销书和推荐书籍名下。我们可以在线购买一本或多本书籍。当当网会通过数据库保存先前交易的记录(历史订单),包括购买的书名、送货地址和支付价格等详细信息,为网站的用户提供个性化服务。

7、大学。 如果你正在大学就读,学校会有一个用来存储学生所有信息的数据库系统(学生管理系统),包括注册的课程、获得的各类奖学金、往年已选择的课程和今年正在选择的课程以及考试成绩信息等。可能还有一个数据库用来存储在大学中工作员工的详细信息。

上述是生活中常见数据库的应用,你肯定还会遇见其它更多的数据库系统。虽然我们今天对这些应用司空见惯,但其实数据库系统是相当复杂的技术,到现在已经历经了六十多年的发展。

2.2 数据管理技术的3个发展阶段

在目前阶段,存储和管理数据都离不开数据库。例如,学校需要使用数据库来存储学生和教师的信息;公司需要使用数据库来存储公司的资料和员工的信息。当数据存储到数据库后,数据库管理系统就会对这些数据进行组织和管理。

数据库管理系统(DBMS)是数据库的核心软件之一,是位于用户与操作系统之间的数据管理软件,用于建立,使用和维护数据库。

数据管理就是对各种数据进行分类、组织、编码、查询和维护,主要经历了 3 个阶段,即人工管理阶段、文件系统阶段和数据库系统阶段。每一个阶段都是以减小数据冗余、增强数据独立性和方便操作数据为目的进行发展。

数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。

1、人工管理阶段。 在计算机出现之前,人们主要利用纸张和计算工具(如算盘和计算尺)来进行数据的记录和计算,依靠大脑来管理和利用数据。到了 20 世纪 50 年代中期, 这时计算机刚刚开始萌芽,还没有类似于磁盘等专门管理数据的存储设备,只有纸带、卡片、磁带等外存。所以计算机只能局限于科学技术方面,主要用于科学计算。也就是说,在人工管理阶段,数据主要存储在纸带、磁带等介质上,或者直接通过手工来记录。人工管理阶段的特点如下:

1.数据不能长期保存
2.不便于查询数据
3.数据不能共享,冗余度大
4.数据不具有独立性

2、文件系统阶段。 在 20 世纪 50 年代后期到 20 世纪 60 年代中期,计算机中的磁盘和磁鼓等直接存取设备开始普及。这时,可以将数据存储在计算机的磁盘上。这些数据都以文件的形式存储,然后通过文件系统来管理这些文件。下图是 Windows 下的文件系统。
在这里插入图片描述
上图中有很多文件夹,每个文件夹里又有很多文件,这就是文件系统。文件系统通过文件的存储路径和文件名来访问文件中的数据,我们可以查看、修改、添加和删除这些文件。相对于人工管理阶段而言,文件系统使数据管理变得简单,不用再为了一个文件而翻箱倒柜的查找。但是,这些文件中的数据没有进行结构化管理,查询起来还是不方便。文件系统阶段的特点如下:

1.数据可以长期保存
2.数据由文件系统来管理
3.数据冗余大,共享性差
4.数据独立性差
5.无法应对突发事故(文件误删,磁盘故障等)
6.编写应用程序不方便
7.应用程序依赖性
8.不支持对文件的并发访问
9.数据间联系弱
10.难以按用户视图表示数据
11.无安全控制功能

3、数据库系统阶段。 在 20 世纪 60 年代后期,随着网络技术的发展,计算机软/硬件的进步,出现了数据库技术,该阶段就是所谓的数据库系统阶段。数据库系统阶段使用专门的数据库来管理数据,用户可以在数据库系统中建立数据库,然后在数据库中建立表,最后将数据存储在这些表中。用户可以直接通过数据库管理系统来查询表中的数据。相对于文件系统来说,数据库系统实现了数据结构化。在文件系统中,独立文件内部的数据一般是有结构的,但文件之间不存在联系,因此整体来说是没有结构的。 数据库系统虽然也常常分成许多单独的数据文件,但是它更注意同一数据库中各数据文件之间的相互联系。数据库系统阶段的特点如下:

1.数据由数据库管理系统统一管理和控制
2.数据共享性高,冗余度低
3.数据独立性强
4.数据粒度小。数据粒度是数据库中数据的细化程度。细化程度越高,粒度越小;细化程度越低,粒度越大。

数据管理经历的各个阶段都有自己的背景及特点,数据管理技术也在发展中不断地完善,其 3 个阶段的比较如下表所示:

数据管理的3个阶段人工管理(20 世纪 50 年代中期)文件系统(50 年代末至 60 年代中期)数据库系统(60 年代后期)
应用背景科学计算科学计算、管理大规模数据、分布数据的管理
硬件背景无直接存取存储设备磁带、磁盘、磁鼓大容量磁盘、可擦写光盘、按需增容磁带机等
软件背景无专门管理的软件利用操作系统的文件系统由 DBMS 支撑
数据处理方式批处理联机实时处理、批处理联机实时处理、批处理、分布处理
数据的管理者用户/程序管理文件系统代理DBMS 管理
数据应用及其扩充面向某一应用程序难以扩充面向某一应用系统、不易扩充面向多种应用系统、容易扩充
数据的共享性无共享、冗余度极大共享性差、冗余度大共享性好、冗余度小
数据的独立性数据的独立性差物理独立性好、逻辑独立性差具有高度的物理独立性、具有较好的逻辑独立性
数据的结构化数据无结构记录内有结构、整体无结构统一数据模型、整体结构化
数据的安全性应用程序保护文件系统保护由 DBMS 提供完善的安全保护

2.3 数据库、关系型数据库、非关系型数据库概念

描述事物的符号称为 数据。数据有多种表现形式,可以是数字,也可以是文字、图形、图像、声音、语言等。在数据库中数据表示记录,例如,在学生管理数据库中,记录学生的信息包括学号、姓名、性别、年龄、籍贯和联系电话等,这些信息就是数据。

信息是指对数据进行加工处理后提取的对人类社会实践和生产活动产生决策影响的数据。信息就是数据中所包含的意义。未经过加工的数据只是一种原始材料,它的价值在于记录了客观世界的事实。

例如 2022011227,新怡,女,22,成都,计算机学院,136********,对于这条学生记录,了解其含义的人会得到这样的信息:新怡的学号是 2022011227,今年 22 岁,成都人,就读于计算机学院,她的联系电话是 136******; 而不了解其语义的人则无法理解其含义。所以,数据和信息是不可分的。

数据的分类:

结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人
民共和国,民族:汉,性别:男,这都叫结构化数据
非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页,有时候
非常长,有时候几句话就没了;例如语音,视频都是非结构化的数据
半结构化数据:比如:XML或者HTML的格式的数据

数据库(Database) 指长期存储在计算机内的、有组织的、可共享的数据集合。通俗的讲,数据库就是存储数据的地方,就像冰箱是存储食物的地方一样。在生活中,每个人都在使用数据库。当我们在电话簿里查找名字时,就是在使用数据库。在某个浏览器上进行搜索时,也是在使用数据库。以及平时我们登录网络,也需要依靠数据库验证自己的名字和密码。即便是在使用 ATM 机时,也要利用数据库进行 PIN 码验证和余额检查。数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。在日常生活中,人们可以直接用中文、英文等自然语言描述客观事物。在计算机中,则要抽象出对这些事物感兴趣的特征,并组成一个记录来描述。

数据库管理系统(DBMS) 是数据库系统的核心软件之一,是位于用户与操作系统之间的数据管理软件,用于建立,使用和维护数据库。它的主要功能包括数据定义、数据操作、数据库的运行管理、数据库的建立和维护等几个方面。

补充:我们常说 XX 数据库,其实实质上是 XX 数据库管理系统。目前,较为流行的数据库管理系统有 MySQL、SQL Server、Oracle 和 DB2 等。本专栏主要介绍 MySQL、MongoDB、Redis 数据库。

数据库有两种类型,分别是 关系型数据库和非关系型数据库。

关系型数据库。 关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。简单说,关系型数据库是由多张能互相连接的表组成的数据库。优点如下:

1.都是使用表结构,格式一致,易于维护。
2.使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
3.数据存储在磁盘中,安全。

缺点:

1.读写性能比较差,不能满足海量数据的高效率读写。
2.不节省空间。因为建立在关系模型上,就要遵循某些规则,比如数据中某字段值即使为空仍要分配空间。
3.固定的表结构,灵活度较低。

常见的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access 和 MySQL 等。

非关系型数据库: 非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。优点如下:

1.非关系型数据库存储数据的格式可以是 key-value 形式、文档形式、图片形式等。使用灵活,
应用场景广泛,而关系型数据库则只支持基础类型。
2.速度快,效率高。 NoSQL 可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
3.海量数据的维护和处理非常轻松。
4.非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。
5.可以实现数据的分布式处理。

缺点:

1.非关系型数据库暂时不提供 SQL 支持,学习和使用成本较高。
2.非关系数据库没有事务处理,没有保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。
3.功能没有关系型数据库完善。

常见的非关系型数据库有 Neo4j、MongoDB、Redis、 Memcached、MemcacheDB 和 HBase 等。

2.4 为什么要使用数据库

随着互联网技术的高速发展,截止2022年1月,全球互联网用户数量达到 49.5 亿人。网民数量的增加带动了网上购物、微博,网络视频等产业的发展。那么,随之而来的就是庞大的网络数据量。大量的数据正在不断产生,那么如何安全有效地存储、检索,管理它们呢?于是对数据的有效存储、高效访问、方便共享和安全控制等问题成为了信息时代一个非常重要的问题。使用数据库可以高效且条理分明地存储数据,它使人们能够更加迅速和方便地管理数据,主要体现在以下几个方面:

  1. 数据库可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。数据库可以对数据进行分类保存,并且能够提供快速的查询。例如,我们平时使用百度搜索内容时,百度也是基于数据库和数据分类技术来达到快速搜索的目的。
  2. 数据库可以有效地保持数据信息的一致性、完整性、降低数据冗余。可以很好地保证数据有效、不被破坏,而且数据库自身有避免重复数据的功能,以此来降低数据的冗余。
  3. 数据库可以满足应用的共享和安全方面的要求,把数据放在数据库中在很多情况下也是出于安全的考虑。例如,如果把所有员工信息和工资数据都放在磁盘文件上,则工资的保密性就无从谈起。如果把员工信息和工资数据放在数据库中,就可以只允许查询和修改员工信息,而工资信息只允许指定人(如财务人员)查看,从而保证数据的安全性。
  4. 数据库技术能够方便智能化地分析,产生新的有用信息。例如,超市中把物品销售信息保存在数据库中,每个月销售情况的排名决定了下半月的进货数量。数据库查询的结果实际上产生了新的数据信息。数据挖掘、联机分析等技术近年来发展非常快,其核心意义在于从一堆数据中分析出有用的信息。

2.5 数据库系统及其组成部分

数据库系统(Database System,DBS)由硬件和软件共同构成。 硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等。数据库系统是指在计算机系统中引入数据库后的系统。完整的数据库系统结构关系如图所示:
在这里插入图片描述
由上图可知,一个完整的数据库系统一般由数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成。数据库系统主要有以下 3 个组成部分:

1.数据库:用于存储数据的地方。
2.数据库管理系统:用于管理数据库的软件。
3.数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。

数据库(DataBase,DB) 提供了一个存储空间来存储各种数据,可以将数据库视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。

数据库管理系统(Database Management System,DBMS) 是用户创建、管理和维护数据库时所使用的软件,位于用户和操作系统之间,对数据库进行统一管理。DBMS 能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。虽然已经有了 DBMS,但是在很多情况下,DBMS 无法满足对数据管理的要求。

数据库应用程序(DataBase Application) 的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与 DBMS 进行通信、访问和管理 DBMS 中存储的数据,允许用户插入、修改、删除数据库中的数据。

下面再简单介绍一下 DBMS 提供的一些功能,主要包括以下几个方面:

  1. 数据定义功能。 DBMS 提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。
  2. 数据操纵功能。 DBMS 还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等。
  3. 数据库的运行管理。 数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。例如:
    数据的完整性检查功能保证用户输入的数据应满足相应的约束条件;
    数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据;
    数据库的并发控制功能使多个用户可以在同一时刻并发地访问数据库的数据;
    数据库系统的故障恢复功能使数据库运行出现故障时可以进行数据库恢复,以保证数据库可靠地运行。
    
  4. 提供方便、有效地存取数据库信息的接口和工具。 编程人员可通过编程语言与数据库之间的接口进行数据库应用程序的开发。数据库管理员(Database Administrator,DBA)可通过提供的工具对数据库进行管理。数据库管理员是维护和管理数据库的专门人员。
  5. 数据库的建立和维护功能。 数据库功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监控、分析功能等。这些功能通常由一些使用程序来完成。

2.6 常用数据库访问接口简介

不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有 ODBC、JDBC、ADO.NET 和 PDO。

1、ODBC,ODBC(Open Database Connectivity,开放数据库互连)。 为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作性。一个应用程序可以通过共同的一组代码访问不同的 SQL 数据库管理系统。一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMS 的 ODBC 驱动程序完成。也就是说,不论是 MySQL 还是 Oracle 数据库,均可用 ODBC API 进行访问。由此可见,ODBC 的最大优点是能以统一的方式处理所有的数据库。

2、JDBC,Java Data Base(JDBC,Java 数据库连接)。 用于 Java 应用程序连接数据库的标准方法,是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。

3、ADO.NET,ADO.NET 是微软在 .NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET 提供了对关系数据、XML 和应用程序的访问,允许和不同类型的数据源以及数据库进行交互。

4、PDO,PDO(PHP Data Object) 为 PHP 访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO 是 PHP 5 新加入的一个重大功能。

2.7 数据库的种类

DBMS(数据库管理系统)主要通过数据的保存格式进行分类,现阶段主要分为以下几种类型。

层次数据库(Hierarchical Database,HDB)。 层次数据库是最早研制成功的数据库系统,它把数据通过层次结构(树形结构)的方式表现出来。层次数据库曾经是数据库的主流,但随着关系数据库的出现和普及,现在已经很少使用了。比较具有代表性的层次数据库是 IMS(Information Management System)数据库,由 IBM 公司研制成功。

关系型数据库(Relational Database,RDB)。 关系型数据库是现在应用最广泛的数据库。关系型数据库在 1969 年诞生,可谓历史悠久。和 Excel 工作表一样,关系型数据库也采用由行和列组成的二维表来管理数据,所以简单易懂。同时,它还使用 SQL(Structured Query Language,结构化查询语言)对数据进行操作。传统的关系型数据库采用表格的存储方式,数据以行和列的方式进行存储,要读取和查询都十分方便。下表是一些在关系型数据库中的数据:
在这里插入图片描述
比较具有代表性的关系型数据库有 Oracle Database、SQL Server、DB2、PostgreSQL 和 MySQL。

面向文档(Document-Oriented)数据库。 文档型数据库的灵感来自于 Lotus Notes 办公软件,和最后一种键值存储数据库类似。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。面向文档数据库会将数据以文档的形式存储。每个文档都是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用 XML、JSON 或者 JSONB 等多种形式存储。具有代表性的面向文档数据库有 MongDB 和 CouchDB。

列存储(Column-oriented)数据库。 列存储数据库将数据存储存在列族(column family)中,一个列族用来存储经常被一起查询的相关数据。例如,如果有一个 Person 类,我们经常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。列存储数据库通常用来应对分布式存储的海量数据。具有代表性的列存储数据库有 Cassandra 和 HBase。

XML 数据库(XML Database,XMLDB)。 XML 数据库是一种支持对 XML(标准通用标记语言下的一个应用)格式文档进行存储和查询等操作的数据管理系统。在系统中,开发人员可以对数据库中的 XML 文档进行查询、导出和指定格式的序列化。

键值存储数据库(Key-Value Store,KVS)。 键值存储数据库是用来保存查询所使用的主键(Key)和值(Value)的组合的数据库。具有编程语言知识的读者可以把它想象成关联数组或者散列(hash)。近年来,随着键值存储数据库被应用到 Google 等需要对大量数据进行超高速查询的 Web 服务当中,它正逐渐为人们所关注。具有代表性的键值存储数据库有 Redis、 Memcached 和 MemcachedDB。

2.8 作为初学者必须要了解的几种常用数据库

现在已经存在了很多优秀的商业数据库,如甲骨文(Oracle)公司的 Oracle 数据库、IBM 公司的 DB2 数据库、微软公司的 SQL Server 数据库和 Access 数据库。同时,还有很多优秀的开源数据库,如 MySQL 数据库,PostgreSQL 数据库等。下面介绍这些常见的数据库。

1、Oracle。 Oracle 是甲骨文公司的一款关系型数据库管理系统,在数据库领域一直处于领先地位的产品,是目前世界上流行的关系型数据库之一,是一种高效率、可靠性好、适应高吞吐量的数据库方案。
在这里插入图片描述
优点:

  1. Oracle 可移植性好,能在所有主流平台上运行(包括 Windows),完全支持所有工业标准。采用完全开放策略,使客户可以选择最适合解决方案。以及对开发商的全力支持。
  2. 获得最高认证级别的 ISO 标准认证,安全性高。
  3. 与其它数据库相比,Oracle 性能最高。保持着开放平台下 TPC-D 和 TPC-C 世界记录。
  4. 多层次网络计算,支持多种工业标准,可以用 ODBC、JDBC、OCI 等网络客户连接 。
  5. 完全向下兼容,因此被广泛应用,且风险低 。

向下兼容指的是高版本支持低版本的或者说后期开发的版本支持和兼容早期开发的版本。

缺点:

  1. 对硬件的要求高
  2. 价格比较昂贵
  3. 管理维护麻烦
  4. 操作比较复杂

2、SQL Server。 SQL Server 是 Microsoft(微软)公司推出的关系型数据库管理系统,主要应用于大型的管理系统中。
在这里插入图片描述
优点:

1.与微软的 Windows 系列操作系统的兼容性很好。
2.高性能设计,可充分利用 WindowsNT 的优势。
3.系统管理先进,支持 Windows 图形化管理工具,支持本地和远程的系统管理和配置。
4.强壮的事务处理功能,采用各种方法保证数据的完整性。
5.支持对称多处理器结构、存储过程、ODBC,并具有自主的 SQL 语言。

缺点:

1.SQL Server 只能在 Windows 系统上运行,没有丝毫开放性。
2.没有获得任何安全证书。
3.多用户时性能不佳 。
4.只支持 C/S 模式,SQL Server C/S 结构只支持 Windows 客户用 ADO、DAO、OLEDB、ODBC 连接。

3、MySQL。 MySQL 是一种开放源代码的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。因为其速度、可靠性和适应性而备受关注。MySQL 是流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的应用软件之一。
在这里插入图片描述
优点:

性能卓越服务稳定,很少出现异常宕机
开放源代码且无版权制约,自主性强、使用成本低。
历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。
软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
支持多种操作系统,提供多种 API 接口,支持多种开发语言。

缺点:

MySQL 最大的缺点是其安全系统,主要是复杂而非标准,只有调用 mysqladmin 来重读用户权限才会发生改变。
MySQL 不允许调试存储过程,开发和维护存储过程很难。
MySQL 不支持热备份。
MySQL 的价格随平台和安装方式变化。

4、Access。 Access 是由 Microsoft(微软)发布的小型关系数据库管理系统,是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。
在这里插入图片描述
优点:

  1. 存储方式简单,易于维护管理。Access 的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb 或 .accdb)的数据库文件中,便于用户的操作和管理。
  2. Access 是一个面向对象的开发工具,这种基于面向对象的开发方式,使得开发应用程序更为简便。
  3. 界面友好、易操作。Access 是一个可视化工具,风格与 Windows 完全一样,用户想要生成对象应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。
  4. 集成环境,可以处理多种数据信息。Access 基于 Windows 操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。
  5. 支持广泛,易于扩展,弹性大。Access 是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发。即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。

缺点:

1.不支持并发处理。
2.数据库存储量小安全性不够高。
3.Access 是小型数据库,当数据量过大时,一般百M以上(纯数据,不包括窗体、报表等客户端对象)性能会变差。
4.虽然理论上支持 255 个并发用户,但实际上根本支持不了那么多,如果以只读方式访问大概在 100 个用户左右,而如果是并发编辑,
则大概在10-20个用户。
5.单表记录数过百万时,性能就会变得较差,如果加上设计不良,这个限度还要降低。
6.不能编译成可执行文件(.exe),必须要安装 Access 运行环境才能使用。

5、DB2。 DB2 是美国 IBM 公司开发的一款支持多媒体、Web 的关系型数据库管理系统。主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境。
在这里插入图片描述
优点:

  1. 相比较 MySQL 和 Oracle 两种数据库来说,DB2 提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模地应用程序执行能力,具有与平台无关的基本功能和 SQL 命令。
  2. DB2 采用了数据分级技术,能够使大型数据很方便的下载到数据库服务器,使数据库本地化和远程连接透明化。
  3. 拥有非常完备的查询优化器,改善了查询性能,并支持多任务并行查询。
  4. 具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统更加使用。
  5. DB2 可跨平台使用。

缺点:

  1. 配置文件和参数多,且命名不规范。
  2. 一些 DB2 产品开发不方便。
  3. 和 Oracle 相比,命令多,且没 Oracle 统一规范的好。
  4. 由于其设计框架的问题,如果用户对数据库的本身优化和应用程序优化做的不足,那么 DB2 容易出现锁等待现象。

6、PostgreSQL。 PostgreSQL 是一款富有特色的自由数据库管理系统,甚至可以说是最强大的自由软件数据库管理系统。该数据库管理系统支持了目前世界上最丰富的数据类型。是自由软件数据库管理系统中唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的自由软件。
在这里插入图片描述
优点:

  1. PostgreSQL 遵循的是 BSD 协议,是一个完全开源、免费、同时非常强大的关系型数据库。
  2. 与 PostgreSQL 配合的有很多分布式集群软件,如 pgpool、pgcluster、slony、plploxy 等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这些 MySQL 则比较难实现。
  3. PostgreSQL 源代码写的很清晰,易读性比 MySQL 强,所以很多公司基本都是以 PostgreSQL 做二次开发的。
  4. PostgreSQL 是多进程的,而 MySQL 是多线程的。并发不高时,MySQL 处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL 的总体处理性能不如 PostgreSQL,原因是 MySQL 的线程无法充分利用 CPU 的能力。
  5. PostgreSQL 有很强大的查询优化器,支持很复杂的查询处理。
  6. BSD 开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

缺点:

  1. 对于简单而繁重的读取操作,相比较其它数据库来说,PostgreSQL 性能较低。
  2. PostgreSQL 数据库扩容花费时间很长。

三、数据库入门小测验

3.1 选择题

下面所列出的数据库,哪些是关系型数据库?哪些是非关系型数据库?(多选)

A. MySQL
B. MongoDB
C. Memcached
D. Oracle
E. Redis
F. Neo4j
G. MariaDB

3.2 选择题

关于关系型数据库和非关系型数据库,以下说法不正确的是?

A. 在关系型数据库中都有表的概念
B. MongoDB没有固定的列,属于非关系型数据库
C. 可以在非关系型数据库使用标准的SQL来检索数据
D. 在关系型数据库中,每一列都需要明确指定数据类型

3.3 选择题

下列属于关系型数据库的选项是()(选一项)

A.MongoDB
B.MySQL
C.Redis
D.MemCache

至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习数据库的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amo Xiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值