文章目录
- 1.数据组织与存取方法
- 2.无序文件组织
- 3.有序记录文件(排序文件Sequential)
- 4.散列文件
- 5.聚簇文件(Clustering file)
- 6. 小结
1.数据组织与存取方法
数据组织要考虑更新(增、删、改)和检索需求
- 更新将涉及数据存储空间的扩展与回收问题
- 检索将涉及扫描整个数据库的问题、大批量处理数据问题
- 不同的需求要求不同的数据组织方法和存取方法
文件组织(File Organization) 指的是数据组织成记录、块和访问结构的方式,包括把记录和块存储在磁盘上的方式,以及记录和块之间相互联系的方法
存取方法(Access Method) 指的是对文件所采取的存取操作方法
- 一种文件组织可以采取多种存取方法进行访
- 文件组织相当于存储结构,存取方法相当于对不同文件组织结构的存取算法
2.无序文件组织
文件组织方法之一:无序记录文件(堆文件heap或pile file)
- 特点:记录可存储于任意有空间的位置,磁盘上存储的记录是无序的。更新效率高,但检索效率可能低
- 方法1:新记录总插入到文件尾部;删除记录时,可以直接删除该记录所在位置的内容,也可以在该记录前标记“删除标记”
- 方法2:在前者基础上,新增记录可以利用那些标记为“删除标记”的记录空间,新纪录可以占用那些标记为被删除的记录上
- 频繁删增记录时会造成空间浪费,所以需要周期性重新组织数据库
- 数据库重组(Reorganization) 是通过移走被删除的记录使有效记录连续存放,从而回收那些由删除记录而产生的未利用空间。
3.有序记录文件(排序文件Sequential)
特点:记录按某属性或属性组值的顺序插入,磁盘上存储的记录是有序的。检索效率可能高。
- 用于存储排序的属性通常称为排序字段(Orderingfield),通常,排序字段使用关系中的主码, 所以又称排序码(Orderingkey)
- 当按排序字段进行检索时,速度得到很大提高;但当按非排序字段检索时,速度可能不会提高很多
- 有序记录文件的更新效率可能很低,因为:在更新时要移动其他记录,为插入记录留出空间
- 改进措施是可为将来有可能插入的元组预留空间(这可能造成空间浪费),或者再使用一个临时的无序文件(被称为溢出文件)保留新增的记录。
- 当采取溢出文件措施时,检索操作既要操作主文件,又要操作溢出文件。所以需要周期性重新组织数据库
- 数据库重组 是将溢出文件合并到主文件中,并恢复主文件中的记录顺序
4.散列文件
特点:可以把记录按某属性或属性组的值,依据一个散列函数来计算其应存放的位置: 桶号(Bucket,块号或簇号等)。检索效率和更新效率都有一定程度的提高
- 用于进行散列函数计算的属性通常称为散列字段(Hashfield),散列字段通常也采用关系中的主码,所以又称散列码(hashkey)
- 不同记录可能被hash成同一桶号,此时需在桶内顺序检索出某一
- 链接法处理溢出
- 散列还有许多问题及许多的处理技巧,如散列桶的数目以及桶的大小,动态散列技术等等
5.聚簇文件(Clustering file)
聚簇:将具有相同或相似属性值的记录存放于连续的磁盘块中
多表聚簇:将若干个相互关联的Table存储于一个文件,这可提高多表情况下的查询速度
6. 小结
增删改时如何快速“存”?
检索查询时如何快速“取”?
- 对增删改的要求较高,则选择无记录文件和散列记录文件;
- 若对查询的要求较高(二分查找),则选择有序记录文件;
- 当数据库性能降低时,则需要考虑数据库重组了;