340 likes | 499 Views
第七章 分布式数据库. 本章主要内容: 分布式数据库的基本概念 分布式数据库的查询优化 分布式数据库的事务管理 分布式目录. 7.1 分布式数据库系统的特点. 从“集中计算”到“分布计算” “分布计算”的概念 处理分布 数据是集中的,处理是分布的。 网络上的结点用户从同一个 DB 中存取数据,然后在各自的结点上作应用处理。 数据分布 数据是分布的,物理上分布在不同的结点,逻辑上是一个整体。 每个结点可以存取其他结点上的数据。 功能分布 C/S 模式。服务器完成事务处理和数据访问控制,客户机专门处理用户的应用程序。. 计算机.
E N D
本章主要内容: • 分布式数据库的基本概念 • 分布式数据库的查询优化 • 分布式数据库的事务管理 • 分布式目录
7.1 分布式数据库系统的特点 • 从“集中计算”到“分布计算” • “分布计算”的概念 处理分布 数据是集中的,处理是分布的。 网络上的结点用户从同一个DB中存取数据,然后在各自的结点上作应用处理。 数据分布 数据是分布的,物理上分布在不同的结点,逻辑上是一个整体。 每个结点可以存取其他结点上的数据。 功能分布 C/S模式。服务器完成事务处理和数据访问控制,客户机专门处理用户的应用程序。
计算机 计算机 通信网络 数据库 数据库 计算机 数据库 7.1 分布式数据库系统的特点 • 什么是分布式数据库系统(DDBMS) 分布式数据库系统是地理上分布在网络的不同结点而逻辑上属于同一个系统的数据库系统。 局部应用,全局应用 • 分布式数据库系统的特点 1. 数据是分布的 • 2. 数据是逻辑相关的 • 3. 结点自治性
7.1 分布式数据库系统的特点 • 分布式数据库系统与集中式数据库系统的比较 • 集中控制与局部自治 • 数据独立性:逻辑独立性、物理独立性、分布透明性 • 数据冗余 • 数据的一致性、可串行性、可恢复性 • 分布式数据库系统的特性 • 1.自治性好; 不同部门的数据可按需定制、局部控制 • 2.效率高,可用性好; 就近存放、多副本增加可用性 • 3.提高资源利用率; 可以将已有数据库联合成DDB • 4.结构灵活,易于扩充。 新应用增加新结点,勿扩充原系统
LDBMS GDBMS GDD CM 7.1 分布式数据库系统的特点 • 分布式数据库管理系统的组成 1.局部数据库管理系统(LDBMS) • 2.全局数据库管理系统(GDBMS) • 3.全局数据字典GDD • 4.网络通信管理CM • 同构(数据模型相同)系统、异构系统
7.2 分布式数据库系统的体系结构 • 7.2.1 分布式数据库系统的参考体系结构 • 全局外模式 全局应用的用户视图 P118 • 全局概念模式 全体数据的逻辑结构和特征的描述。 • 分片模式 描述每个片段及全局关系与片段间的映象, 片段间不允许重复。 • 分布模式 描述片段到不同结点间的映象(片段的存放位置)。如果规定一个片段仅能存放在一个结点,则是非冗余的,否则是冗余的。 • 局部概念模式 是对全局关系在这个结点上物理图象的逻辑结构及特征的描述。 • 局部内模式 描述局部概念模式涉及的数据在局部DBMS中的物理存储。
7.2 分布式数据库系统的体系结构 • 7.2.2 数据分片 • 分片方式: • 水平分片 • 垂直分片 • 导出分片 • 分片方式遵循规则 (1) 完整性 ; (2) 重构性; (3) 不相交性 水平分片的条件必须具有将一个关系分成多个不相交片段的特性
将SUPPLY按供应者所在的城市分片。(导出分片) SUPPLY1 = SNO,PNO,QTY(SUPPLY SUPPLIER1 ) SUPPLY2 = SNO,PNO,QTY(SUPPLY SUPPLIER2 ) 例: 商品供应数据库 SUPPLIER(SNO,SNAME,CITY) SUPPLY(SNO, PNO, QTY)。 将供应商按城市分片。 (水平分片) SUPPLIER1 = CITY=‘北京’(SUPPLIER) SUPPLIER2 = CITY=‘上海’(SUPPLIER)
7.2.3 分布透明性 • 分片透明性 指用户不必关心数据是如何分片的。 • 位置透明性 数据在结点间的转移不会影响应用程序;对冗余型的系统,用户不必关心多个副本存储在哪些结点, 因而用户不需维护重复副本的 一致性。 • 局部映象透明性 该透明性提供数据到局部数据库的映象。 • 无透明性
例:按照供应者号检索供应者信息。 分片透明性 scanf (“%s”, sno); SELECT SNAME, CITY INTO :sname, :city FROM SUPPLIER WHERE SNO = :sno; printf (“%s \t %s,”, sname, city);
位置透明性 scanf (“%s”, sno); SELECT SNAME, CITY INTO :sname, :city FROM SUPPLIER1 WHERE SNO = :sno; If (!found){ SELECT SNAME, CITY INTO :sname, :city FROM SUPPLIER2 WHERE SNO = :sno;} printf (“%s \t %s,”, sname, city);
局部映象透明性 scanf (“%s”, sno); SELECT SNAME, CITY INTO :sname, :city FROM SUPPLIER1 AT SITE-1 WHERE SNO = :sno; If (!found){ SELECT SNAME, CITY INTO :sname, :city FROM SUPPLIER2 AT SITE-1 WHERE SNO = :sno;} printf (“%s \t %s,”, sname, city);
7.3 分布式查询处理与优化 • 7.3.1 分布式查询处理 • 全局查询处理步骤: • 将一个全局查询直接映射为对片段的查询; • 通过关系代数表达式的等价变换 • (2) 将片段的查询映射为对相应结点的查询; • 选择查询结点(物理副本) • 通信代价:T = C0 + X * C1 • C0 :传输延迟,X:传输数据量,C1:单位数据的传送代价 • (3) 由结点上的局部DBMS执行子查询。 • 主要解决:减少查询代价、提高查询效率。
例: SUPPLIER (SNO, SNAME, CITY)水平分片: SUPPLIER1 = CITY=‘北京’(SUPPLIER) SUPPLIER2= CITY=‘上海’(SUPPLIER) SUPPLIER3= CITY=‘广州’(SUPPLIER) PROJECT(PNO, PNAME, MNG, DEPT) 水平分片: PROJECT 1 = DEPT=‘教委’(PROJECT) PROJECT 2= DEPT =‘科委’(PROJECT) PROJECT 3= DEPT =‘科工委’(PROJECT) SUPPLY(SNO, PNO, MNO) 查询给科工委主管的工程供应材料的北京的供应者号和供应者名。 全局查询表示如下: SNO, SNAME (CITY=‘北京’(SUPPLIER) ( DEPT =‘科工委’(PROJECT) SUPPLY))
全局查询: SNO, SNAME (CITY=‘北京’(SUPPLIER) ( DEPT =‘科工委’(PROJECT) SUPPLY)) SNO, SNAME SP.SNO = SY.SNO CITY=‘北京’ P.PNO = SY.PNO SR(supplier) DEP=‘科工委’ SY(supply) P(project)
SNO, SNAME SP.SNO = SY.SNO CITY=‘北京’ P.PNO = SY.PNO DEP=‘科工委’ SR1 SR2 SR3 SY P1 P2 P3 SNO, SNAME SP.SNO = SY.SNO CITY=‘北京’ P.PNO = SY.PNO SR1 DEP=‘科工委’ SY P3 ∪ ∪ 全局查询到片段查询的映射
分布式全局优化需解决的主要问题: (1) 多副本的选择 (2) 执行次序的选择: 主要确定多元连接的连接次序 (3) 连接方法的选择: 嵌套循环、合并扫描、半连接 R S (4) 执行结点的选择 7.3.2 查询优化 7.3.2.1 查询优化策略 全局优化、局部优化 查询代价:CPU代价 + I/O代价 + 通信代价。 策略
查询优化的一般准则 (1)选择运算尽可能先做。 (2)把投影运算和选择运算同时进行 (3)把投影同其前或后的双目运算结合起来 (4)把某些选择运算和在它前面执行的笛卡尔积结合起来成为一个连接运算 (5)在执行连接前对关系适当地预处理(在连接属性上建立索引和对关系排序) (6)找出公共子表达式
例: 对如下查询进行优化。 SELECT Cname FROM Student,Course,SC WHERE Student.Sno=SC.sno AND SC.Cno=Course.Cno AND Student.Sdept=‘IS’
Cname Cname Sdept=‘IS’ Sdept=‘IS’ S.sno=SC.sno SC.Cno=C.Cno S.sno=SC.sno SC.Cno=C.Cno C C S S SC SC Cname ( Sdept=‘IS’ ( S.sno=SC.sno SC.Cno=C.Cno (S SC C)
Cname Cname Sdept=‘IS’ SC.Cno=C.Cno S.sno=SC.sno SC.Cno=C.Cno S.sno=SC.sno C C Sdept=‘IS’ SC S SC S Cname ( Sdept=‘IS’ ( S.sno=SC.sno SC.Cno=C.Cno (S SC C)
嵌套循环法 1) 首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。 2) 表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。 3) 重复上述操作,直到表1中的全部元组都处理完毕
合并扫描法 1)首先按连接属性对表1和表2排序 2)对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续
合并扫描法(续) 3) 找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对表2的查询不再继续 4) 重复上述操作,直到表1或表2中的全部元组都处理完为止
半连接: 二个关系的半连接为: R S = R (B (S)) A = B A = B 连接运算可表示为:R S = ( R S) S A= B A= B A=B 设R和S分属不同的结点,连接运算在S结点进行。 连 接: T1 = C0 + size(R) ×card(R) ×C1 半连接:T2 = 2C0 + size(B)×card(S)×C1 + size(R)×card(R)×C1 size:元组长度;card:元组数量; C1: 单位数据传输时间 S:属性投影的结果关系;R:执行半连接后的结果关系。
半连接不具有交换性: R S S R 半连接具有可分配性: (R1 ∪R2) S = (R1 S)∪(R2 S) 半连接特性: 运用半连接除去关系中不可连接的元组,称为对关系的约简。 若每个参加连接的关系都能够约简,称为完全约简。
一种定量估算半连接结果值的方法 设半连接为:T =R S = R (B(S)) A = B A = B 估算方法: (1)基数:关系的元组数 card (R) 半连接运算结果T 的基数为:T = × card ( R) 选择率: = val(A[S] ) / val (dom (A)) val(dom (A)):属性A可能取值的个数 (2) 长度: size (T) = size (R) (3) 不同值:连接属性和非连接属性分别估算。 非连接属性: r r < m/2 c (n, m, r)= (r+m)/3 m/2 r < 2m m r 2m 连接属性: val (A[T] )= × val (A[R] ) n = card(R) m = val(A[R]) r =card(T)
7.3.2.2 SDD-1中的半连接算法 1. 基本优化算法 (1)计算不同半连接的费用和收益,在多元连接中选择最有利的半连接,这一过程迭代进行; (2)选择传输代价最小的结点完成连接操作。 2. 后优化算法 (1) 已选查询执行结点的半连接应取消; (2)根据半连接的费用修正半连接的次序。
例:供应者关系、供应关系、工程关系的部分片段分别例:供应者关系、供应关系、工程关系的部分片段分别 放在site1、site2、site3 结点。 查询site1的供应者供应材料给site3的哪些工程。 SUPPLIERS SUPPLY PROJECT • 基本优化算法 • (1)计算不同半连接的费用和收益,在多元连接中选择最有利的半连接,这一过程迭代进行; • 半连接费用: T=C0 +val (B[S])×size (B)×C1 • 半连接收益:BE= ( 1 )×size (R)×card (R)×C1
Site1(SUPPLIERS1): card (SUPPLIERS1) = 50 SNO SNAME size 4 20 val 50 50 Site2(SUPPLY2) : card (SUPPLY2) = 2000 SNO PNO size 4 4 val 200 200 Site3(PROJECT3): card (PROJECT3) = 20 PNO PNAME size 4 20 val 20 20
半连接 选择率 收 益 开 销 p1 : SY2 SR1 (p1)=0.25 0.75×8×2000 4×50 p2 : SY2 P3 (p2) = 0.1 0.9 ×8×2000 4×20 p3 : SR1 SY2 (p3) = 1 4×200 p4 : P3 SY2 (p4 ) = 1 4×200 0.12000=200, r = 200 , m = 200, val(SNO(supply2))= (r + m) /3 =(200+200)/3=133 Site2(SUPPLY) : card (SUPPLY2) = 200 SNO PNO size 4 4 val 133 20
结果: SUPPLY2 PROJECT3 SUPPLY2 SUPPLIER1 SUPPLIER1 SUPPLY2 (2)选择传输代价最小的结点完成连接操作不同结点的开销: Site1: 50 × 8 + 20 × 24 = 880 Site2 : 33 × 24 + 20 × 24 = 1272 Site3 : 33 × 24 + 50 × 8 = 1192
2. 后优化算法 (1) 已选查询执行结点的半连接应取消; 取消对SUPPLIER1的半连接。 (2)根据半连接的费用修正半连接的次序。