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