架构师备考-数据库基础
基本概念
- 数据(Data):是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。
- 信息(information):是现实世界事物的存在方式或状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性,信息已是各行各业不可缺少的资源,这也是信息的社会属性。
- 数据是信息的符号表示,而信息是具有特定释义和意义的数据。
- 数据库(DataBase,DB):是统一管理的、长期存储在计算机内的,有组织的相关数据的集合。其特点是数据间关联密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。一般主要指的是存储数据的各种物理设备以及数据本身。
- 数据库系统(DBS):DBS 是采用了数据库技术,有组织地、动态地存储大量相关关联数据,从而方便多用户访问的计算机系统。广义上讲,DBS 包括了数据库管理系统(DBMS)
-
DBMS:DBMS 是数据库系统的核心软件,是由一组互相关联的数据集合和一组用以访问这些数据的软件组成。DBMS 要在操作系统的支持下工作,它是一种解决如何科学地组织和存储数据,如何高效的获取和维护数据的系统软件。其主要功能包括数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。
数据库分类
时期 | 类型 |
早期 | 层次式数据库 |
早期 | 网络式数据库 |
早期 | 关系型数据库 |
现代 | 关系型数据库 |
现代 | 非关系型数据库 |
数据库存储体系分类 | 关系型数据库 |
数据库存储体系分类 | 键值(Key-Value)数据库 |
数据库存储体系分类 | 列存储数据库 |
数据库存储体系分类 | 文档数据库 |
数据库存储体系分类 | 索引数据库 |
层次和网状数据库系统
层次模型采用树形结构表示数据与数据间的联系。在层次模型中,每个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根结点以外的其他结点有且仅有一个双亲结点。上层和下一层类型的联系是1:n 联系(包括1:1联系)。
采用网络结构表示数据间联系的数据模型称为网状模型。在网状模型中,允许一个以上的结点无双亲,或者一个结点可以有多于一个的双亲。
网状模型是一个比层次模型更具有普遍性的数据结构,层次模型是网状模型的一个特例。网状模型可以直接的描述现实世界,因为去掉了层次模型的两个限制,允许两个结点之间有多种联系(称之为复合联系)。需要说明的是,网状模型不能表示记录之间的多对多联系,需要引入联结记录来表示多对多联系。
层次或网状模型,底层的数据结构均可用图来表示。二者的共同特点如下。
- 支持三级模式的体系结构;
- 用存取路径来表示数据之间的联系;
- 独立的数据定义语言;
- 导航的数据操纵语言;
关系型数据库系统
关系模型是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。
关系模型是由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。变量的值随时间可能会发生变化,类似的,当关系被更新时,关系实例的内容也发生了变化。
由于关系模型比网状、层次模型更为简单灵活,因此,数据处理领域中,关系数据库的使用已相当普遍。
非关系型数据库系统
No SQL 一词最早出现于 1998 年,是Carlo Strozzi 开发的一个轻量、开源、不提供SQL 功能的关系数据库。2009年,Last.fm 的 Johan Oskarsson 发起了一次关于分布式开源数据库的讨论,来自 Rackspace 的 Eric Evans 再次提出了 No SQL 的概念,这时的 No SQL 主要指非关系型、分布式、不提供 ACID 的数据库设计模式。
随着互联网Web 2.0网站的兴起,传统的关系数据库在处理 Web 2.0 网站,特别是超大规模和高并发的SNS 类型的 Web2.0 纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型数据库则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了面对大规模数据集合和多重数据种类带来的挑战,特别是大数据应用难题。
DBMS 功能
DBMS 功能包括数据定义、数据库操作、数据运行管理、数据组织、存储和管理、数据库的建立和维护、其他功能
- 数据定义:DBMS 提供数据定义语言(Data Definition Language,DDL),可以对数据库的结构进行描述,包括外模式、模式和内模式的定义;数据的完整性定义;安全保密定义,入口令、级别和存取权限等。这些定义存储在数据字典中,是DBMS 运行的基本依据。
- 数据库操作:DBMS 向用户提供数据操纵语言(Data Manipulation Language,DML),实现对数据库中数据的基本操作,如检索、插入、修改和删除。
- 数据运行管理:数据库在运行期间,多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等都是DBMS 的重要组成部分。这些功能可以保证数据库系统的正常运行。
- 数据组织、存储和管理:DBMS 分类组织、存储和管理各种数据,包括数据字典、用户数据和存取路径等。要确定以何种文件结构和存取方式在存储级别上组织这些数据,以提高存取效率。实现数据间的联系,数据组织和存储的基本目标是提高存储空间的利用率。
- 数据库的建立和维护:数据库的建立和维护,包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据的重组和重构、性能检测和分析等。
- 其他功能:如DBMS 与网络中其他软件系统的通信功能,一个DBMS 与另一个DBMS 或文件系统的数据转换功能等。
DBMS 特点
- 数据结构化且统一管理。数据库中的数据由DBMS 统一管理。由于数据系统采用数据模型表示数据结构,数据模型不仅描述数据本身的特点,还描述数据之间的联系。数据不再面向某个应用,而是面向整个企业内的所有应用。数据易维护,易扩展,数据冗余明显减少,真正实现了数据的共享。
- 有较高的数据独立性。数据的独立性是指数据与程序独立,将数据的定义从程序中分离出去,由DBMS 负责数据的存储,应用程序关心的只是数据的逻辑结构,无需了解数据在磁盘上的存储形式,从而简化应用程序,大大减少应用程序编制的工作量。数据的独立性包括数据的物理独立性和数据的逻辑独立性。
- 数据控制功能
- 数据的安全性。是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。这样,用户只能按规定对数据进行处理,例如,划分了不同的权限,有的用户只有读数据的权限,用户只能在规定的权限范围内操作数据库。
- 数据的完整性。是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的更新。
- 并发控制。是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。DBMS 的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据。
- 故障恢复。数据库中的常见故障是事务内部故障、系统故障、介质故障以及计算机病毒等。故障恢复主要是指恢复数据库本身,即在故障导致数据库状态不一致时,将数据库恢复到某个正确状态或一致状态。恢复的原理非常简单,就是要建立冗余数据。换句话说,确定数据库是否可恢复的方法就是其包含的每一条信息是否都可以利用冗余的存储在别处的信息重构。
数据库三级模式
开发人员角度的
- 视图层:是最高层次的抽象,描述整个数据库的某个部分的数据。因为数据库系统的很多用户并不关心数据库中的所有信息,而只关心需要的那部分数据。可以通过构造视图层来实现用户的数据需求,这样做不仅使用户与系统交互简化,而且还可以保证数据的保密性和安全性。
- 逻辑层:比物理层更高一层的抽象,描述数据库中存储的数据以及这些数据间存在的关系。逻辑层通过相对简单的结构描述了整个数据库。尽管逻辑层简单结构的实现涉及了复杂的物理层结构,但逻辑层的用户不必知道这些复杂性。因为逻辑层抽象是数据库管理员的职责,管理员确定数据库应保存哪些信息。
- 物理层:最低层次的抽象,描述数据在存储器中是如何存储的。物理层详细地描述复杂的底层结构。
管理数据库系统的角度
- 外模式:也称用户模式或子模式;用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据
- 概念模式:概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
- 内模式:也称存储模式,内模式是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式
两级映像
- 逻辑独立性:外模式和概念模式之间的映射。应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变。
- 物理独立性:概念模式和内模式之间的映射。应用程序与磁盘中的数据相互独立。当数据的物理存储改变时,应用程序不变。
数据模型
数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。
数据模型的三要素是:数据结构、数据操作和数据的约束条件。
- 数据结构。对象类型的集合,是对系统静态特性的描述
- 数据操作。对数据库中各种对象的实例允许执行的操作集合,包括操作及操作规则。如操作有检索、插入、删除和修改,操作规则有优先级等。数据操作是对系统动态特性的描述。
- 数据的约束条件。是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。
- 数据模型分为概念数据模型(实体-联系模型模型)和基本数据模型。
- 概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库设计。概念模型主要用实体-联系方法表示,所以也称E-R 模型。
- 基本数据模型是按照计算机系统的观点来对数据和信息建模,主要用于DBMS 的实现。基本数据模型是数据库系统的核心和基础。常用的基本数据模型有层次模型、网状模型、关系模型和面向对象模型。
应用函数与数据库的交互
库函数级别访问接口
- 如Oracle 数据库的 Oracle Call Interface(OCI),开发者可以使用高级程序语言编写程序实现人机交互和业务逻辑,而使用OCI 来访问数据库。OCI 是或一组应用程序开发接口(API)组成的,Oracle 提供API 的方式提供一组库。这组库包含一系列的函数调用。
- 包括:连接数据库、调用SQL、事务控制
- OCI 的缺点是往往依赖于特定的数据库,需要数据库开发人员对该数据库机制有较深的理解,开发效率不高。
嵌入SQL 访问接口
为了实现对于嵌入式SQL 的支持,技术上必须解决以下问题
- 宿主语言的编译器不能识别和接收SQL 程序,需要解决如何将SQL 的宿主语言源代码编译成可执行的代码
- 宿主语言的应用程序如何与DBMS 之间传递数据和消息
- 如何把对数据的查询结果逐次赋值给宿主语言程序中的变量,以供其处理
- 数据库的数据类型和宿主语言的数据类型有时不完全对应或等价、如何解决必要的数据类型转换问题。
通用数据接口标准
开放数据库连接(ODBC)是为解决异构数据库间的数据共享而产生的。
在具体操作时,首先必须用ODBC 管理器注册一个数据源,管理器根据数据源提供的数据库位置,数据库类型即ODBC 驱动程序等信息,建立起ODBC 与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC 就能建立起与相应数据库的连接。
- 数据库访问对象 (DAO)
- 远程数据库对象 (RDO)
- ActiveX 数据对象 (ADO)
- ADO.NET 是微软在.NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。
- JDBC Java 数据库连接
ORM 访问接口
对象关系映射(ORM) 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统数据之间的转换。ORM 是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射;ORM 可以解决数据库与程序间的异构性。
ORM 是一种将内存的对象保存到关系型数据库中的技术,主要负责实体域对象的持久化,封装数据库访问细节,提供了实现持久化层的另一种模式,采用映射元数据来描述对象-关系的映射细节,使得ORM 中间件能在任何一个应用的业务逻辑层和数据库之间充当桥梁。
- HIbernate :全自动的框架,强大、复杂、笨重、学习成本高
- Mybatis:半自动的框架
- JPA:JPA 通过JDK5.0 注解或XML 描述对象-关系表的映射关系,是Java 自带的框架
大型数据库管理系统的特点
- 基于网络环境的数据库管理系统。可以用于C/S 结构的数据库应用系统,也可以用于B/S 结构的数据库应用系统
- 支持大规模的应用。可支持数千个并发用户,多达上百万的事务处理和超过数百GB 的数据容量
- 提供的自动锁功能使得并发用户可以安全而高效的访问数据
- 可以保证系统的高度安全性
- 提供方便而灵活的数据备份和恢复方法即设备镜像功能,还可以利用操作系统提供容错功能,确保设计良好的应用中的数据发生意外的情况下可以最大限度地被恢复
- 提供多种维护数据完整性的手段
- 提供了方便易用的分布式处理功能