欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

软件设计师笔记--数据库技术基础

最编程 2024-10-03 21:29:38
...

数据库种类

数据库的种类繁多,根据数据的组织方式、存储结构以及应用场景的不同,可以分为多种类型。以下是一些常见的数据库种类:

关系型数据库(RDBMS)
  • 定义:关系型数据库是基于关系模型来存储和管理数据的数据库系统。数据被组织成表格的形式,每个表格包含一系列的行和列,数据之间通过关系(如外键)相互关联。
  • 特点:数据独立性高、数据一致性和数据安全性强。
  • 常见产品:MySQL、Oracle、SQL Server、PostgreSQL等。
非关系型数据库(NoSQL)
  • 定义:非关系型数据库泛指非关系型的、分布式的、且一般不保证遵循ACID原则的数据库系统。它们不使用传统的表格结构来存储数据,而是使用键值对、文档、列族或图形等方式来组织数据。
  • 特点:高度可扩展性、灵活性、适用于大数据和实时应用场景。
  • 常见产品:MongoDB(文档数据库)、Redis(键值存储数据库)、Cassandra(列存储数据库)、Neo4j(图形数据库)等。
分布式数据库
  • 定义:分布式数据库是一种数据分布在多个物理节点上的数据库系统,这些节点通过网络相互连接,共同构成一个逻辑上的整体。
  • 特点:数据分布透明、并发控制透明和故障恢复透明,适用于大规模数据集的存储和处理。
  • 常见产品:Google Spanner、Cassandra、HBase等。
内存数据库(IMDB)
  • 定义:内存数据库将数据存储在内存中,以提供极高的读写速度。它们通常用于需要超高性能的应用场景,如在线交易处理、实时分析等。
  • 特点:访问速度快,但受限于内存容量。
  • 常见产品:Redis、Memcached、VoltDB等。
其他类型数据库
  • 文档数据库:如MongoDB、CouchDB等,以文档(如JSON或BSON格式)的形式存储数据,适合处理半结构化数据。
  • 图形数据库:如Neo4j、OrientDB等,以图的形式存储数据,能够高效地表示和查询数据之间的关系。
  • 时序数据库:如InfluxDB、TimeScaleDB等,专门用于处理时间序列数据,适用于监控和物联网应用。
  • 对象数据库:如ObjectDB、Versant等,以对象的形式存储数据,支持面向对象编程。
  • XML数据库:如eXist-db、BaseX等,专门用于存储和查询XML数据。

数据库系统

数据库系统是一个复杂的系统,由多个关键组件构成,主要包括数据库、硬件、软件和人员。

数据库
  • 定义:数据库(Database,简称DB)是长期存储在计算机内的、有组织的、可共享的数据集合。这些数据按一定的数学模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
  • 特点:数据库中的数据具有一定的结构,可以是关系型数据库(如Oracle、SQL Server、MySQL等)或非关系型数据库(如MongoDB、Redis等)。
硬件
  • 核心组件:数据库系统的硬件包括处理器、内存、存储设备和输入/输出设备。
    • 处理器:负责执行数据库操作和管理数据库系统的任务,其性能直接影响到数据库系统的运行效率。
    • 内存:用于存储处理器执行操作时所需的数据和程序,其大小和速度对数据库系统的性能有显著影响。
    • 存储设备:主要是硬盘和固态硬盘(SSD),用于持久化存储数据库的数据,其容量、速度和稳定性都会影响数据库系统的运行效果。
    • 输入/输出设备:如键盘、鼠标、显示器等,用于用户与数据库系统的交互。
  • 其他硬件:还可能包括网络接口卡(用于连接服务器与网络,实现数据的传输和通信)等。
软件
  • 操作系统:为数据库管理系统(DBMS)和其他应用程序提供运行环境。
  • 数据库管理系统(DBMS):是数据库系统的核心软件,负责科学地组织和存储数据,以及高效地获取和维护数据。DBMS的主要功能包括数据定义、数据操纵、数据库的运行管理和数据库的建立与维护。
  • 应用程序:利用DBMS提供的功能编写,用于实现特定的数据处理和业务逻辑。
  • 其他软件:还可能包括支持DBMS的操作系统、具有与数据库接口的高级语言及其编译系统、以DBMS为核心的应用开发工具等。
人员
  • 数据库管理员(DBA):负责数据库的总体信息控制,包括数据库的创建、监控、维护和优化。DBA需要确保数据库的安全性、完整性和性能。
  • 系统分析员和数据库设计人员:负责应用系统的需求分析和规范说明,以及数据库的设计和优化。
  • 应用程序员:负责编写使用数据库的应用程序,实现对数据的检索、建立、删除或修改等操作。
  • 最终用户:利用系统的接口或查询语言访问数据库,以获取所需的信息或执行相应的操作。

DBMS(数据库管理系统)的功能

  • 数据定义
  • 数据库操作
  • 数据库运行管理
  • 数据组织、存储和管理
  • 数据库的建立和维护
  • 与其他软件系统的通信功能等

DBMS 的特征

  • 数据结构化且统一管理
  • 有较高的数据独立性
  • 数据控制功能(数据库的安全性保护、数据的完整性、并发控制、故障恢复)

数据库系统体系结构

  • 集中式(数据、数据管理、数据库功能等都集中在一起)
  • 分布式(物理上分布+逻辑上分布)
  • C/S 模式(客户端负责数据表示服务、服务器负责数据库服务)
  • 并行结构(多个 CPU 物理上连在一起处理)

数据库的三级模式

  • 概念模式(数据库中全部数据的逻辑结构和特征的描述、只涉及型的
    描述而不涉及具体的值)
  • 外模式(用户与数据库系统的接口、用户用到那部分数据的描述)
  • 内模式(数据物理结构和存储方式的描述、数据在数据库内部的表示方式)

数据库的两级映像

  • 模式/内模式映像(实现概念模式与内模式的转换)
  • 外模式/模式映像(实现外模式与概念模式的转换)

数据的独立性

  • 物理独立性(数据库的内模式改变时数据的逻辑结构不变)
  • 逻辑独立性(用户的应用程序与数据库的逻辑结构相互独立)

数据模型

  • 概念数据模型(E-R 模型等)
  • 基本数据模型
    • 层次模型:用树型结构表示数据间的联系
    • 网状模型:用网络结构表示数据间的联系
    • 关系模型:用表格结构表示实体间的联系
    • 面向对象模型:对象标识+封装+对象的属性+类和类层次+继承

数据模型三要素

  • 数据结构
  • 数据操作
  • 数据的约束条件

E-R 图

  • 实体(矩形)
  • 联系(菱形)
  • 属性(椭圆形)

完整性约束

  • 实体完整性
  • 参照完整性
  • 用户自定义完整性

关系代数运算

  • 笛卡尔积
  • 投影
  • 选择
  • 连接

SQL 语言的特点

  • 综合统一
  • 高度非过程化
  • 面向集合的操作方式
  • 两种使用方式(自含式、嵌入式)
  • 语言简洁易学易用

SQL 语言的组成

  • 数据定义语言
  • 交互式数据操纵语言
  • 事务控制
  • 嵌入式 SQL 和动态SQL
  • 完整性
  • 权限管理

SQL 数据定义

  • 创建(create)
  • 修改(alter)
  • 删除(drop)
  • 表(table)
  • 视图(view[as select])
  • 索引(index[on])

SQL 数据查询

select…from…where…group by…having…order by…

插入数据

insert into…values…

修改数据

update…set…=…where…

删除数据

delete from…where…

授权

grant…on…to…(with grant option)

回收权限

revoke…on…from…

函数依赖

  • 反映属性间的联系(X→Y)
  • 完全函数依赖:(学生 ID,所修课程 ID)→成绩
  • 部分函数依赖 :(学生 ID,所修课程 ID)→学生姓名
  • 平凡函数依赖:X→Y 且 Y 包含于 X
  • 非平凡函数依赖:X→Y 且 Y 不包含于 X
  • 传递函数依赖:X→Y,Y→Z

规范化

  • 1NF:每个分量都不可再分
  • 2NF:消除非主属性对码的部分函数依赖
  • 3NF:消除非主属性对码的传递函数依赖

模式分解标准

  • 无损连接
  • 保持函数依赖

事务的 ACID 性质

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

事务管理

  • 事务开始(begin transaction)
  • 事务提交(commit)
  • 事务回滚(rollback)

数据库故障

  • 事务内部故障
  • 系统故障
  • 介质故障
  • 计算机病毒

数据备份方法

  • 静态转储和动态转储
  • 海量转储和增量转储
  • 日志文件

数据恢复步骤

  • 反向扫描文件日志
  • 对事物的更新操作执行逆操作
  • 继续反向扫描和更新,直到事务的开始标志

并发控制的技术

并发控制技术是数据库管理系统中确保数据一致性和事务隔离性的重要手段。其中,*技术是实现并发控制的一种关键技术,它通过加锁和解锁机制来控制多个事务对同一数据对象的并发访问。*技术中的写锁(排他锁,X锁)和读锁(共享锁,S锁)是两种基本的锁类型。

*技术概述

*技术是指当一个事务在对某个数据对象进行操作之前,先向系统发出请求,对其加锁。成功加锁之后,该事务就获得了对该数据的控制权,其他事务在锁被释放之前不能对该数据进行更新。这种机制有效地防止了并发事务之间的数据不一致问题。

写锁(排他锁,X锁)

定义

  • 写锁又称为排他锁或X锁。当事务T对数据对象A加上X锁时,只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的X锁。

特点

  • 排他性:在X锁被持有的期间,其他事务不能对同一数据对象进行读取或修改。
  • 严格性:写操作必须使用X锁,以确保数据的一致性和完整性。
读锁(共享锁,S锁)

定义

  • 读锁又称为共享锁或S锁。当事务T对数据对象A加上S锁时,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。

特点

  • 共享性:在S锁被持有的期间,多个事务可以同时读取同一数据对象,但都不能进行修改。
  • 兼容性:S锁与S锁之间是兼容的,但S锁与X锁之间是不兼容的。
*的粒度

*的数据对象可以是逻辑单元(如属性值、属性值集合、元组、关系、索引项等)或物理单元(如页、块等)。*粒度的大小与系统的并发度和并发控制的开销密切相关。选择*粒度时,需要权衡开销和并发度两个因素,以求达到最优的效果。

*协议

在运用X锁和S锁对数据对象加锁时,需要约定一些规则,这些规则被称为*协议。常见的*协议包括三级*协议和两段锁协议等。这些协议通过规定何时申请锁、持锁时间和何时释放锁等规则,来确保数据的一致性和事务的隔离性。

活锁与死锁

*技术虽然可以有效地解决并行操作的一致性问题,但也可能带来活锁和死锁等问题。活锁是指系统可能使某个事务永远处于等待状态,得不到*的机会。死锁则是指系统中两个或两个以上的事务都处于等待状态,并且每个事务都在等待其中另一个事务解除*,结果造成任何一个事务都无法继续执行。

为了避免活锁和死锁,可以采取一些策略和方法,如采用先来先服务的策略、一次*法、顺序*法等。此外,数据库管理系统还会通过诊断并解除死锁的方法来保证系统的正常运行。

数据不一致性

  • 丢失修改
  • 不可重复读
  • 读脏数据

推荐阅读