语义完整性子系统有两种主要成分:一种表达与操纵完整性断语的语言,一种在数据库更新时强制数据库实施特定动作的强制机制。前者称为完整性约束,后者称为触发器。3)域完整性在关系中,每个属性有指定的域,并且该域的值会有限制。4)参考完整性参考完整性是指关系的外键的值必须与其参考关系中的主键相匹配。在关系型数据库系统中,可以使用断语来定义完整性约束。......
2023-10-28
本节讨论分布式语义完整性控制问题。
假设站点都有自主性,即像集中式DBMS中的一样,每个站点都能处理本地查询和实施数据控制。这个假设可以简化方法的描述。
分布式DBMS涉及完整性子系统的两个主要问题:分布式完整性断语和断语的推行。
1.分布式完整性断语
完整性断语可以用元组关系演算来表示。每个断语可以看成一个查询量词,可以判别每个元组为真还是为假。因为断语涉及的数据可能存放在不同的节点,因此必须确定它们的存储情况,以便使完整性检查的开销最小。
可以将完整性断语分成如下三类。
(1)单独断语:是指单关系、单变量断语,例如,域约束就是单独断语。
(2)面向集合的断语:包括单关系多变量约束(如函数依赖性)和多关系多变量约束(如外键约束)等。
(3)涉及聚合的断语:因为要计算聚合(如求和、计数和求均值等),所以要求对这类断语进行专门的处理。
如果要定义一个新的完整性断语,则可以从断语涉及关系的某个存储节点来启动。当然,事情并非那么简单,原因是在分布式数据库系统中,这个关系可能是分片的,而数据片又分布在不同的节点中。
我们研究的分片谓词,也可以看成是第一类断语(单独断语)的一个特例。同一个关系的不同数据片可以存放在不同的节点上。因此,一个完整性断语的定义也就变成一个分布操作。这样的操作可以分为两步:第一步是把高级断语变成编译后的断语,第二步是按照断语的分类选择适当的节点存放起来。第三类断语的处理方式与第一类和第二类的类似,取决于是单独断语还是面向集合的断语。
2.断语的推行
下面对断语的推行(即强制实施)进行深入讨论。
单独断语是将断语定义发送到与断语相关关系的所有数据片的存放节点。这个断语必须与每个节点的关系数据兼容。
可以分两级来测试兼容性:首先,测试断语与关系分片谓词是否兼容,假设断语C和数据片的分片谓词p是不兼容的,即“C is true”蕴含“p is false”,否则就是兼容的。如果发现断语和分片谓词不兼容,则该断语被拒绝。其次,如果发现分片谓词是兼容的,则该断语再测试数据片的实例。如果发现实例不满足该断语,则该断语被拒绝。如果是兼容的,则该断语存放在每个节点中。实际上,这种兼容性测试只与插入(insert)操作有关。
【例4.16】 考察关系Student,它按如下谓词水平分布:
p1:0<sno<30
p2:30≤sno≤60
p3:sno>60
在这个关系上,我们再定义一个域断语C:sno<40。
这里,断语C与p1兼容(即C为true,p1也为true)。同样,断语C与p2兼容(即C为true,p2不一定是false),但与p3不兼容(即若C为true,则p3为false)。因此,从全局看,应当拒绝断语C,因为p3不满足C。
面向集合的断语是多变量的,涉及连接谓词。断语谓词也可能是多关系的,但是编译后,一个断语只涉及一个关系。这样,断语定义可以发送到所有通过这些变量访问的数据片存放节点中。兼容性测试也与连接谓词用到的关系数据片有关。这时,仅满足谓词兼容是没有用的,因为仅此无法判断是否和分片谓词矛盾。因此,光靠查阅数据字典解决不了问题,断语C必须针对数据进行检验。这样,就需要将断语涉及的两个关系的每个数据片进行连接,开销较大,因此需要查询优化。此时,需要考虑下面三种情况。
(1)所涉及两个关系中的一个关系R的分片是从另外一个关系S中导出的(其连接呈简单连接形态),这样实施时对应数据片的连接即可。
(2)S是按连接属性分片的。
(3)S不是按连接属性分片的。
第一种情况的兼容性测试的成本较低;第二种情况中R的每个元组必须与S的一个数据片比较。第三种情况中R的每个元组必须与S的所有数据片比较。
【例4.17】 考察例4.14中定义的面向集合的编译后断语(SC,INSERT,C1),其中C1为∀NEW∈SC+,∃j∈COURSE:NEW.cno=j.cno,这里的NEW是指新增加(插入)的记录(元组)。
这个断语表述的是参考完整性。现在来考虑下面三种情况。
(1)SC是按导出水平分片的,分片的谓词是SC∝cno COURSEi。
其中:COURSEi是关系COURSE的一个数据片。这种情况下,兼容性测试涉及的是简单连接形态。
(2)COURSE是按如下两个谓词水平分片的:
P1:cno<9(www.chuimin.cn)
P2:cno≥9
SC的每个元组NEW在NEW.cno<9时要和COURSE1比较,SC的每个元组NEW在NEW.cno≥9时要和COURSE2中的所有元组比较。
(3)COURSE是按如下两个谓词水平分片的:
P1:CNAME="Computer Networks"
P2:CNAME≠"Computer Networks"
此时,SC的每个元组必须同时与COURSE1和COURSE2的所有元组比较。
在分布式数据库系统中,强加分布式完整性断语比在集中式DBMS中更复杂。主要问题在于,此时必须决定该到哪里(哪个节点)去强加断语。选取标准取决于断语的种类、更新的种类和发布更新的节点(常称为查询主节点)的特点。这个节点可能是完整性断语涉及的(所有或部分)更新关系存放的节点,也可能不是。这里要考虑的主要因素是数据(包括消息)从一个节点传到另外一个节点花费的开销。
下面按照上述判据考虑不同的策略。
单独断语考虑两种情况:若更新操作是一条插入语句,则要插入的元组是由用户指定的。此时,所有的单独断语可以强加在更新提交的节点中。若更新是一个限定条件的更新(删除或修改语句),则可以将它发送到存放被更新的数据节点中。查询处理器对每个数据片执行更新限定判断。分布更新涉及的每个节点强制验证与自己节点有关的断语。
面向集合的断语则先研究单关系约束。
【例4.18】 考虑例4.10所示的函数依赖性。与INSERT更新相关的编译后的断语如下:
(Student,INSERT,C)
其中,C为:
其语义解释为:必须检查插入的新元组和现有元组间的约束(这里是函数依赖性)是否保持式(1);最后一行检查插入的元组间的约束(函数依赖性)是否保持式(2)。
现在我们来考查一个对Student的更新。
首先,更新限定条件由查询处理器来执行,假设这个更新是一个插入操作,则每个存放Student数据片的节点必须强制以上所述的断语C。由于断语C中的e是全程变量,所以每个节点上的局部数据都要满足C。
这样,提交更新的节点必须接收来自每个节点的消息,说明断语是否满足条件。如果有一个节点的断语不为真,则它发送出错消息,说明断语不成立,更新就变得无效。完整性子系统的响应则决定是否拒绝整个程序。
下面定义一个约束维持算法CK(Constraint_Keep)。
算法4.1 CK
通过例4.18所示的断语来描述算法。
令u为一个插入更新,目的是往SC中插入一个新元组。前面介绍的算法中使用了编译后断语(SC,INSERT,C),其中C为:
∀NEW∈SC+,∃j∈COURSE:NEW.cno=j.cno
针对这个断语,相应的检索语句是在SC+中检索所有C不为真的元组。其SQL形式如下:
Select NEW.*
f rom SC+NEW,COURSE
where COUNT(Select COURSE.sno f rom SC+NEW,COURSE where NEW.cno=COURSE.cno)=0
其中,NEW.*表示SC+的全部属性。
这样,可以采用的策略是把新元组发送到存放关系COURSE的节点上,以便实施连接操作。然后,在查询主节点上把所有的结果都集中起来。对于存放COURSE的数据片的节点来说,那里要实施和SC+(即NEW)数据片的连接,把结果发送到主节点,并实施结果的归并。如果归并的结果为空,则表示数据库是一致的;否则,表示数据库是不一致的。依据分布式DBMS的程序管理员所采取的策略,拒绝该程序。
涉及聚合的断语:因为要计算聚合函数等断语,所以测试开销较大。这类聚合函数通常是MIN、MAX、SUM和COUNT。每个聚合函数包括两部分:投影部分和选择部分。为了有效地强制断语,可以使用后面讨论的聚集函数优化技术。
分布式完整性控制的主要问题是,强制分布断语的通信和处理开销可能是非常高的。设计分布式完整性子系统的主要目标是分布断语的定义和强制算法的定义,这种算法应使分布式完整性检验的开销最小。基于语义完整性断语的编译这样一种预防方法,可以实现分布式完整性控制。这种方法是通用的,因为各种断语都可以用一阶谓词逻辑来处理。它也能和分片定义及节点间通信最小化兼容。小心地定义数据片可以进一步提高分布式完整性强制的性能。因此,分布式完整性约束的定义是分布式数据库设计的一个重要方面。
有关分布式数据库技术的文章
语义完整性子系统有两种主要成分:一种表达与操纵完整性断语的语言,一种在数据库更新时强制数据库实施特定动作的强制机制。前者称为完整性约束,后者称为触发器。3)域完整性在关系中,每个属性有指定的域,并且该域的值会有限制。4)参考完整性参考完整性是指关系的外键的值必须与其参考关系中的主键相匹配。在关系型数据库系统中,可以使用断语来定义完整性约束。......
2023-10-28
“Semantic Web”这个词出自万维网的发明者Tim Berners-Lee爵士2001年的文章中:The Semantic Web is an extension of the current Web in which information is given well-defined meaning,better enabling computers and people to work in cooperation.W3C的专门小组将标准化语义Web的概念定义为:The Semantic Web provides a common framework that allows data to be shared and reused across application,enterprise,and community boundaries.可以说,语义Web是一组技术和标准,能让机器理解Web上信息的意义(语义)。图5.10语义Web栈在这个栈的底部定义了标识符URI和字符集Unicode。RDF是一种描述Web资源的简单而又强大的数据模型和语言。语义Web的骨干是本体。......
2023-10-28
在SQL Server系统中,配置相关数据完整性约束,使数据库中的数据质量优良。数据完整性提供了这样的保障机制。如表5-1所示的内容是4种常用的数据完整性的实施方法。表5—1数据完整性的实施方法续表2.域完整性的实现实验目的熟悉“设计表”窗口的工作环境,掌握域完整性设置的操作方法。......
2023-11-24
与数据库安全系统打交道的人员可以分为两类:数据库管理员和普通用户。DBA要对安全负责,所以他(们)要创建授权规则,定义谁可以使用哪部分数据,以及如何使用。图13.1数据库安全系统由图13.1可知,数据库安全系统里存放着授权规则,在每次数据库存取时强制满足其规则。从完整性方面考虑,数据库安全可以包含以下两方面。1)设计阶段的数据库安全在设计阶段必须关注数据库的安全性。DBA负责处理整个数据库系统里的用户账号和口令。......
2023-10-28
一般来说,语义完整性约束以规则形式呈现出来,用来表达应用性质方面的知识。行为性约束则与应用行为相关。所以,它们都应属于数据库设计阶段应考虑的问题,它们可以表达对象间的相关性,如关系模型中的对象依赖性。说明性方法和关系模型结合起来,缓解了程序依赖和数据依赖的问题、代码冗余的问题和过程性方法性能较差的问题。强制推广完整性断语的开销大,原因是它要求大量的数据存取。......
2023-10-28
然而,在方便的云存储服务里,能否确保数据的安全性是大部分使用者所担忧的。即云存储安全的根本目标就是保证存储数据的机密性、完整性和可用性。比如,网络中的恶意攻击所造成的服务中断、数据破坏、信息被窃取和篡改等,都会对云存储中数据的安全性造成一定影响。......
2023-11-18
Oracle公司的OPS环境比一般的(单实例)Oracle环境复杂得多。不同结构下的OPS的实施略有不同。图14.23OPS体系结构为了利用这些特性,需要专业人员合适的设计以及恰当的手工配置。下面对有些关键问题进行简单讨论,讨论中会涉及一些Oracle系统专用的术语,读者可参阅Oracle公司的相关文档。DLM与Oracle进程一起工作并相互通信。DLM相关的初始化参数在每个实例的SGA[12]中分配必要的结构以处理消息机制、封锁与实例相关的Cache管理,这样就为各种Oracle进程操纵提供了基础。......
2023-10-28
查询优化的本地化分层聚焦于将查询转换成本地数据。一个全局关系可以通过应用重构规则来重构,从而导出一个关系代数程序,其操作数是数据片,这个程序称为本地化程序。将分布查询分配到节点上的自然办法是生成查询,让每个全局关系使用本地化程序来代替。这可以看成是在一棵分布查询的算符树上将叶子用与本地化程序对应的子树来替代。数据水平分片关系的连接也可以简化。......
2023-10-28
相关推荐