数据库——数据库系统(DBS)相关知识

目录

一、数据库(三级模式 两级映像) 

1.数据库系统的三级模式结构:

2.数据库中的二级映像功能与数据独立性:

数据独立性

二、功能角度—4层次

1、从功能角度可以将数据库应用系统划分为4个层次

表示层概要设计的主要任务是进行人机界面设计:

完整性约束条件的作用对象分为列、元组和关系3种级别

三、安全设计

1、数据安全设计

2、环境安全设计

四、B/S与C/S/

1、C/S架构是一种典型的两层架构(Client/Server)

2、B/S架构(BrowserlServer)

五、锁

1、检测死锁的方法

2、事务等待图法

3、数据库中一些重要的操作需要使用锁机制

4、以下是几种检测锁的方法:

5、共享锁和排它锁

6、常见的是7种锁

1)行锁(Record Locks) 行级锁,悲观锁

2)间隙锁(Gap Locks) 行级锁,悲观锁

3)临键锁(Next-key Locks) 行级锁,悲观锁

4)意向共享锁/意向排他锁(IS/IX) 表级锁,悲观锁; 是取得共享锁/排他锁的前置条件

5)(读)共享锁 / (写)排他锁 (S/X) 行级锁(悲观锁)

6)读锁

7)插入意向锁(Insert Intention Locks) 特殊的间隙锁,悲观锁

8)自增锁(Auto-inc Locks) 表级锁

六、 文档汇总链接


一、数据库(三级模式 两级映像) 

1.数据库系统的三级模式结构:

数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成:

①模式(schema):模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节,右与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。

   模式实际上是数据库数据在逻辑上的视图。一个数据库只有一个模式。数据库模式以某一种数据模型为基础,同意综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等;而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。

   数据库管理系统提供模式数据定义语言(模式DDL)来严格地定义模式。

②外模式(external schema):外模式也称子模式(subschema)或用户模式,它是数据库用固话(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

   外模式通常是模式的子集。一个数据库可以有多个外模式。由于它是各个用户的数据视图,如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述就是不同的。即使对模式中同一数据,在外模式的结构、类型、长度、保密等级等都可以不同。另一方面,同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。

   外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。

③内模式(internal schema):内模式也称存储模式(storage schema),一个数据库只有一个内模式。它是数据物理存储和存储方式的描述,是数据在数据库内部的组织方式。例如,记录的存储方式是堆存储还是按照某个(些)属性值的升(降)序存储,或按照属性值聚簇(cluster)存储;索引按照什么方式组织,是B+树索引还是hash索引;数据是否压缩存储,是否加密;数据的存储记录结构有何规定,如定长结构还是变长结构,一个记录不能跨物理页存储;等等。

2.数据库中的二级映像功能与数据独立性:

   数据库系统的三级模式是数据的三个抽象级别,它把数据的具体祖冲之留给数据库管理系统管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式和存储方式。为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/外模式映像。

   正式这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

①外模式/模式映像:
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都会有一个外模式/模式映像,它定义了该外模式和模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。

当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是根据数据的外模式编写的,从而应用程序不用修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

②模式/内模式映像:

数据库只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的。该映像定义通常包含在模式描述中。当数据库的存储结构改变时(例如选用了另一种存储结构),由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序之间的物理独立性,简称数据的物理独立性。


数据独立性

不仅简化数据库应用程序的开发,同时因为屏蔽了物理结构的差异,所以也简化了用户维护数据的代价。数据库系统三级模式和两层映像的系统结构保证了数据库系统中能够具有较高的逻辑独立性和物理独立性。

原文链接:数据库系统中的三级模式、两级映像和两个独立性_数据库三级模式两级映像_死粉斋藤的博客-CSDN博客1.数据库系统的三级模式结构:数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,如图:①模式(schema):       模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节,右与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。       模式实际上是数据库数据在逻辑上...https://blog.csdn.net/qq_40406061/article/details/79769799


二、功能角度—4层次

1、从功能角度可以将数据库应用系统划分为4个层次

即表示层、业务逻辑层、数据访问层、数据持久层。

表示层概要设计的主要任务是进行人机界面设计:

①表示层:用于显示数据和接受用户输入的数据。(一般为Windows应用程序或Web应用程序)。
②业务逻辑层:是表示层和数据访问层之间的桥梁,主要负责数据的传递和处理。
③数据访问层:实现对数据的保存和读取操作。可以访问关系数据库、文本文件或XML文档等。
④数据持久层:以程序为媒介把表现层或服务层的数据持久化.它位于物理层和数据访问层之间。

完整性约束条件的作用对象分为列、元组和关系3种级别

对列的约束——主要指对其值类型、范围、精度、排序等的约束条件。
对元组的约束——主要指对记录中各个属性之间的联系的约束条件。
对关系的约束——是指对若干记录间、关系集合上以及关系之间联系的约束条件。


三、安全设计

数据是所有信息系统的基础,如何保障数据安全也是信息系统设计和建设过程中需要考虑首要问题。

数据安全涉及的范围很广

1、数据安全设计

主要有以下五个方面:
①安全性保护:即防止非法用户对数据库的非法使用,以避免数据的泄露、篡改或破坏。
②完整性保护:即保证数据源的正确性和—致性。
③并发控制:即保证多个用户能共享数据库,并维护数据的一致性。
④数据库的备份与恢复:即在系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢夫数据。
⑤数据加密传输:即将一些高密级的敏感数据通过一定的加密算法加密后传输。

2、环境安全设计

①漏洞和补丁
②计算机病毒防护
③网络环境安全和物理环境安全


四、B/S与C/S/

1、C/S架构是一种典型的两层架构(Client/Server)

即客户端(服务器端架构)

其客户端包含一个或多个在用户的电脑上运行的程序。而服务器端有两种,
一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据,
另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。


C/S的客户端一般需要单独开发。
在这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含其中,需要通过与数据库的交互〈通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项自的需要。

C/S架构也可以着做是胖客户端架构,

因为客户端需要实现绝大多数的业务逻辑和界面展示。

2、B/S架构(BrowserlServer)

即浏览器/服务器结构。

  • Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。
  • Browser客户端、WebApp服务器端和DB数据库服务端构成所谓的三层架构。
  • B/S架构的系统无须特别安装,有Web浏览器即可。
  • B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑则放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力,
  • 因为客户端包含的逻辑很少,因此也被称为瘦客户端。
  • B/S架构中,客户端只需安装WEB浏览器即可,且应用业务规则一般是WEB服务器端实现的。

五、锁

1、检测死锁的方法

包括超时法、等待图法等。

2、事务等待图法

动态地反映了所有事务的等待情况,并发控制的子系统周期性地生成事务等待图进行检测,而不是在执行每个事务时进行检测。

3、数据库中一些重要的操作需要使用锁机制

检测锁的方法非常重要,因为它可以让我们知道哪些数据被锁定,被锁定的时间和锁的类型等信息。来保证数据的完整性和一致性。

4、以下是几种检测锁的方法:

  1. 查看系统视图:可以通过查看系统视图来了解数据库内部的锁情况。例如,在 SQL Server 中,可以使用 sys.dm_tran_locks 视图来查询当前活动的锁信息。

  2. 使用锁监控工具:数据库管理系统通常会提供一些工具来监控数据库中的锁情况,比如 Oracle 提供了 Lock Manager 工具。

  3. 使用第三方工具:第三方工具通常可以更方便地监控数据库中的锁情况,例如 Idera SQL Diagnostic Manager。

  4. 查看日志文件:在数据库中,日志文件通常记录了所有的操作,包括锁的信息。通过查看日志文件,可以了解到哪些数据被锁定了,以及操作的时间和类型等信息。

无论使用哪种方法,检测锁的目的都是为了确保数据库的数据完整性和一致性。在实际应用中,我们需要了解不同数据库管理系统的锁机制,合理地设计数据库应用程序,使其能够充分利用锁机制,提高数据库的性能和可靠性。

5、共享锁和排它锁

当事务T对某个数据加上排它锁时,T可以对该数据进行读和写,其他任何事务都不能再对诙数据扣任何类型的锁,直到事务T释放该锁才行;
当事务T对某个数据加上共享锁,则T只能对该数据进行读操作,不能修改数据,且其它事务也可以对该数据加共享锁但不能加排它锁。
只有等到该数据没有被其他任何事务访问时才能加排它锁。

6、常见的是7种锁

1)行锁(Record Locks) 行级锁,悲观锁

单个行记录上的锁
被锁的字段必需得建立了索引并且是主键索引或唯一索引, 否则会退化成临键锁
查询语句必须为精准匹配=,不能为>、<、like等,否则也会退化成临键锁
若语句中没用到任何索引,则会退化成表锁
如select * from user where id = 1 for update

2)间隙锁(Gap Locks) 行级锁,悲观锁

锁定一个区间,但不包括记录本身
被锁的字段必需得建立了唯一索引, 否则会退化成临键锁
若语句中没用到任何索引,则会退化成表锁
select * from user where id betwen 1 and 10 for update;
锁定了(1,10)区间

3)临键锁(Next-key Locks) 行级锁,悲观锁

锁定一个区间,并且锁定记录本身
被锁的字段必需得建立了非唯一索引
若语句中没用到任何索引,则会退化成表锁
如已有age={10,24,32,45}时潜在的临键锁: (-∞, 10], (10, 24], (24, 32], (32, 45], (45, +∞]
操作age=24, select * from user where age = 24 for update时, InnoDB 会获取该记录行的临键锁 (10,24], 左开右闭

临建锁=特殊间隙锁+行锁, 且间隙不是直接指定,而是根据表中已有的数据间接自动指定的

4)意向共享锁/意向排他锁(IS/IX) 表级锁,悲观锁; 是取得共享锁/排他锁的前置条件

(IS)意向共享锁 Intention Shared Lock:当事务准备在某条记录上加S锁时,需要先在表级别加一个IS锁。
(IX)意向排他锁 Intention Exclusive Lock:当事务准备在某条记录上加X锁时,需要先在表级别加一个IX锁。
意向锁和意向锁之间是不会有竞争冲突的

5)(读)共享锁 / (写)排他锁 (S/X) 行级锁(悲观锁)

共享锁是一个事务并发读取某一行记录所需要持有的锁。针对同一份数据,多个读操作可以同时进行而不会互相影响;
排他锁是一个事务并发更新或删除某一行记录所需要持有的锁。当前写操作没有完成前,它会阻断其他写锁和

6)读锁

读锁会阻塞写,但是不会阻塞读。

而写锁则会把其他线程的读和写都阻塞

S锁和IS锁之间是不会有竞争冲突的, S锁和S锁之间也不会有竞争冲突

其他的 X & X, X & IX, X& IS, S & IX 都是有竞争冲突的

7)插入意向锁(Insert Intention Locks) 特殊的间隙锁,悲观锁

8)自增锁(Auto-inc Locks) 表级锁

AUTO_INCREMENT自增字段, 是一种特殊的间隙锁,

但不同于间隙锁的是,该锁只用于并发插入操作。
如果说间隙锁锁住的是一个区间,那么插入意向锁锁住的就是一个点。


原文链接:MySQL相关知识【索引, 锁, 事务...】(个人总结)_mysql not exists会索引失效吗_hellosrc | remake的博客-CSDN博客    声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章              2. 由于是个人总结, 所以用最精简的话语来写文章           https://blog.csdn.net/weixin_46141936/article/details/120902726

 

六、 文档汇总链接

数据库系统(DBS) · 数据库三级 · 看云记录、分享icon-default.png?t=N2N8https://www.kancloud.cn/pan123456/database/3134272

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pan_peter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值