1)模式、逻辑模式、概念模式
数据库设计者通过数据定义语言进行设计。一个数据库只有一个模式,是数据库逻辑上的视图。
2)外模式
用户通过数据操作语言进行操作。是用户级视图,一个数据库可以有多个外模式。
3)内模式、存储模式
描述了数据库在物理上的存储方式和物理结构。
分布式数据库
LIS:本地内部模式
LCS:本地概念模式
GSC:全局概念模式
ES:外部模式:用户的应用和对数据库的访问。
所谓断言就是一个谓词,它表达了我们希望数据库总能满足的一个条件。域约束和参照完整性约束是断言的特殊形式。如属性A>100。
分布式数据库设计:数据和程序放置到计算机网络上的决策过程。
考虑两种分布:
1.DDBMS软件的分布。
三种体系架构:1)客户/服务器架构;2)P2P;2)多数据库体系架构。
2.DBMS之上运行的程序的分布。
1 共享级别:
1)无共享:数据和程序都不共享。
2)数据共享:所有程序在每个站点复制。
3)数据和程序同时共享。
在异构的环境下,执行同样的程序通常十分困难。而数据传输则相对容易。
2 访问方式:静态和动态。不可能是静态的,问题的本质是到底多么动态。在这一维度上,分布式数据库设计和查询处理之间建立了一种关系。
这里是引用
3 有关访问方式的知识。设计者是否可以预见用户的访问方式。通常是设计者掌握完整信息或者部分信息。
以片段为单位可以实现事务的并发执行。另外,将一个查询分解成多个片段的子查询,实现查询的并发执行。
这样,分片明显的增加了并发度,从而增加了系统的吞吐量。这种形式的并发被称为查询内并发。
也有可能是带有嵌套的混合方式。
1)完整:关系中每个数据项在片段中都可以找到,对于水平分片是元组,垂直是属性。
2)重构:能够找到一个操作△,使得所有的片段可以通过这个操作重构成原来的关系。
3)不相交:每个数据项仅属于一个片段。对于垂直分片,仅适用于非主码的属性。
如何将片段分配到不同的网络站点。
三种方法:
1)划分式:每个分片只在网络中保持一个副本。
2)全复制:每个站点拥有全部的数据库。
3)部分复制。
分布设计需要哪些信息?
数据库信息,应用信息,通信网络信息,计算机系统信息。
后两类是完全定量的,用于分配模型,而不是分片算法。
1)自主式:通过定义在该关系上的谓词来完成。
2)诱导式:通过定义在另一关系上的谓词完成。
1)数据库信息
数据库信息与全局概念模式有关。
数据库的关系是如何相互联系的?
在关系模型中,数据库之间的关系通过关系表示。(二维表的形式)
这里的理解是:关系模型是一张张二维表的形式,对于ER模型来说,数据库之间的联系是通过显示的线来表示的,便于与客户沟通,而到了数据库设计阶段,所有的关系也是通过表来表示的。
其他方法:为了分布设计,在直接通过相等关系连接的两个关系之间画上一个有向链接。
2)应用信息
分析用户的查询需求。
定性信息和定量信息。定性信息指导分片,定量信息指导分配。
定性信息包含在用户使用的谓词中。简单谓词。
复杂谓词:简单谓词通过布尔运算组合构成。
中间项谓词:简单谓词合取链接(交,∧)。简单谓词出现在中间项中的形式:自然形式或否定形式。
注意:不使用不等号而是用否定形式,不等式的否定形式转换为其补集。
关于定量信息。
①中间项选择率。用户使用的中间项所能查询到的元组的个数(所占比例)
②访问频率。用户应用访问数据的频率。
由中间项划分的片段称为中间项片段。
任何分片的第一步都要决定形成中间项的简单谓词
完整性:每个应用访问片段中的任何元组时,每个元组具有相同的访问概率。
这里表述有点不清楚,我的理解是:每个分片中的每个元组被访问的概率相等。
保证了所有分片中具有均衡的负载。每个分片中负载均衡。
最小性:如果一个谓词将一个片段划分为F1和F2,那么应该至少有一个应用对F1和F2的访问不同。换句话说,简单谓词应该与决定分片相关。如果所有的应用对F1和F2的访问是相同的,那么这样划分将没有意义。
mi在fi中的访问频率不等于mj在fj中的访问频率。
实际上对片段的划分就是选择中间项的过程,因此,并不需要直接对片段划分,先选择中间项。
即根据S的分片结果对R进行分片。
如果R有两个以上的链接,即R可能有不止一个的诱导式水平分片。需要考虑:
①更好的连结特性。
②拥有更多的应用。
第二个是显然的,分片的结果肯定优先满足更大的应用,更频繁的数据访问。
第一点比较复杂,主要是两点:1)使得连结在更小的关系上(即片段)进行。2)提供并行连结的可能。
简单图:一个片段只有一个进入的链接和一个离开的链接。
简单图带来的好处:一个连接的属主和成员可以分配到一个站点,因为通过这个成员的访问只能通过该属主 。同时,不同片段对之间的连结可以并行独立的执行。
划分连结图:将一个连结图划分为多个子图,这些子图之间不存在链接。可能不利于分布和并行执行,但是对分配还是有利的。
1)完整性:各成员的片段中的元组都包含在属主关系中。
2)重构性:关系可以由它分片合取得到。
3)不相交性:自主式要比诱导式更容易实现不相交。自主式只要中间项谓词是互斥的,就可以保证不相交。
垂直分片本身要比水平分片复杂的多。m个非主码属性的可能分片结果是第m个bell数。
两种启发式方法:
1)分组:将每个属性分到一个片段,然后再进行连结,直到满足一定准则。
2)分裂:从一个关系开始,根据应用对属性进行划分。
垂直分片需要主码复制,一定程度上减少了通信。如果将主码属性作为一个片段放在一个站点,则每个更新请求都会在站点之间产生必须的通信。
垂直分片需要度量属性之间的‘亲密程度’,也就是亲和度。
也即如果某一查询Aj用到了属性qi,那么qi,Aj为1。
Ai,Aj的亲和度是指:所有需要同时访问他们的查询语句q,q的访问次数(访问频率*每次访问时的次数)的和。
健能算法
完整性、重构性、不相交性。
这里的不相交与水平分片不同,有两种情况:1)使用了TID,每个片段不相交,因为TID是系统管理,用户透明。2)主码复制,除了主码其他属性不相交。
交叉分片或嵌套分片。
先水平后垂直,或,先垂直后水平
1)最小代价
2)性能。最小化响应时间,最大化吞吐量。
片段选择率,片段大小。
存储数据单位代价、处理单位任务代价。
站点间每帧数据的代价。
满足响应时间限制,同时处理和存储代价降到最低。
查询处理和存储
1)存储代价:所有站点上存储所有片段的代价。站点×站点是否存储片段×片段大小。
2)查询代价:
更新和检索操作的次数×片段×处理单位任务代价
传输代价不同是不需要进行原始站点的代价计算。也包括更新和检索的传输代价。
响应时间、存储、处理能力。
应该限制在一定范围,不超出最大响应时间,不超出站点的存储和处理能力。
分配问题是一个NP问题,启发式方法寻找接近最优解。
模式信息存储在数据词典/目录中。
模式有全局概念模式和局部概念模式,同样的,目录也有全局目录和局部目录。
目录本身也是数据库,包含实际存储的数据的元数据。
目录处理中的问题:1)信息搜索;2)目录存储位置,是否分布?3)目录的复制。
1)物理层面集成:
集成的数据库物化,称为数据仓库。集成过冲中使用抽取-转换-载入工具ETL,从源数据库中抽取数据,将抽取的数据匹配到GCS上,并进行数据载入,企业应用集成采用类似方法,但不对数据库完全物化。
2)逻辑层面集成:
不物化数据,仅维护虚拟的全局概念。也被称为企业信息集成。数据集成或信息集成、数据库集成。
通用两个步骤:模式翻译和模式生成
第一个步骤生成规范的中间形式InS,第二个步骤利用中间模式生成GCS,
一组规则,反映了LCS匹配到GCS上。
存在的问题:
1)最重要的问题:数据模式的异构性。
2)模式和实例信息不完全。
3)数据模式文档难以获取。
4)匹配具有主观性。
匹配算法:
1)基于模式的匹配与基于实例的匹配。
2)元素级的匹配与结构级的匹配。
3)匹配基数。
不同的LCS之间的模式不同。
结构异构性和语义异构性
语义异构性对匹配算法带来的一些问题:
1)同义词、同形异义词和上位词。例如汽车是小轿车的上位词。为了解决这些问题,引入领域本体的概念,即定义特定领域的概念组织方式。
2)不同的本体。
3)用词不准确。
1)表示尽量使用专业领域特定的一些词,而2)说明了即使本体(专业领域)不同,也可能出现同形异义词等。
基于模式和实例都行。
基于模式就是看两个模式的元素之间的相似性,
1)复合:
使用不同的匹配器对两个模式中的概念进行评分,综合评价他们的相似度。
2)混合:
两个模式中的元素在同一算法通过一系列匹配器进行比较。通过一个相似性判定才能进行下一个。
匹配模式没有显示说明如何从局部模式得到全局数据库,模式映像主要研究这一点。
两个基本问题:映像建立和映像维护。
数据模式动态变化,可能会导致映像失效。
1)检测无效映射;2)调整无效映射。
数据仓库在创建全局数据库时进行清洗,可以线下进行。
数据集成系统在源数据库返回数据的查询处理阶段进行数据清洗,必须线上。性能更加重要。
错误:
模式级错误:LCS违反显示或隐式的约束。应该在模式匹配阶段检测。
实例级错误:数据错误,生成一组查询对数据进行清洗。
定义视图只在目录中存储视图的定义。
视图查询可以映像为基础表查询,叫做查询修改。
不是所有的都能更新,只有视图上的更新操作能正确传递到基础关系表上才可以。有时视图的更新操作会在基础关系表上引起歧义。
视图查询同样可以和基础关系表查询等同。
诱导视图是集中式DBMS的方法。
视图更新两种方式:
1)事实更新
保持了视图与基础表的一致性,只读查询快;事务需要同时更新视图和表,增加了事务处理时间。
2)延迟更新:①惰式更新,在该视图上进行查询之前更新。增加了查询时间②阶段更新:每天固定时间更新,③强制性更新,在基础数据上更新了一定次数后更新视图。后两种方法允许不一致,快照。
增量计算视图:每次只计算视图的改变部分。----区分关系表,保存视图的修改操作。
自维护性
系统主体通常由元组(用户名,密码)定义。
授权规则存储在目录中,最方便的方式是授权矩阵。
授权矩阵三种形式:按行, 按列, 按元素。按元素即关系表(主体,对象,权限)对矩阵进行存储。
裁决式问题:未授权的用户可以通过授权的用户访问到未授权的数据。
多级访问控制解决了这一问题。
进程关联密级给用户不同级别的权限,不向上读,不向下写。
1)预定义约束,如非空等
2)先决条件约束,更新操作类型给定的情况下。如预算只能增加不能减少。
3)通用约束,多个关系表中的通用约束。
1)基于不一致性检测。后测试,可能导致事务撤销,效率低。
2)基于不一致性预防。前测试,效率高。
查询修改算法
哪个站点执行完整性约束(取决于约束的类别,更新的类型,更新发生的站点,即查询主站点)。需要考虑的关键参数包括传输代价。
查询处理程序。
步骤:
1)演算查询–>代数查询
2)查询访问数据定位到本地,应该是访问数据的地址。
3)片段上的代数查询以通信的操作加以扩展,还要用代价函数进行优化。
高级查询转换为代价最小的低级查询。如何挑选出代价最小的低级查询?
两个度量:总代价(见第三章),响应时间
查询处理必须高效完成输入语言到输出语言的映射。
如果考虑所有的查询策略,优化成本可能很高。
随机方法:迭代改进和模拟退火。启发式方法。
静态查询优化,动态查询优化,混合的查询优化方法。
动态查询优化的优点是可以得到前一次查询的结果,选择更好的运算,缺点是查询优化必须在每次查询中重复执行。
混合方法基本上是静态的,但是如果运行中实际中间结果大小与估计大小差距很大,可以随时进行动态查询。
查询优化的有效性依赖于对数据库的统计。
静态优化时,哪一个站点参与决策?
广域网中,通信代价是决定性因素,局域网中,通信代价与IO代价相当。
1)通信操作
最小化总代价的通信代价
2)片段的一个查询内的操作顺序
半连接