📅  最后修改于: 2021-01-07 05:24:19             🧑  作者: Mango
在上一章中,我们介绍了不同的设计替代方案。在本章中,我们将研究有助于采用设计的策略。这些策略可以大致分为复制和分段。但是,在大多数情况下,将两者结合使用。
数据复制是在两个或多个站点上存储数据库的单独副本的过程。它是一种流行的分布式数据库容错技术。
可靠性-在任何站点发生故障的情况下,数据库副本将继续工作,因为在另一个站点上有可用的副本。
减少网络负载-由于可以使用本地数据副本,因此可以在减少网络使用的情况下进行查询处理,尤其是在黄金时段。数据更新可以在非黄金时段进行。
更快的响应-本地数据副本的可用性确保快速查询处理,从而缩短响应时间。
更简单的交易-交易需要位于不同站点的表的联接数量更少,并且整个网络的协调性最小。因此,它们本质上变得更简单。
更高的存储要求-维护多个数据副本会增加存储成本。所需的存储空间是集中式系统所需存储空间的倍数。
数据更新的成本增加和复杂性–每次更新数据项时,更新都需要反映在不同站点的所有数据副本中。这需要复杂的同步技术和协议。
不良的应用程序–数据库耦合–如果不使用复杂的更新机制,则要消除数据不一致,就需要在应用程序级别进行复杂的协调。这导致了不良的应用程序–数据库耦合。
一些常用的复制技术是-
碎片是将一个表分成一组较小的表的任务。该表的子集称为片段。碎片可以分为三种类型:水平,垂直和混合(水平和垂直组合)。水平碎片还可以分为两种技术:主要水平碎片和派生水平碎片。
碎片处理应采用某种方式,以便可以从碎片中重建原始表。这是必需的,以便可以在需要时从片段中重建原始表。此要求称为“重建性”。
由于数据存储在使用地点附近,因此数据库系统的效率得以提高。
本地查询优化技术对于大多数查询就足够了,因为数据是本地可用的。
由于在站点上没有不相关的数据,因此可以维护数据库系统的安全性和私密性。
当需要来自不同片段的数据时,访问速度可能会很高。
在递归碎片的情况下,重建工作将需要昂贵的技术。
如果站点发生故障,在不同站点中缺少数据的备份副本可能会使数据库失效。
在垂直碎片中,表的字段或列被分组为碎片。为了保持可重构性,每个片段都应包含表的主键字段。垂直碎片可用于强制数据保密。
例如,让我们考虑一个大学数据库将所有注册学生的记录保存在具有以下架构的Student表中。
学生
Regd_No | Name | Course | Address | Semester | Fees | Marks |
现在,费用详细信息将保留在“帐户”部分中。在这种情况下,设计人员将按如下方式对数据库进行分段-
CREATE TABLE STD_FEES AS
SELECT Regd_No, Fees
FROM STUDENT;
水平分段根据一个或多个字段的值对表的元组进行分组。水平碎片还应证实重建规则。每个水平片段都必须具有原始基础表的所有列。
例如,在学生模式中,如果需要在计算机科学学院维护所有计算机科学课程学生的详细信息,那么设计人员将按以下方式水平分割数据库:
CREATE COMP_STD AS
SELECT * FROM STUDENT
WHERE COURSE = "Computer Science";
在混合片段化中,使用了水平和垂直片段化技术的组合。这是最灵活的分段技术,因为它生成带有最少外部信息的分段。但是,重建原始表通常是一项昂贵的任务。
混合分段可以通过两种替代方式完成-
首先,生成一组水平片段;然后从一个或多个水平片段生成垂直片段。
首先,生成一组垂直片段;然后从一个或多个垂直片段生成水平片段。