【软件系统架构】系列三:数据库系统之三

发布于:2025-03-06 ⋅ 阅读:(134) ⋅ 点赞:(0)

1.数据故障与备份

1.1 安全措施

措施 说明
用户标识和鉴定 最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式
存取控制 对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限。
密码存储和传输 对远程终端信息用密码传输
视图的保护 对视图进行授权
审计 使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来

1.2 数据故障

故障关系 故障原因 解决方法
事务本身的可预期故障 本身逻辑 在程序中预先设置Rollback语句
事务本身的不可预期故障 算术溢出、违反存储保护 由DBMS的恢复子系统通过日志,撤销事务对数据库的修改,回退到事务初始状态
系统故障 系统停止运转 通常使用检查点法
介质故障 外存被破坏 一般使用日志重做业务

1.3 数据备份

1.3.1 静态转储(冷备份)

  • 定义: 在转储期间不允许对数据库进行任何存取、修改操作。

  • 优点:非常快速的备份方法。

    • 容易归档(直接物理复制操作)。

  • 缺点:

    • 只能提供到某一时间点上的恢复。

    • 不能做其他工作。

    • 不能按表或按用户恢复。

1.3.2 转储(热备份)

  • 定义: 在转储期间允许对数据库进行存取、修改操作,因此,转储和用户事务可并发执行。

  • 优点:

    • 可在表空间或数据库文件级备份。

    • 数据库仍可使用。

    • 可达到秒级恢复。

  • 缺点:

    • 不能出错,否则后果严重。

    • 若热备份不成功,所得结果几乎全部无效。

1.3.3 完全备份

  • 定义: 备份所有数据。

1.3.4 差量备份

  • 定义: 仅备份上一次完全备份之后变化的数据。

1.3.5 增量备份

  • 定义: 备份上一次备份之后变化的数据。

1.3.6 日志文件

  • 定义: 在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。

  • 作用: 一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。

  • 重要性: 备份毕竟是有时间节点的,不是实时的。例如:上一次备份到这次备份之间数据库出现了故障,则这期间的数据无法恢复。因此,引入日志文件,可以实时记录针对数据库的任何操作,保证数据库可以实时恢复。

2.分布式数据库

分布式数据库是一个由多个物理上分散的数据库组成的逻辑统一的数据库系统。这些物理上分散的数据库通过网络连接,协同工作,为用户提供统一的数据访问接口。

分布式数据库
分布式数据库

分布式数据库的特点:

  • 物理分布性: 数据存储在不同的物理位置。

  • 逻辑整体性: 虽然数据分散存储,但用户感觉像是在操作一个单一的数据库。

  • 站点自治性: 每个局部数据库都有一定的自治能力。

  • 数据分布透明性: 用户无需关心数据的具体分布情况。

分布式数据库的优势:

  • 高可用性: 部分节点故障不影响整体服务。

  • 高扩展性: 可以通过增加节点来扩展存储和处理能力。

  • 性能提升: 可以将数据分布在离用户更近的位置,减少网络延迟。

分片模式

  • 水平分片: 将表中水平的记录分别存放在不同的地方。

  • 垂直分片: 将表中的垂直的列值分别存放在不同的地方。

分布式数据库的透明性:

  • 分片透明性: 用户无需知道数据是如何分片存储的。

  • 位置透明性: 用户无需知道数据存储在哪个物理位置。

  • 逻辑透明性: 用户无需知道局部数据库使用的数据模型。

  • 复制透明性: 用户无需知道数据的复制情况。

3.数据仓库与数据挖掘

3.1 数据仓库

  • 定义: 数据仓库是一种特殊的数据库,也是按数据库形式存储数据的,但是目的不同。数据库经过长时间的运行,里面的数据会保存的越来越多,就会影响系统运行效率。对于某些程序而言,很久之前的数据并非必要的,因此,可以删除掉以减少数据,增加效率,考虑到删除这些数据比较可惜,因此,一般都将这些数据从数据库中提取出来保存到另外一个数据库中,称为数据仓库。

3.2 数据仓库四大特点

  • 面向主题: 按照一定的主题域进行组织的。

  • 集成的: 数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。

  • 相对稳定的: 数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。

  • 反映历史变化: 数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时间点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。

3.3 数据仓库的结构通常包含四个层次

如下图所示:

数据仓库体系架构
数据仓库体系架构

(1)数据源: 是数据仓库系统的基础,是整个系统的数据源泉。

(2)数据的存储与管理: 是整个数据仓库系统的核心。

(3)OLAP(联机分析处理)服务器: 对分析需要的数据进行有效集成,按多维模型组织,以便进行多角度、多层次的分析,并发现趋势。

(4)前端工具: 主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。

3.4 数据挖掘的分析方法

  • 关联分析: 主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。

  • 序列分析: 主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列,发现的序列应该具有普遍意义。

  • 分类分析: 通过分析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。

    • 分类分析时首先为每个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。

  • 聚类分析: 是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。

3.5 商业智能 BI

  • BI系统主要包括数据预处理、建立数据仓库、数据分析和数据展现四个主要阶段。

  • 数据预处理: 是整合企业原始数据的第一步,它包括数据的抽取(Extraction)、转换(Transformation)和加载(Load)三个过程(ETL过程);

  • 建立数据仓库: 则是处理海量数据的基础;

  • 数据分析: 是体现系统智能的关键,一般采用联机分析处理(OLAP)和数据挖掘两大技术。

    • 联机分析处理: 不仅进行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能,用户可以方便地对海量数据进行多维分析。

    • 数据挖掘: 的目标则是挖掘数据背后隐藏的知识,通过关联分析、聚类和分类等方法建立分析模型,预测企业未来发展趋势和将要面临的问题;

  • 数据展现: 在海量数据和分析手段增多的情况下,数据展现则主要保障系统分析结果的可视化。

4.反规划化技术

背景:

  • 规范化操作可以防止插入异常、更新、删除异常和数据冗余,一般是通过模式分解,将表拆分,来达到这个目的。

  • 但是表拆分后,解决了上述异常,却不利于查询,每次查询时,可能都要关联很多表,严重降低了查询效率。

目的:

  • 提高查询效率。

技术手段:

  • 增加派生性冗余列

  • 增加冗余列

  • 重新组表

  • 分割表

本质:

  • 主要就是增加冗余,提高查询效率,为规范化操作的逆操作。

5.SQL语言

5.1 SQL 语言中的语法关键字

  • 创建表: create table

  • 指定主键: primary key()

  • 指定外键: foreign key()

  • 修改表: alter table

  • 删除表: drop table

  • 索引: index

  • 视图: view

  • 数据库查询: select...from...where

  • 分组查询: group by

    • 分组时要注意 select 后的列名要适应分组

    • having 为分组查询附加条件

  • 更名运算: as

  • 字符串匹配: like

    • % 匹配多个字符串

    • _ 匹配任意一个字符串

  • 数据库插入: insert into...values()

  • 数据库删除: delete from...where

  • 数据库修改: update...set...where

  • 排序: order by

    • 默认为升序

    • 降序要加关键字 DESC

  • 授权: grant...on...to

    • with grant option:允许其将权限再赋给另一用户

  • 收回权限: revoke...on...from

  • with check option 表示要检查 where 后的谓词条件

  • DISTINCT 过滤重复的选项,只保留一条记录

  • UNION 出现在两个 SQL 语句之间,将两个 SQL 语句的查询结果取或运算,即值存在于第一句或第二句都会被选出

  • INTERSECT 对两个 SQL 语句的查询结果做与运算,即值同时存在于两个语句才被选出

5.2 SQL 语法原理

  • SELECT 之后的为要查询显示的属性列名

  • FROM 后面是要查询的表名

  • WHERE 后面是查询条件

  • 涉及到平均数、最大值、求和等运算,必须要分组,group by 后面是分组的属性列名,分组的条件使用 Having 关键字,后面跟条件

  • 在 SQL 语句中,条件判断时数字无需打引号,字符串要打单引号

6.NoSQL数据库

6.1 定义:

  • NoSQL 最常见的解释是 Non-Relational(非关系型),Not Only SQL 也被很多人接受。

  • NoSQL 仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库。

  • 它们不保证关系数据的 ACID 特性。

6.2 数据模型分类:

  • 按照所使用的数据结构的类型,一般可以将 NoSQL 数据库分为以下 4 种类型:

        列式存储数据库:
    • 行式数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。

    • 列式数据库是按数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成,每条页链对应表中的一个存储列。

        键值对存储数据库:
    • 键值存储的典型数据结构一般为数组链表:先通过 Hash 算法得出 Hashcode,找到数组的某一个位置,然后插入链表。

        文档型数据库:
    • 文档型数据库同键值对存储数据库类似。

    • 该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON。

        图数据库:
    • 图形结构的数据库同其他采用行列以及刚性结构的 SQL 数据库不同,它使用灵活的图形模型,并且能够扩展到多个服务器上。

    • NoSQL 数据库没有标准的查询语言 (SQL),因此进行数据库查询需要指定数据模型。

    6.3 NoSQL 数据库的共同特征:

    • 目前业界对于 NoSQL 并没有一个明确的范围和定义,但是它们普遍存在下面一些共同特征:

      • 易扩展: 去掉了关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。

      • 大数据量,高性能: NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下。这得益于它的无关系性,数据库的结构简单。

      • 灵活的数据模型: NoSQL 无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。

      • 高可用: NoSQL 在不太影响性能的情况下,就可以方便地实现高可用的架构,有些产品通过复制模型也能实现高可用。

    6.4 NoSQL 整体框架:

    • NoSQL 整体框架分为 4 层,由下至上分为数据持久层、数据分布层、数据逻辑模型层和接口层。

      • (1) 数据持久层:

        • 定义了数据的存储形式,主要包括基于内存、硬盘、内存和硬盘接口、订制可插拔 4 种形式。

      • (2) 数据分布层:

        • 定义了数据是如何分布的,相对于关系型数据库,NoSQL 可选的机制比较多,主要有 3 种形式:

          • 一是 CAP 支持,可用于水平扩展;

          • 二是多数据中心支持,可以保证在横跨多数据中心时也能够平稳运行;

          • 三是动态部署支持,可以在运行着的集群中动态地添加或删除结点。

      • (3) 数据逻辑层:

        • 表述了数据的逻辑表现形式。

      • (4) 接口层:

        • 为上层应用提供了方便的数据调用接口,提供的选择远多于关系型数据库。

    6.4 NoSQL 分层架构:

    • NoSQL 分层架构并不代表每个产品在每一层只有一种选择。

    • 相反,这种分层设计提供了很大的灵活性和兼容性,每种数据库在不同层面可以支持多种特性。

    6.5 NoSQL 数据库适用情况:

    • NoSQL 数据库在以下这几种情况比较适用:

      • 数据模型比较简单;

      • 需要灵活性更强的 IT 系统;

      • 对数据库性能要求较高;

      • 不需要高度的数据一致性;

      • 对于给定 key,比较容易映射复杂值的环境。

    【软件系统架构】系列

    系统架构设计教程简介 【软件系统架构】系列简介-CSDN博客
    【软件系统架构】系列三:数据库系统之一 【软件系统架构】系列三:数据库系统之一_内模式映像-CSDN博客
    【软件系统架构】系列三:数据库系统之二 【软件系统架构】系列三:数据库系统之二-CSDN博客
    【软件系统架构】系列三:数据库系统之三 【软件系统架构】系列三:数据库系统之三-CSDN博客
    【软件系统架构】系列三:数据库系统之四-Redis数据库(1) https://blog.csdn.net/moton2017/article/details/145990776

    网站公告

    今日签到

    点亮在社区的每一天
    去签到