2.4 多用户和硬件
列式模型的一个优势是,如果两个或更多的用户想使用列的不同子集,它们不需要彼此锁定。这种设计变得如此简单,是因为有了RAID(redundant array of independent disks,最初是redundant array of inexpensive disks)的磁盘存储方法,这种方法将多个磁盘驱动器结合到一个逻辑单元中。数据存储在几种称为级别的模式中,具有不同量的冗余。冗余的概念是,当一个驱动器发生故障时其他驱动器可以接管。当更换的磁盘驱动器放置在阵列中时,数据从阵列中的其他磁盘被复制,然后系统被恢复。下面是RAID的各种级别。
RAID 0(不带奇偶校验或镜像第块级带化)没有(或零)冗余。它提供了改进的性能和额外的存储,但没有容错。这是讨论的起点。
RAID 1(条带,无奇偶校验或镜像),数据相同地写入两个驱动器,从而产生一个镜像集;读请求是由包含被请求数据的两个驱动器中任意一个具有最小寻道时间和旋转延迟的驱动器进行响应。这也是Tandem不停机计算模型的模式。停止机器需要一个特殊的命令“Ambush”,这必须在同一个临界点捕获两个数据流,所以它们不会自动重新启动。
RAID 10(镜像和条带化),数据以条带化的方式写入主盘,并且在第二块磁盘上进行镜像。一个典型的RAID 10配置由4个驱动器组成:两个做条带化和两个做镜像。RAID10配置采取了RAID1和RAID0的最佳概念,并将两者结合起来。
在RAID 2(带有专用汉明码奇偶校验的位级带化)所有磁盘主轴的旋转是同步的,并且数据被条带化,所以每两个连续的位(数据存储单位)都分布在不同的驱动器。汉明码奇偶校验通过相应的字节计算并将其存储在至少一个奇偶驱动器中。这一RAID级别理论在实践中不使用。
在RAID 3(带有专用奇偶校验的字节级带化)所有磁盘主轴的旋转是同步的,并且数据被带化,所以每个字节按照顺序分布在不同的驱动器。奇偶校验是通过相应的字节计算并存储在专用的奇偶校验驱动器上。
RAID 4(奇偶校验的块级专用条带化)相当于RAID 5,知识奇偶校验数据被存储在一个驱动器上。在这样的安排中,文件可以在多个驱动器之间分布。每个驱动器独立运作,允许输入/输出(I/O)要求并行完成。对数据库而言,并行性是一个巨大的优势。每个会话可以访问一个不带锁的大量引用的表或读竞争(只读锁)的表。
RAID 5、RAID 6和其他存在的模式,这其中的许多都是市场营销多于技术。我们的目标是提供驱动器故障的容错,甚至n块磁盘驱动器故障或阵列损毁。这使得更大的RAID阵列具有实际价值,尤其是对高可用性系统。当然这对数据库人员来讲是非常好的,可以从并行查询中得到更多的好处。