第五课(三)|学习笔记

简介: 快速学习第五课(三)

开发者学堂课程【高校精品课-西安交通大学-数据库理论与技术:第五课】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/12/detail/15861


第五课(三)

 

内容介绍

一、Data Guides

二、Existence of Multiple DataGuides

三、Annotations

四、Strong Data Guides

五、Mapping Long Records to Pages

六、Allocation and Free-Space Management

七、文件组织

八、文件中的记录组织 

 

七、文件组织

文件组织是数据库保存为若干文件的集合。其中文件是记录的序列,记录是字段的序列。记录方法有定长记录、变长记录、指针法。

1.定长记录

简单方法:

1)记录 i 从字节 n * ( i - 1 ) 开始存储,其中 n  是记录大小。

2)记录存取简单,但记录可能跨块。唯一的变化是不允许记录跨越块边界。

 图片257.png

删除记录 i 可选则的方法:

1)将记录 i+1 ,..., n 前移成 i ..., n-1 

2)将记录 n 前移成 i 

3)不移动记录,而是将所有自由记录链成一条自由链表。

2.自由链表

自由链表是指在文件头中存储第一条被删记录的地址,然后在第一条被删记录中,存储第二条被删记录的地址,等等。这些存储的地址可视为指针,因为它们“指向”记录的位置。它是更有效利用空间的表示法,可以重新利用自由记录的正常字段空间来存储指针(使用中的记录则不存储指针)。

 图片258.png

3.变长记录

数据库系统中在多种情况下需要变长记录。一个文件中需要存储多种记录类型,允许一个或多个变长字段的记录类型,允许重复字段的记录类型,以上几种情况都需要用到变长记录。

它的方法有预留空间法、字节串表示法、指针法、 Slotted Page  结构.

1)预留空间法

它是利用具有已知最大长度的定长记录,较小记录中的未用空间用 null   end - of - record  符号填充。

图片259.png

2)字节串表示法

它在每条记录末尾附加控制字符 end - of - record ( L ),缺点是难以删除或增长。 

图片260.png

3)指针法

变长记录可用若干通过指针念在一起的定长记录表示,即使是最大记录,长度未知时也可以使用。缺点是除了链中首记录,其他所有记录中都可能有空间浪费。解决方法是文件中采用两种块,锚块和溢出块,锚块包含链中的首记录,溢出块包含链中其他记录。 

图片261.png

解决方法是文件中采用两种块,锚块和溢出块,锚块包含链中的首记录,溢出块包含链中其他记录。

图片262.png

(4) Slotted Page  结构

Slotted page 页头包含记录登记项数目块中自由空间末端每条记录的位置和大小。记录可以在页内移动以便保持记录间的连续存储,但页头中的登记项必须更新。指针不能直接指向记录,而是指向该记录在页头中的登记项。

图片263.png


八、文件中的记录组织

文件中的记录组织有堆、顺序、散列、聚簇、动机。堆,记录可至于文件中的任何有空间的地方。顺序,记录按顺序存储,基于每条记录在搜索键上的值。散列,对记录的某些属性 k 计算散列函数 h( k ) ,计算结果决定该记录应该置于文件的哪个块中。每一个关系的记录可存储在单独的文件中,但在聚簇文件组织下,多个关系的记录可存储于同一文件中。动机,相关联的记录存储在同一块中可减少磁盘 I/O 。

1.顺序文件组织

它适用于需要顺序处理整个文件的应用,文件中的记录按搜索键排序。

图片264.png

删除时可利用指针链。插入时需要确定带插入记录的位置。若有自由空间,则在该处插入,若无自由空间,则插入到溢出块,两种情况都有,则需要更新指针链。需要不时重组文件,以恢复物理存储的顺序。

图片265.png

2.聚簇文件组织

简单的文件结构将每个关系存储在一个单独的文件中,利用聚簇文件组织可以将多个关系存储在一个文件中。

图片266.png

有利于涉及 depositor  customer 的查询,以及涉及单个客户和他的账户的查询,对只涉及 customer 的查询不好(可用指针链,见上图),容易导致变长记录。

相关文章
|
关系型数据库 数据库 开发者
第五课(二)|学习笔记
快速学习第五课(二)
100 0
第五课(二)|学习笔记
|
存储 缓存 移动开发
第四课(三)|学习笔记
快速学习第四课(三)
第四课(三)|学习笔记
|
搜索推荐 网络协议 Java
第四课(二)|学习笔记
快速学习第四课(二)
第四课(二)|学习笔记
|
存储 Oracle 关系型数据库
第二课(三)|学习笔记
快速学习第二课(三)
195 0
第二课(三)|学习笔记
|
SQL 存储 缓存
第二课(二)|学习笔记
快速学习第二课(二)
149 0
第二课(二)|学习笔记
|
算法 架构师 数据管理
第四课(一)|学习笔记
快速学习第四课(一)
第四课(一)|学习笔记
|
存储 数据采集 人工智能
第七课(三)|学习笔记
快速学习第七课(三)
134 0
第七课(三)|学习笔记
|
存储 数据库 开发者
第七课(二)|学习笔记
快速学习第七课(二)
150 0
第七课(二)|学习笔记
|
缓存 NoSQL 搜索推荐
第三课(二)|学习笔记
快速学习第三课(二)
129 0
第三课(二)|学习笔记
|
运维 算法 Cloud Native
第三课(三)|学习笔记
快速学习第三课(三)
174 0
第三课(三)|学习笔记