达梦数据库原理及应用教程

978-7-115-68782-1
作者: 林轶翚张守帅李冬
译者:
编辑: 张涛
分类: 其他

图书目录:

详情

内 容 提 要 本书系统介绍数据库技术的理论基础、实现方法与应用场景,旨在帮助读者深入理解数据库技术的发展、核心原理及其实际应用和优化。本书共3篇:第一篇聚焦关系数据库,从核心概念、关系代数、E-R模型等理论出发,结合主流关系数据库管理系统(如达梦数据库)的安装、部署、管理和操作,深入剖析SQL及表空间管理与安全管理,全面讲解关系数据库的核心技术;第二篇介绍非关系数据库,涵盖键值存储数据库、列存储数据库、文档型数据库与图数据库的核心技术,分析其与关系数据库的区别,探讨Hadoop生态中的分布式存储与计算框架(如HDFS、MapReduce)、分布式协调服务(如ZooKeeper)以及大数据管理与存储(HBase与Hive)的基本原理与配置;第三篇为实战篇,通过具体案例展示数据中心解决方案与数据前端可视化应用,涵盖DMDIS体系架构、Hadoop数据集成及可视化前端的实现。 本书适合数据库领域的初学者、从业人员以及计算机相关专业的学生阅读,同时也可作为数据库课程的教材或企业技术培训的参考书。

图书摘要

版权信息

书名:达梦数据库原理及应用教程

ISBN:978-7-115-68782-1

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

版  权

主  编 林轶翚  张守帅  李 冬

副 主 编 袁 英  张 爱  王梦洁  王天琪  刘 畅  丁文林  吕红亮  杨 淼  王正先

责任编辑 张 涛

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

本书系统介绍数据库技术的理论基础、实现方法与应用场景,旨在帮助读者深入理解数据库技术的发展、核心原理及其实际应用和优化。本书共3篇:第一篇聚焦关系数据库,从核心概念、关系代数、E-R模型等理论出发,结合主流关系数据库管理系统(如达梦数据库)的安装、部署、管理和操作,深入剖析SQL及表空间管理与安全管理,全面讲解关系数据库的核心技术;第二篇介绍非关系数据库,涵盖键值存储数据库、列存储数据库、文档型数据库与图数据库的核心技术,分析其与关系数据库的区别,探讨Hadoop生态中的分布式存储与计算框架(如HDFS、MapReduce)、分布式协调服务(如ZooKeeper)以及大数据管理与存储(HBase与Hive)的基本原理与配置;第三篇为实战篇,通过具体案例展示数据中心解决方案与数据前端可视化应用,涵盖DMDIS体系架构、Hadoop数据集成及可视化前端的实现。

本书适合数据库领域的初学者、从业人员以及计算机相关专业的学生阅读,同时也可作为数据库课程的教材或企业技术培训的参考书。

前  言

在信息技术飞速发展的今天,数据已经成为推动社会进步的重要驱动力。从科学研究到企业管理,从物联网到人工智能,数据的采集、存储、分析与应用无处不在。数据库是管理和利用数据的核心工具,其发展与计算机技术的演变密不可分,不断向更高效、更灵活、更智能迈进。

传统关系数据库凭借其稳定性、成熟性和通用性,已经被广泛应用于金融、医疗、教育、制造等行业。然而,随着互联网的崛起和大数据时代的到来,数据的类型与规模发生了巨大的变化,传统关系数据库逐渐暴露出扩展性不足和处理非结构化数据能力较弱的缺陷。与此同时,非关系数据库(NoSQL)的兴起,为处理海量、复杂、实时数据提供了新的解决方案。

本书旨在帮助读者构建从关系数据库到非关系数据库的全景知识体系,不仅详细讲解关系数据库的基本原理、核心技术和操作方法,还对当前广泛应用的非关系数据库技术(如Hadoop、HBase、Hive等)进行深入分析,并通过实际案例展示数据库技术在企业和大数据场景中的综合应用。

本书特色

• 理论与实践并重:本书既包含数据库基本原理,又提供详细的安装部署和操作指导,让读者能够从基础理论逐步深入具体实现。

• 技术前沿:本书涵盖当前主流关系数据库和非关系数据库的技术与应用,探讨数据库在大数据和分布式计算中的发展动态。

• 案例驱动学习:本书通过具体的案例(如达梦数据库、Hadoop生态系统等)引领读者从理论走向实践。

读者对象

• 高校师生:计算机科学与技术、信息管理等相关专业的授课教师和学生(包括本科生和研究生),可将本书作为数据库课程的教材或参考书。

• 技术从业者:从事数据库管理、数据分析、后端开发、数据架构设计等工作的工程师,可通过本书掌握数据库技术的基础与进阶应用。

• 企业信息化人员:企业IT部门的技术人员和架构师,可通过本书了解数据库在企业级应用中的最佳实践。

在编写过程中,编者参考了当前主流的数据库技术文档与学术研究成果,并结合自身多年的实践经验,力求内容清晰易懂、条理分明。希望读者在学习本书后能够建立全面的数据库技术知识体系,并具备独立部署和管理数据库系统的能力,从容应对实际工作中的复杂问题。

编者

第一篇
关系数据库

关系数据库是生产环境中广泛使用的数据库,提供了数据规范化和查询方法,同时以表的形式存储数据,便于用户理解。概括地说,关系数据库就是由二维表及表之间的关系组成的数据组织,用户通过查询来检索该数据组织中的数据。

第1章
关系数据库概述

1.1 关系数据库发展历程

1.1.1 数据管理的发展阶段

1.人工处理阶段

20世纪50年代中期以前,计算机处理能力有限,只能进行简单的运算,所以仅用于科学和工程计算。当时的计算机没有专门用于管理数据的软件,数据以文件形式存储在磁带或磁盘上,由各个应用程序自行定义和管理数据,缺乏统一的数据访问机制。此阶段的特点如下。

① 数据无独立性。计算机系统不提供用户数据管理功能,用户编写程序时,必须考虑好相关的数据,包括数据的定义、存储结构以及存取方法等。程序和数据是一个不可分割的整体,数据脱离了程序就无任何存在的价值。

② 数据不能共享。不同程序的数据文件相互独立。这些数据文件通常是专门为某个程序设计的,其数据结构和内容往往存在差异,从而导致各程序无法统一管理和使用数据,也无法方便地交换和共享数据。

③ 数据不单独保存。由于数据与程序是一个整体,数据仅供对应的程序使用,因此数据只有与对应的程序一起保存才有价值,否则就毫无用处,即程序的数据不单独保存。

2.文件系统阶段

20世纪50年代中期至20世纪60年代中期,随着硬件和软件技术的发展,计算机不再仅用于科学计算,还用于商业管理。在这个时期,数据和程序完全分离,数据被单独组织成文件存储在外部存储器中,因此数据文件可以在不同的时间被多个不同的程序使用,而且操作系统也可以帮助管理数据的存储位置和访问路径;但是编程仍然受数据存储格式和方法的影响,并且数据冗余度很高。此阶段的特点如下。

① 数据可以长期保存。

② 数据由文件系统进行管理。程序和数据之间有一定的独立性,程序员不需要过多考虑物理细节,可以将更多的精力放在算法设计上。

③ 数据共享性差。

3.数据库管理系统阶段

20世纪70年代以来,计算机软硬件技术突飞猛进,产生了真正意义上的数据库管理系统(DataBase Management System,DBMS)。数据库管理系统克服了文件系统的缺陷,实现了对数据更高级、更有效的管理。这一阶段,程序和数据之间的联系依赖于数据库管理系统,它真正实现了程序与数据之间的接口统一,使数据共享成为可能,如图1-1所示。

图1-1 数据库管理系统

1.1.2 关系数据库管理系统的主要特点

1.数据结构化

关系数据库管理系统的主要特点之一是数据结构化,这也是关系数据库管理系统与文件系统的本质区别。

2.数据共享性高、冗余度低

关系数据库管理系统从整体的角度描述和组织数据,数据不再面向某个应用程序,而是面向整个系统,可以被多个用户、多个应用程序共享。数据共享可以大大减少数据冗余,避免数据不一致。

3.数据独立性高

数据独立是指数据的使用(即应用程序)与数据的说明(即数据的组织结构与存储方式)分离,应用程序只需要考虑如何使用数据,而无须关心数据库中的数据是如何构造和存储的。数据独立性用来描述应用程序与数据结构之间的依赖程度,包括数据的物理独立性和数据的逻辑独立性,依赖程度越低则独立性越高。物理独立性是指应用程序与数据库中数据的物理结构是相互独立的。逻辑独立性是指应用程序与数据库中数据的逻辑结构是相互独立的。良好的数据独立性确保了应用程序与数据的分离,提升了系统的灵活性,在此基础上,关系数据库管理系统还提供了多种机制以确保数据的安全性、完整性和可靠性。

① 数据安全防护:保护数据以防止不合法的使用造成数据泄露和损坏;保证数据的安全,防止数据丢失。

② 数据的完整性检查:将数据控制在有效的范围内,或保证数据之间满足一定的关系。

③ 并发控制:对多个用户或应用程序同时访问同一个数据的并发操作加以控制和协调,确保得到正确的结果或数据的完整性不遭到破坏。

④ 数据库恢复:当计算机系统发生硬件或软件故障时,数据库可从错误状态恢复到正确状态。

1.1.3 传统关系数据库的瓶颈

1.无法满足高并发读写需求

复杂应用程序的用户并发性非常高,每秒产生的读写请求高达上万次,对传统关系数据库来说,硬盘I/O无法满足高并发读写需求。

2.海量数据下查询效率低

现在的应用程序每天产生的数据量巨大,对于传统关系数据库,在包含海量数据的表中进行查询的效率是非常低的。

3.扩展性和可用性欠佳

在基于Web的结构中,数据库是最难进行横向扩展的,当一个应用程序的用户量和访问量与日俱增时,数据库没有办法像Web Server和App Server那样简单地通过添加更多的硬件和服务节点来提高性能和负载能力。对很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常困难和麻烦的,往往需要停机维护和迁移数据。

4.事务一致性

传统关系数据库在维护事务一致性方面的开销很大,而现在很多Web 2.0系统对事务的读写一致性要求都不高。

5.读写实时性

对关系数据库来说,插入一条数据之后立刻进行查询是可以迅速读出这条数据的。但是很多Web应用并不要求这么高的实时性,比如发出一条消息之后,过几秒乃至十几秒之后用户才看到这条消息是可以接受的。

6.复杂SQL,多表关联查询

任何数据量大的Web系统,尤其是SNS(Social Network Service,社交网络服务)类型的网站,都极为忌讳进行多个大表的关联查询以及复杂的 SQL 报表查询,特别是在涉及复杂数据分析的场景。基于需求和对产品架构的考虑,这类系统通常避免使用复杂的 SQL 操作,而更倾向于进行单表的主键查询或简单的条件分页查询。这种设计大大弱化了 SQL 的功能,但提升了系统的性能和响应速度。

7.数据库的ACID特性

数据库的ACID特性指的是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。为了保证数据库的ACID特性,必须尽量按照一定的范式设计表。在关系数据库中,表用于存储格式化的数据结构,其中每个元组的字段组成都一样,即使字段不是每个元组都需要的,数据库也会将其分配给所有元组。这样的结构便于表之间进行连接等操作,但从另一个角度来说,它也导致了关系数据库的性能瓶颈。

1.2 关系数据库核心概念

1.元组

元组(Tuple)是关系数据库中的基本概念,代表事物特征的组合,可以是具体的人、事、物,也可以是抽象的概念或联系。元组可以理解为二维表中的行,在数据库中常被称为记录。

2.属性

属性(Attribute)为实体某一方面特征的抽象表示,如“教师”实体包含教师编号、姓名、年龄、性别、职称等属性。属性可以理解为二维表中的列,在数据库中常被称为字段。

3.域

属性的取值范围称为属性的域(Domain),也就是数据库中列的取值限制,如“教师”实体中“性别”属性的域为“男”和“女”。

4.主关键字

主关键字(Primary Key)也称主码,用于唯一标识实体的属性集。其在数据库中常被称为主键,由一个或多个列组成,如“教师”实体的主键为“教师编号”。

5.关系

现实世界的事物总是存在着各种各样的关系,这类关系在信息世界中体现为实体之间的关系。实体之间的关系可分为两类:一类是实体内部的关系,即实体各属性之间的关系;另一类是不同实体之间的关系。关系(Relationship)可以理解为二维表,每个关系都有一个名称,也就是通常所说的表名。

6.关系模型

关系模型是现代数据库系统广泛使用的一种数据组织方式,基于集合论中关系的概念建立。在关系模型中,数据的存储和管理以关系(或称表)的形式进行。每个关系都由元组(或称行)组成,而每个元组包含多个属性(或称列)。这种结构使得关系数据库能够有效地存储和检索大量的结构化数据。

举例来说,假设有一个用来存储学生信息的关系模型,现创建一个名为“Students”的关系,其中每个学生的信息存储为一个元组,每个元组包含学生的学号、姓名、年龄、性别等属性,如表1-1所示。

表1-1 Students

学号

姓名

年龄

性别

1001

小明

20

男

1002

小红

21

女

1003

小刚

19

男

在这个例子中,“Students”关系包含3个学生的数据,每个学生的数据存储为一个元组,每个元组的不同属性表示不同的信息(学号、姓名、年龄、性别)。这种结构使得我们能够通过简单的查询语言(如SQL)来执行复杂的数据查询和操作,从而有效地管理和分析数据。

总而言之,关系模型以其简洁而结构化的形式为管理和处理大规模数据提供了有效的方法。

1.3 关系代数

关系代数是一种抽象的查询语言,用关系的运算来表达查询,是研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括4类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算主要可以分为传统的集合运算和专门的关系运算两类。

1.3.1 传统的集合运算

传统的集合运算是二目运算,包括并、差、交、广义笛卡儿积4种。

(1)并。

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并(Union)由属于R或属于S的元组组成。其结果关系仍为n目关系,记作:

(1-1)

(2)差。

设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差(Difference)由属于R而不属于S的所有元组组成。其结果关系仍为n目关系,记作:

(1-2)

(3)交。

设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交(Intersection)由既属于R又属于S的元组组成。其结果关系仍为n目关系,记作:

(1-3)

(4)广义笛卡儿积。

在不会出现混淆的情况下,广义笛卡儿积(Extended Cartesian Product)也称为笛卡儿积。

两个分别为n目和m目的关系R和S的广义笛卡儿积是一个n+m列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡儿积有k1×k2个元组,记作:

(1-4)

1.3.2 专门的关系运算

专门的关系运算(Specific Relation Operation)包括选择、投影、连接、除等。

为了方便叙述,先引入几个记号。

(1)设关系模式为。表示t是R的一个元组。则表示元组t中对应属性Ai的一个分量。

(2)若,其中是中的一部分,则A称为属性列或域列。则表示中去掉后剩余的属性列。 表示元组t在属性列A上所有分量的集合。

(3) R为n目关系,S为m目关系。设,,则称为元组的连接(Concatenation)。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。

(4)给定一个关系R(X, Z),X和Z为属性列。当t[X] = x时,x在R中的象集(Image Set)为:

(1-5)

Zx表示R中属性列X上值为x的所有元组在Z上分量的集合。

(1)选择。

选择(Selection)又称为限制(Restriction),是关系代数中的一种基本运算。它是在关系R中选择满足给定条件的所有元组,记作:

(1-6)

其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。

逻辑表达式F的基本形式为:

(1-7)

θ表示比较运算符,可以是>、≥、<、≤、=或≠。X1、Y1表示属性名、常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,可以是¬、∧或∨。[ ]表示可选项,即[ ]中的部分可以要也可以不要。

常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,可以是¬、∧或∨。[ ]表示可选项,即[ ]中的部分可以要也可以不要。

常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,可以是¬、∧或∨。[ ]表示可选项,即[ ]中的部分可以要也可以不要。

常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,可以是¬、∧或∨。[ ]表示可选项,即[ ]中的部分可以要也可以不要。

因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。

逻辑表达式F为真的元组。这是从行的角度进行的运算。

逻辑表达式F为真的元组。这是从行的角度进行的运算。

逻辑表达式F为真的元组。这是从行的角度进行的运算。

(2)投影。

关系R上的投影(Projection)是从R中选择出若干属性列组成新的关系,记作:

(1-8)

其中A为R中的属性列。

(3)连接。

连接(Join)包括θ连接、自然连接、外连接、半连接。它是从两个关系的广义笛卡儿积中选取属性间满足一定条件的元组。

自然连接、外连接、半连接。它是从两个关系的广义笛卡儿积中选取属性间满足一定条件的元组。

自然连接、外连接、半连接。它是从两个关系的广义笛卡儿积中选取属性间满足一定条件的元组。

自然连接、外连接、半连接。它是从两个关系的广义笛卡儿积中选取属性间满足一定条件的元组。

连接运算从R和S的广义笛卡儿积R×S中选取(R关系)A属性列上的值与(S关系)B属性列上的值满足比较关系θ的元组。

连接运算中有两种十分重要且十分常用的连接,一种是等值连接(Equijoin),另一种是自然连接(Natural Join)。

其中,等值连接是θ连接的一种情况。θ为“=”的连接称为等值连接。它是从关系R与S的广义笛卡儿积中选取A、B属性列上的值相等的元组。

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性列,并且要在结果中把重复的属性去掉。

一般的连接运算是从行的角度进行的运算。因为自然连接还需要取消重复列,所以它是同时从行和列的角度进行的运算。

(4)除(Division)。

除法运算是关系代数中“反连接”运算,用来找出那些“在所有给定B-值上都出现”的A-值。

设关系

- R(A,B) ——含属性集A、B

- S(B) ——仅含属性B

则除运算的标准公式为

R ÷ S = π_A (R) − π_A((π_A(R) × S) − R)

解释步骤

① π_A(R)得到R中所有可能的A-值。

② π_A(R) × S生成“理论上应该出现的”全部(A,B)组合。

③ (π_A(R) × S) − R把R里已有的(A,B)去掉,剩下“缺失”的组合。

④ 再对这些缺失组合投影到A,得到“至少缺一个B”的A-值集合。

⑤ 最后从全部A-值中去掉这些“有缺失”的A-值,剩下的就是“在所有B-值上都出现”的A-值,即除运算结果。

1.4 E-R模型

E-R模型(Entity-Relationship Model)是一种数据模型,用于描述现实世界中数据之间的关系。它由陈品山(Peter Chen)于1976年提出,是设计和规划关系数据库的基础工具之一。E-R模型可以形象地用图形表示,故又称E-R图。

1.4.1 E-R模型主要概念

(1)实体。

实体(Entity)是在现实世界中存在的可区分的对象,可以是具体的事物(如人、地点、物品)或抽象的概念(如课程、订单、账户)。实体在E-R图中用矩形表示,矩形内标注实体名(一般用名词)。

(2)属性。

属性(Attribute)是实体具有的特征或性质,用来描述实体的特点,如人的姓名、年龄等。属性在E-R图中用椭圆形表示,椭圆形内标注属性名(一般用名词),并用线将其与相应的实体连接起来。

(3)关系。

关系(Relationship)是实体之间的联系或连接,描述不同实体之间的互动或关联,如“学生参加课程”是学生和课程之间的关系。关系在E-R图中用菱形表示,菱形内标注关系名(一般用动词),并用线将其与有关实体连接起来,同时在连线旁标注上关系的类型。

(4)主键。

主键(Primary Key)是用于唯一标识实体的属性或属性组合。每个实体集合必须有一个主键,用于唯一地标识实体。

(5)外键。

外键(Foreign Key)是表示实体之间关系、指向另一个表的主键的属性,用来实现不同表之间的联系。

1.4.2 建模过程

建立E-R模型的过程包括以下步骤。

(1)识别实体:识别现实世界中的主要实体。

(2)确定属性:确定每个实体的属性。

(3)识别关系:确定实体之间的关系。

(4)确定主键:确定每个实体的主键,确保实体的唯一性。

(5)确定外键:如果需要,对于已识别的实体间关系,使用外键在数据层面建立联系。

例如,图 1-2 反映实体学生、课程、院系的属性(为了简明起见,略去了部分属性),以及学生与课程、学生与院系的关系。需要说明的是,关系也可以有属性,如属性成绩是学生与课程的关系——选课的结果,故可以作为“选课”关系的属性。

图1-2 用E-R图表示的概念模型示例

1.4.3 E-R模型的优点

• 简单直观:使用图形化的方式表示数据之间的关系,易于理解和沟通。

• 高灵活性:能够呈现复杂的数据模型,并且支持扩展和修改。

• 适用于数据库设计:设计关系数据库的重要工具,有助于规划表结构和数据的组织方式。

E-R模型作为数据库设计的基础模型,通过图形化的方式帮助开发者和数据库设计师更好地理解和构建关系数据库结构。

习题

1.关系数据库的ACID特性包含(  )。(多选)

A.原子性(Atomicity)

B.一致性(Consistency)

C.隔离性(Isolation)

D.持久性(Durability)

2.在关系模型中,数据的存储和管理以关系(或称表)的形式进行。每个关系都由元组(或称行)组成,而每个元组包含多个属性(或称列)。(  )(判断)

3.简述关系数据库的ACID特性。

4.设计高校图书管理系统数据库的E-R模型。

相关图书

SDD实战:规范驱动开发之道
SDD实战:规范驱动开发之道
Agent Skills开发实战像搭积木一样构建智能体
Agent Skills开发实战像搭积木一样构建智能体
Codex快速入门:Harness工程落地
Codex快速入门:Harness工程落地
Harness工程实战:从零开始驾驭AI软件工程
Harness工程实战:从零开始驾驭AI软件工程
Agent设计模式 图解可复用智能体架构
Agent设计模式 图解可复用智能体架构
构建之法——现代软件工程(第四版)
构建之法——现代软件工程(第四版)

相关文章

相关课程