以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  数据库系统原理课件  (http://www.njcie.com/bbs/list.asp?boardid=19)
----  课件7下载——数据库的存储  (http://www.njcie.com/bbs/dispbbs.asp?boardid=19&id=175)

--  作者:admin
--  发布时间:2006/5/8 20:25:02
--  课件7下载——数据库的存储

Flash课件浏览为:

http://www.njmars.net/UploadFile/DB/七)数据库的存储_.swf

课件下载链接为:

点击下载(SWF文档)

1 数据存储 存储器 有效利用外存储器 改善外存储器的访问时间 外存储器故障 从外存储器故障中恢复

1.1 存储器

1.2 有效利用外存储器 考虑使用外存储器的数据访问算法和只考虑内存储器的数据访问算法不一样,主要原因在于访问数据的代价并不一样 一般要限制对外存储器的访问次数和数据读写过程中外存访问和内存访问的切换次数

两阶段多路归并排序算法 Tow-phase,Multiway Merge-Sort 阶段1:排序主存大小的数据片断,使得每个记录都是一个有序的表的一部分,该表正好可以装在可用的主存内。这样可能有任意个这样的有序子表,并且在下一阶段归并这些子表 阶段2:归并所有的有序子表以形成一个单个排序表

1.3 改善外存储器的访问时间 将一起被访问的块放置在同一柱面上,这样,通常可以消除寻道时间,并且有可能避免旋转等待 在几个较小的磁盘上分派数据,而不是集中在一个大的磁盘上。使用更多的可独立访问块的磁头组合,可以增加单位时间内块访问的数量 “镜像”磁盘,制作两份或更多的单个磁盘的数据拷贝。除了当其中一个磁盘出现故障时能保护数据外,就像在几个磁盘上分派数据一样,还可以同时访问多个块 在操作系统中,或在DBMS中,或在磁盘控制器中,使用磁盘调度算法来选择读写所请求的块的顺序 将预期要使用的块预先取到主存储器中

1.4 外存储器故障 最普通的形式是一种间断性故障,读或写一个扇区的某次尝试没有成功,但是经过反复尝试,又能成功地读或写 更严重的形式是,在这种故障中,一个或多个二进制位永久地损坏,正确地读一个扇区都不可能,不管我们尝试多少次。这种错误形式称为介质损坏 一种相关的错误类型是写故障,在这种故障中,当我们企图写一个扇区时,既不能正确地写,也不能检索先前写入的扇区。一种可能的原因是写扇区的过程中发生了供电中断 磁盘故障的最严重形式是磁盘崩溃,在这种故障中,整个磁盘突然变为永久不可读

外存储器故障的简单解决方法 校验和(checksum) 稳定存储(stable storage)

1.5 从外存储器故障中恢复 它们通常涉及到冗余技术,冗余技术扩展了奇偶校验思想和复制扇区的思想等。这类策略的一般术语是RAID(Redundant Array of Independent Disks,冗余独立磁盘阵列) RAID技术经过不断的发展,现在已拥有了从RAID0 到6七种基本的RAID级别。另外还有一些基本RAID级别的组合形式,如RAID10(RAID0与RAID1的组合),RAID50(RAID0与RAID5的组合)等

RAID实现有两种方法: 用专门的控制新片来完成,控制芯片可以做成RAID卡的形式,也可以集成在主板上 另一种方法是用软件的方法来实现,如WIN2000就含有软件RAID的功能

1.5.1 RAID0 RAID0又称为Stripe(条带化)或Striping,它代表了所有RAID级别中最高的存储性能 RAID0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能

从理论上讲,n块硬盘的并行操作使同一时间内磁盘读写速度提升了n倍,但由于总线带宽等多种因素的影响,实际的速率会低于理论值 RAID0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复 RAID0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID0也是提高硬盘存储性能的绝佳选择

1.5.2 RAID1 RAID1又称为Mirror或Mirroring(镜像),它的宗旨是最大限度的保证用户数据的可用性和可修复性 RAID1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上,其中的一个磁盘为数据盘,另一个是冗余盘;哪个作数据盘,哪个作冗余盘无关紧要 备份数据占了总存储空间的一半,因而磁盘空间利用率低,存储成本高

1.5.3 RAID10 是RAID0和RAID1组合,也称为RAID 0+1 是存储性能和数据安全兼顾的方案,它在提供与RAID1一样的数据安全保障的同时,也提供了与RAID0近似的存储性能 由于RAID10也通过数据的100%备份功能提供数据安全保障,因此磁盘空间利用率与RAID1相同,存储成本高 适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域

1.5.4 RAID2 带海明码校验的RAID 也将数据条块化分布于不同的硬盘上,条块单位为位或字节,同时RAID2使用海明校验码来提供错误检查及恢复,这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂,所以比RAID3,4或5简单,但在商业环境中很少使用

1.5.5 RAID3 最常使用的硬盘阵列技术,至少需要3个硬盘,总容量为各硬盘容量之和减去一块硬盘的容量 应用此技术,数据被分条存储在多个磁盘内,并且产生奇偶校验,并一并存储在磁盘内 优点:良好的数据可用性、在数据加强传输应用方面有良好的性能、经济实用(为实现奇偶校验,只需要一个额外的磁盘) 缺点:随机存储性能低、磁盘出错会对性能产生重大影响

1.5.6 RAID4 仅使用一个冗余盘,利用奇偶块校验对多个数据盘进行验证 假定块仅由一个字节(8位)组成,令有三个数据盘,分别称为盘1、盘2和盘3,还有一个冗余盘,称为盘4 盘1:1 1 1 1 0 0 0 0 盘2:1 0 1 0 1 0 1 0 盘3:0 0 1 1 1 0 0 0 盘4:0 1 1 0 0 0 1 0

1.5.7 RAID5 RAID4级策略能有效地保护数据,除非存在两个几乎同时发生的磁盘崩溃。然而,无论采用什么更新硬盘的方案,都需要读和写冗余盘的块。如果有n个数据盘,那么对冗余盘的磁盘写次数,将是任何一个数据盘平均磁盘写次数的n倍 把每个磁盘作为某些块的冗余盘来处理。这种改进通常称为RAID5级

RAID5的例子 有4个磁盘,第一个盘编号为0,将作为编号为0、4、8、12等柱面的冗余,编号为1的盘将作为编号为1、5、9等块的冗余,盘2是块2、6、10…等的冗余,而盘3是块3、7、11…等的冗余

1.5.8 RAID6 有一个纠错码原理,允许我们处理多个磁盘(数据盘或冗余盘)崩溃,前提是我们使用足够多的冗余盘 这个策略导致最高的RAID级:RAID6级,该策略是基于最简单的纠错码,称为海明码(Hamming code)

2 数据元素的表示 字段:需要用定长或变长的字节序列表示 记录:字段被组装成定长或变长的集合,记录对应于元组或对象,记录需要存储在物理块中 文件:构成一个关系或类外延的记录集存储为块的集合,为支持对这些集合的有效查询和修改,需要在文件上添加许多索引结构中的一种

2.1 字段的表示 因类型不一样而在硬盘上存储不一样 定长字符串:以空格等字符填充 变长字符串:不是真正意义上的不定长度,而是利用长度值或者终止字符来限制实际存储的字符 日期:固定长度的定长字符串 二进制位:包括位类型和布尔型等 枚举类型:其实是整数

2.2 记录的表示 记录利用模式来定义结构,模式包含名称、类型、记录中的偏移量、存取记录时的参考模式等

2.2.1 定长记录的表示 直接累加所有字段的长度,同时还有额外的首部信息,如记录模式、时间戳和删除标记等 定长记录在块中按序存储,剩余的块空间不用

2.2.2 变长记录的表示 有些情况下变长表示记录更加有效: 大小可变的数据项 重复次数无法确定的信息 可变格式的字段(甚至连类型都无法确定) 极大的字段(一个块都装不下)

变长记录的类型: 变长字段记录 重复字段记录 可变格式记录 极大字段记录

2.2.2.1 变长字段记录 第一个变长字段不用指向,总是紧跟在定长字段后

2.2.2.2 重复字段记录 定长字段出现次数可变 重复字段记录

也可以将记录的重复部分分开存储 优点是保持记录定长,易于搜索记录 缺点是增加IO开销

2.2.2.3 可变格式记录 记录中保存字段名称、类型等模式信息 优点是灵活,易于信息集成 缺点是格式不同,简单集成冗余太大

2.2.2.4 极大字段记录 常常称为BLOB 特点是跨块存储(也适用于小记录,消除浪费的块空间)

[此贴子已经被作者于2006-11-23 13:46:52编辑过]