开发者学堂课程【高校精品课-西安交通大学-数据库理论与技术:第六课】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/12/detail/15862
第六课(一)
内容介绍
一. 顺序文件组织
二. 聚簇文件组织
三. 数据词典的存储
四. 对象到文件的映射
五. 持久性指针的管理
六. 磁盘的结构与特性
七. 基础回顾-计算机系统的存储体系
八. DBMS 数据存储与查询实现的基本思想
九. 数据库之表-记录与磁盘块的映射
十. 数据库之表-记录与磁盘块的映射
十一.Oracle DB 物理存储简介
十二.索引和散列
一.顺序文件组织
n 删除-利用指针链
n 插入-确定待插入记录的位置
² 若有自由空间则在该处插入
² 若无自由空间,插入到溢出块
² 两种情况都要更新指针链
n 需要不时重组文件以恢复物理存储顺序
二.聚簇文件组织
n 简单的文件结构将每个关系存储在一个单独的文件中
n 利用聚簇文件组织可以将多个关系存储在一个文件中
聚簇一般是在外界的学生,可以按照学院的顺序排序。同一个学院的学生,物理上是相邻的,访问的模式是同一个学院的学生可能会一同被访问,物理上相邻效率是最高的,后面它举的例子就不详讲了,因为聚簇往往可以支持表连接。表连接操作时,经突破会加快查询速度。这里也不细讲了,因为这里用的就是存款和客户的例子。
² 有利于涉及 depositorcustomer 的查询,以及涉及单个客户和他的账户的查询
² 对只涉及 c ustomer 的查询不好(可用指针链,见下图)
² 导致变长记录
三. 数据词典的存储
数据字典(也称为系统目录) 保存元数据: 即关于数据的数据,如:
元数据是关于表的结构,它的访问特征要比其他信息访问的更加频繁,一般放在内存里。从存储的角度讲,跟一般的表是一样的,只不过它的管理库跟其他不太一样。以上列出的是内容包括什么,另外关于账号的信息是跟安全有关的。
n 关系的信息
² 关系名
² 关系的属性名和属性类型
² 视图名及其定义
² 完整性约束
n 用户及账号信息,包括口令
n 统计与描述数据
² 每个关系的元组数目
n 物理文件组织信息
² 关系如何存储 (顺序/散列/...)
² 关系的物理位置
ü 操作系统文件名
ü 包含关系记录的磁盘块地址
n 目录结构:可采用
² 为高效存取而设计的专门的数据结构,或者
² 关系集合,利用现有系统特性保证高效存取
² 通常采用后者
Relation-metadata =(relation-name, number-of-attributes,
storage-organization, location)
Attribute-metadata =(attribute-name, relation-name, domain-type,position, length)
User-metadata = (user-name, encrypted-password, group) Index-metadata =(index-name,relation-name, index-type,
index-attributes)
View-metadata =(view-name, definition)
元数据的东西要有数据模型,比如索引的数据,视图的数据,用户的数据,属性的数据,关系的数据,给出一种可能的目录结构。
四. 对象到文件的映射
n 将对象映射到文件类似于关系系统中将元组映射到文件,可以用
文件结构存储对象数据。
n OO数据库中的对象可能缺少一致性并可能非常大,管理这种对
象必须不同于管理关系系统中的记录。
一般关系数据库里的记录或者元组的长度的差异不是很大,但是特别符合对象的存储,完全要用另外一种方式来做。
n 只有少量元素的集合字段可以用链表之类的数据结构实现。
n 对象是通过对象标识符(OID)来标识的,存储系统需要一个机制来
根据给定的 OID 定位对象,此动作称为引用解析(dereferences)。
n 逻辑标识符不直接指明对象的物理位置,必须维护一个索引将
OID 映射到对象的实际位置。
标注里有些编码信息,可以用来定位,这就是关于这个映射的问题。
n 典型的物理 OID 由以下部分组成:
1.卷或文件标识符。
2.卷或文件内的页标识符。
3.页内偏移量。
这里只是列举了一部分,实际情当中总有这样或那样的差异及工程实现的时候都会有,但是大概就是这些。