• 系统架构设计师-数据库系统(3)


    目录

    一、数据控制

            1、安全性

            2、完整性

            3、并发控制

            4、故障恢复

    二、数据库设计概述

            1、数据库设计关注的问题

            2、数据库性能优化

            3、规范化与反规范化

    三、索引与视图

            1、数据库索引

            2、B+树示例

            3、关系的类型

    四、分布式数据库

            1、分区和分表的共性和差异

            2、分区的常见方式

            3、分库

    五、NoSQL

            1、与SQL数据库对比

            2、常见NoSQL数据库


    一、数据控制

            1、安全性

            2、完整性

                    (1)实体完整性约束:规定基本关系的主属性不能取空值。

                    (2)参照完整性约束:关系与关系间的引用,其他关系的主键或空值。

                    (3)用户自定义完整性约束:应用环境决定。

                    【触发器】:可以完成一些复杂的完整性约束。例如:对表A的某行或某个字段进行监听,如果发生变化就可以同步做更新。

            3、并发控制

             【事务】

            (1)原子性 

                    事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败。任何一项操作失败都会导致整个事务的失败,同时其它已经被执行的操作都将被撤销并回滚,只有所有的操作全部成功,整个事务才算是成功完成。

            (2)一致性

                    事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前和执行后,数据库都必须处在一致性状态。例如:从A账号向B账号转钱,不可能A账户扣了钱,B账户却没收到钱。                

            (3)隔离性

                    在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其它事务干扰。不同事务并发操作相同数据时,每个事务都有各自完整的数据空间。 

            (4)持续性(持久性)

                    事务一旦提交后,数据库中的数据必须被永久保存下来。即使服务器系统崩溃或服务器宕机等故障,只要数据库重新启动,就一定能够将其恢复到事务成功结束后的状态。

            【封锁协议

                    S封锁:共享锁,读锁,可重复加锁。

                    X封锁:排他锁,写锁,不可重复加锁,如已加别的锁需等待解锁后在进行加锁。

            (1)一级封锁协议:只有X锁,只能加一次。可以解决丢失更新问题

            (2)二级封锁协议:有S锁也有X锁,读完立即释放S锁。可以解决脏数据的读出

            (3)三级封锁协议:有S锁也有X锁,事务结束才释放S锁。可以解决不可重复读问题

            (4)两段锁协议:加解锁操作在整个事务的代码段中分开,前半段都是加锁,后半段都是解锁。

            4、故障恢复

                    (1)冷备份

                            也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。

                    (2)热备份

                            也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。

                    【完全备份】:备份所有数据。

                    【差量备份】:仅备份上一次全备份之后变化的和数据。

                    【增量备份】:备份上一次备份之后变化的数据。

                    【日志文件】:事务日志是针对数据库改变所作的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

                    例如下计划:

                            周日全备,周一周二根据周日数据进行增备,周三根据周日数据进行差备,周四根据周三数据进行增备,周五根据周日数据进行差备,周六根据周五数据进行增备。

                    【故障及解决方法

    二、数据库设计概述

            1、数据库设计关注的问题

                    性能数据一致性、安全

            2、数据库性能优化

                    理论上看:在数据库优化设计方面,同等条件下,自然连接的性能优于笛卡尔积。

            3、规范化与反规范化

                    【规范化

                    随着规范化范式级别的提升,查询效率降低了。

                    【反规范化

                    【反规范化优缺点

                            优点:连接操作少,检索快统计快,需要查的表减少,检索容易。

                            缺点

    三、索引与视图

            1、数据库索引

                    提升查询效率;降低添加、修改、删除效率;采用B树,B+树等。

            2、B+树示例

            3、关系的类型

            (1)基本关系:通常又称为基本表基表,实际存在的表,实际存储数据的逻辑表示。

            (2)查询表:查询结果对应的表。

            (3)视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表或虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。

                    视图(View)并不在数据库中实际存在,而是一种虚拟表

                   【视图的优点

                    (1)视图能简化用户的操作

                    (2)视图机制可以使用户以不同的方式查询同一数据。

                    (3)视图对数据库重构提供了一定程度的逻辑独立性

                    (4)视图可以对机密的数据提供安全保护

                    【物化视图

                    视图的内容物理存储起来,其数据随原始表变化,同步更新。它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。

    四、分布式数据库

            1、分区和分表的共性和差异

            2、分区的常见方式

                    (1)范围分区(2)哈希分区(3)列表分区

                    【分区的优点】:

                    (1)相对于单个文件系统或硬盘,分区可以存储更多的数据。

                    (2)数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。

                    (3)精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。

                    (4)可跨多个分区磁盘查询,来提高查询的吞吐量。

                    (5)在涉及聚合函数查询时,可以很容易进行数据合并。

            3、分库

    五、NoSQL

            NoSQL(Not-only SQL):不仅仅只是SQL,泛指非关系型的数据库。

            1、与SQL数据库对比

            2、常见NoSQL数据库

  • 相关阅读:
    实现旅行售货员问题的回溯算法
    Windows 10下安装labelImg标注工具!
    什么编程语言的开发者平均年薪高达94万?
    面试美团测试岗后感想,很后悔这5年来一直都干的是 “基础测试”工作
    c++二叉树的进阶--二叉搜索树
    [附源码]java毕业设计“拥抱爱心”公益网站管理系统
    spring Aop报错的注意点
    Linux:冯诺依曼系统和操作系统的概念
    protocol-buffer安装和使用
    [Shell]常用shell命令及测试判断语句总结
  • 原文地址:https://blog.csdn.net/weixin_42368597/article/details/133085330