第二章 分布式数据库设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 例子
EMP ( E#, NAME, DEPT, JOB, SAL, TEL, …) DEPT={1,2} JOB={‘P’, ‘-P’} 假定,应用经常查询的内容是属于部门1且是程序员的职 员。(80/20原则)
ຫໍສະໝຸດ Baidu12
水平分段- 续
• 则可能有的水平分段限定
– P={ DEPT=1} – P={DEPT=1, JOB=‘P’} – P={DEPT=1, JOB=‘P’, SAL>500}
24
理由-续
Loc=Sa sal < 10
元组选择 概率相等
Qa: Select … loc = Sa ...
Qb: Select … loc = Sb ...
Loc=Sa sal 10
F2
Loc=Sb sal < 10
因此 F2好... F3不好 ...
25
Loc=Sb sal 10
22
图示
Loc=Sa sal < 10
Qa: Select … loc = Sa ... Qb: Select … loc = Sb ...
Loc=Sa sal 10
F1
Loc=Sb sal < 10
F2
F3
F2 是好的… ( F1 , F3不好 )
Loc=Sb sal 10
13
如何保证分段原则
• “手工”检查! e.g., F1 = loc=‘Sa’ E ; F2 =
loc=‘Sb’ E
• 生成具有满足分段原则的限定谓词
14
谓词生成举例
• 设有关系 E (e#,name,loc,sal,…), 查询使用的简单 谓词(Ai Value)是: A<10, A>5, Loc = Sa, Loc = Sb • 下一步: - 生成 “小项” 谓词 - 消除无用谓词 • 给定简单谓词集 Pr= { p1, p2,.. pn }, 则“小项”谓 词(minterm predicate)形式: p1* p2* … pn* 这里 pk* 是 pk 或是 ¬ k p
17
分段结果
F2: F3: F6: F7: F10: F11: 5 < A < 10 5 < A < 10 A5 A5 A 10 A 10 Loc=SA Loc=SB Loc=SA Loc=SB Loc=SA Loc=SB
18
注:无用段的消除依赖于应用的语义
e.g.: 如果 LOC 可以是 SA, SB, 则最终分段集合
2
分布式数据库设计
• 从上往下方法:
– 已有DB… – 如何分割数据及如何分配这些数据到不同 站点
3
需求分析
定义实体类型、 联系
从上向下设计过程
定义用户界面
系统需求 (目标)
用户输入
概念设计
视图集成
视图设计
全局概念模式
访问模式
外部模式定义
用户 输入
分布设计
局部概念模式
物理设计
物理模式
反馈 反馈
观察与监视
• 半连接操作
R
S= R( R
S)
32
导出分段的完整性与不相交性
• 若 J中有元组:
# … 33 … Des build chair
但是 E 中没有 #= 33 的元组因此 E1 和 E2 中不存 在该元组! 于是 J 中该元组既不在 J1中也不在 J2中分段不 完整! 33
为了完整性, 需要强化引用完整性限制: 从属关系的连接属性 attr(#) 必须是 主关系的连接属性 attr(#)
36
垂直分段-续
例子:
E
# 5 7 8 … Loc Sa Sb Sa
第二章 分布式数据库设计
1
分布式计算机系统设计
• 数据分布 • 程序(应用)分布
– 分布式DBMS的应用分布
• DDBMS分布 假定每个存储数据的站点都有DDBMS副本 • 应用程序分布
• 分布式系统设计的三维
– 共享维 不共享,数据共享,数据+程序共享 – 访问模式维 静态模式,动态模式(分布式数据库设 计与查询处理) – 访问模式知识维 用户完全已知或部分已知访问模式
34
例子:
E1
# 5 …
NM Joe
Loc Sa
Sal 10
E2
# 5 …
NM Fred
Loc Sb
Sal 20
J
# 5 …
# 5 …
Description day off
分段不满足 不相交性
J1
Description day off
J2
# 5 …
Description day off
为了不相交性: 连接属性应该是主关系的关键字(Key)
11
水平分段- 续
• 若 R
F = {F1, F2, …, Fn}, 则
– 完整性 对于每一个元组 tR, FiF 使得 tFi
– 不相交性 对tFi, Fj 使得 tFj, i j – 可重构性 操作是并 (可以忽略, 因为完整性就蕴含着) R = {F1, F2, …, Fn}
查询处理
目录管理 并发控制 可靠性 实用性
容易
容易或不存在 中度 很可靠 困难 较可靠
容易
低度可靠
可能
实用
可能
10
水平分段
• 基本水平分段
以关系自身的属性性质为基础,执行“选 择”操作,将关系分割成若干个不相交的 片段
F = { F1, F2 }
F1 =

loc=Sa(E)
F2 =

loc=Sb(E)
# 7 12 …
NM Sally Fred
Loc Sb Sb
Sal 25 15
(at Sa)
(at Sb)
# 5 7 5 12 … Description work on 347 hw go to moon build table rest
J
30
# E1 5 8 …
NM Joe Tom
Loc Sa Sa
15
小项谓词选择
(1) A<10 (2) A<10 (3) A<10 (4) A<10 (5) A<10 (6) A<10 (7) A<10 (8) A<10 A>5 Loc=SA Loc=SB A>5 Loc=SA ¬ (Loc=SB) A>5 ¬ (Loc=SA) Loc=SB A>5 ¬ (Loc=SA) ¬ (Loc=SB) ¬ (A>5) Loc=SA Loc=SB ¬ (A>5) Loc=SA ¬ (Loc=SB) ¬ (A>5) ¬ (Loc=SA) Loc=SB ¬ (A>5) ¬ (Loc=SA) ¬ (Loc=SB)
– 完整性
? x R, FiF 有 xFi
– 不相交性
? xFi, Fj 使得 xFj, i j
– 重构性
? 存在函数 g 使得
R = g(F1, F2, …, Fn)
7
举例
职工关系 E (e#, name, loc, sal,…) 查询: Qa: select * Qb: select * from E from E where loc=Sa where loc=Sb and… and ... 两个站点 : Sa, Sb Qa Sa Sb Qb
4
分布式数据库设计-续
• 自下向上方法:
– 存在多个数据库(还可能是异构\自治) – 无设计问题(信息集成)!
5
DDB设计的两个问题
• 分段
– 分割关系成“段”
• 分配
– 将段置放到站点
• 目标
– 优化响应时间/吞吐量/费用/…
6
分段原则
• 假若有全局关系R 被分段为子关系(片段)集合
F = {F1, F2, …, Fn}, 则 F满足
28
水平分段- 续
E(ENO, NAME, SAL, LOC) 多对一联系 J(ENO, DESCRIPTION,…)
• 已知 E 用LOC水平分段为 F={ E1, E2} • 查询应用, 给定E查询其工作描述
29
# E1 5 8 …
NM Joe Tom
Loc Sa Sa
Sal 10 15
E2
23
理由
Loc=Sa sal < 10
此处元组有较 高的选择概率
Qa: Select … loc = Sa ...
Qb: Select … loc = Sb ...
Loc=Sa sal 10
F1
Loc=Sb sal < 10
此处元组选 择概率较低
Loc=Sb sal 10
分段内元组选择概率不等 因此 F1 不好...
分段要求Pr具有完整性和小项性不
是必要条件, 但是对于简化分配问题有 好处
26
水平分段- 续
• 导出分段 从另一个关系的属性性质或水平分段推 导出来 • 例子 SC(S#, C#, GRADE) S ( S#, SNAME. AGE, SEX)
27
水平分段- 续
• 分段设计
– Define fragment SC1 as Select SC.S#,C#,GRADE From SC, S Where SC.S#=S.S# and SEX=‘M’ Define fragment SC2 as Select SC.S#,C#,GRADE From SC, S Where SC.S#=S.S# and SEX=‘F’
8
e# NM Loc Sal E
5 7 8 Joe Sally Tom Sa 10 Sb 25 Sa 15
..
F
e# NM Loc Sal
5 8 Joe Tom Sa 10 Sa 15
..
e# NM Loc Sal
7 Sally Sb 25
..
..
站点 Sb
9
站点Sa
分布选择比较
全复制 部分复制 有些困难 有些困难 无复制
应该加上
F4: 5 <A <10 Loc SA Loc SB F8: A 5 Loc SA Loc SB F12: A 10 Loc SA Loc SB
19
分段数量信息
• 小项选择率(minterm selectivity) 对某 一给定小项谓词用户查询可能选择到的 元组数 • 访问频率(Access frequency)用户应用 访问数据的频率
(2) Pr = {LOC=Sa, LOC=Sb}
F2={ loc=Sa E, loc=Sb E }
(3) Pr = {LOC=Sa, LOC=Sb, Sal<10}
F3={ loc=Sa sal<10 E, loc=Sa sal10 E, loc=Sb sal<10E, loc=Sb sal10 E }
35
垂直分段
• 通过“投影”操作把一个全局关系的属性分 成若干组 • 垂直分段的基本目标是将使用频繁的属性聚 集在一起 • 例子
EMP(E#, NAME, SAL, TEL, MAGE#, DEPT) 假定 Key: E# 主要应用: Sa 站点 查询NAME, SAL, TEL; Sb 站点查询NAME, DEPT, MAGE# 分段: EMP1(E#, NAME, SAL, TEL) EMP2(E#, NAME, MAGE#, DEPT)
– 小项访问频率可以通过用户查询频率获得
20
如何选择小项谓词
• 例子
E(#, NM, LOC, SAL,…) 有查询应用 Qa: select * from E where LOC=Sa and … Qb: select * from E where LOC=Sb and ...
21
三种选择
(1) Pr = { } F1 ={ E }
Sal 10 15
E2
# 7 12 …
NM Sally Fred
Loc Sb Sb
Sal 25 15
(at Sa)
(at Sb)
J1
# 5 5 …
Des work on 347 hw build table
J2
# 7 12 …
Des go to moon rest
J1 = J
E1
J2 = J
E2
31
16
小项谓词选择-续
(9) ¬ (A<10) A>5 Loc=SA Loc=SB (10) ¬ (A<10) A>5 Loc=SA ¬ (Loc=SB) (11) ¬ (A<10) A>5 ¬ (Loc=SA) Loc=SB (12) ¬ (A<10) A>5 ¬ (Loc=SA) ¬ (Loc=SB) (13) ¬ (A<10) ¬ (A>5) Loc=SA Loc=SB (14) ¬ (A<10) ¬ (A>5) Loc=SA ¬ (Loc=SB) (15) ¬ (A<10) ¬ (A>5) ¬ (Loc=SA) Loc=SB (16) ¬ (A<10) ¬ (A>5) ¬ (Loc=SA) ¬ (Loc=SB)
相关文档
最新文档