分布式数据库设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 分布式数据库设计
分布式计算机系统设计
• 数据分布 • 程序(应用)分布
– 分布式DBMS的应用分布
• DDBMS分布 假定每个存储数据的站点都有DDBMS副本 • 应用程序分布
• 分布式系统设计的三维
– 共享维 不共享,数据共享,数据+程序共享 – 访问模式维 静态模式,动态模式(分布式数据库设
DEPT={1,2} JOB={‘P’, ‘-P’}
假定,应用经常查询的内容是属于部门1且是程序员的职 员。(80/20原则)
水平分段- 续
• 则可能有的水平分段限定
– P={ DEPT=1} – P={DEPT=1, JOB=‘P’} – P={DEPT=1, JOB=‘P’, SAL>500}
分段结果
F2: 5 < A < 10 F3: 5 < A < 10 F6: A 5 F7: A 5 F10: A 10 F11: A 10
Loc=SA Loc=SB Loc=SA Loc=SB Loc=SA Loc=SB
注:无用段的消除依赖于应用的语义
e.g.: 如果 LOC 可以是 SA, SB, 则最终分段集合
• 下一步: - 生成 “小项” 谓词 - 消除无用谓词
• 给定简单谓词集 Pr= { p1, p2,.. pn }, 则“小项”谓 词(minterm predicate)形式: p1* p2* … pn* 这里 pk* 是 pk 或是 ¬pk
小项谓词选择
(1) A<10 A>5 Loc=SA Loc=SB (2) A<10 A>5 Loc=SA ¬(Loc=SB) (3) A<10 A>5 ¬(Loc=SA) Loc=SB (4) A<10 A>5 ¬(Loc=SA) ¬(Loc=SB) (5) A<10 ¬(A>5) Loc=SA Loc=SB (6) A<10 ¬(A>5) Loc=SA ¬(Loc=SB) (7) A<10 ¬(A>5) ¬(Loc=SA) Loc=SB (8) A<10 ¬(A>5) ¬(Loc=SA) ¬(Loc=SB)
计与查询处理) – 访问模式知识维 用户完全已知或部分已知访问模式
分布式数据库设计
• 从上往下方法:
– 已有DB… – 如何分割数据及如何分配这些数据到不同
站点
定义实体类型、 联系
概念设计
全局概念模式
反馈
需求分析
系统需求 (目标)
用户输入 视图集成
访问计
物理模式
观察与监视
• 假若有全局关系R 被分段为子关系(片段)集合
F = {F1, F2, …, Fn}, 则 F满足
– 完整性
x R, FiF 有 xFi
– 不相交性
xFi, Fj 使得 xFj, i j
– 重构性
存在函数 g 使得
R = g(F1, F2, …, Fn)
举例
职工关系 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
e# NM Loc Sal
E 5 Joe Sa 10
并发控制 中度
困难
容易
可靠性 实用性
很可靠 可能
较可靠 实用
低度可靠 可能
水平分段
• 基本水平分段
以关系自身的属性性质为基础,执行“选 择”操作,将关系分割成若干个不相交的 片段
F = { F1, F2 }
F1 = loc=Sa(E)
F2 = loc=Sb(E)
水平分段- 续
• 若 R F = {F1, F2, …, Fn}, 则
小项谓词选择-续
(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)
7 Sally Sb 25 8 Tom Sa 15
..
.. ..
e# NM Loc Sal
5 Joe Sa 10 8 Tom Sa 15
站点Sa
..
F
e# NM Loc Sal
7 Sally Sb 25
站点 Sb
分布选择比较
查询处理 目录管理
全复制 容易 容易或不存在
部分复制
无复制
有些困难
有些困难
– 完整性 对于每一个元组 tR, FiF 使得 tFi
– 不相交性 对tFi, Fj 使得 tFj, i j
– 可重构性 操作是并 (可以忽略, 因为完整性就蕴含着)
• 例子
R = {F1, F2, …, Fn}
EMP ( E#, NAME, DEPT, JOB, SAL, TEL, …)
从上向下设计过程
定义用户界面
视图设计
外部模式定义
用户 输入
反馈
分布式数据库设计-续
• 自下向上方法:
– 存在多个数据库(还可能是异构\自治) – 无设计问题(信息集成)!
DDB设计的两个问题
• 分段
– 分割关系成“段”
• 分配
– 将段置放到站点
• 目标
– 优化响应时间/吞吐量/费用/…
分段原则
如何保证分段原则
• “手工”检查!
e.g., F1 = loc=‘Sa’ E ; F2 = loc=‘Sb’ E
• 生成具有满足分段原则的限定谓词
谓词生成举例
• 设有关系 E (e#,name,loc,sal,…), 查询使用的简单 谓词(Ai Value)是: A<10, A>5, Loc = Sa, Loc = Sb
分布式计算机系统设计
• 数据分布 • 程序(应用)分布
– 分布式DBMS的应用分布
• DDBMS分布 假定每个存储数据的站点都有DDBMS副本 • 应用程序分布
• 分布式系统设计的三维
– 共享维 不共享,数据共享,数据+程序共享 – 访问模式维 静态模式,动态模式(分布式数据库设
DEPT={1,2} JOB={‘P’, ‘-P’}
假定,应用经常查询的内容是属于部门1且是程序员的职 员。(80/20原则)
水平分段- 续
• 则可能有的水平分段限定
– P={ DEPT=1} – P={DEPT=1, JOB=‘P’} – P={DEPT=1, JOB=‘P’, SAL>500}
分段结果
F2: 5 < A < 10 F3: 5 < A < 10 F6: A 5 F7: A 5 F10: A 10 F11: A 10
Loc=SA Loc=SB Loc=SA Loc=SB Loc=SA Loc=SB
注:无用段的消除依赖于应用的语义
e.g.: 如果 LOC 可以是 SA, SB, 则最终分段集合
• 下一步: - 生成 “小项” 谓词 - 消除无用谓词
• 给定简单谓词集 Pr= { p1, p2,.. pn }, 则“小项”谓 词(minterm predicate)形式: p1* p2* … pn* 这里 pk* 是 pk 或是 ¬pk
小项谓词选择
(1) A<10 A>5 Loc=SA Loc=SB (2) A<10 A>5 Loc=SA ¬(Loc=SB) (3) A<10 A>5 ¬(Loc=SA) Loc=SB (4) A<10 A>5 ¬(Loc=SA) ¬(Loc=SB) (5) A<10 ¬(A>5) Loc=SA Loc=SB (6) A<10 ¬(A>5) Loc=SA ¬(Loc=SB) (7) A<10 ¬(A>5) ¬(Loc=SA) Loc=SB (8) A<10 ¬(A>5) ¬(Loc=SA) ¬(Loc=SB)
计与查询处理) – 访问模式知识维 用户完全已知或部分已知访问模式
分布式数据库设计
• 从上往下方法:
– 已有DB… – 如何分割数据及如何分配这些数据到不同
站点
定义实体类型、 联系
概念设计
全局概念模式
反馈
需求分析
系统需求 (目标)
用户输入 视图集成
访问计
物理模式
观察与监视
• 假若有全局关系R 被分段为子关系(片段)集合
F = {F1, F2, …, Fn}, 则 F满足
– 完整性
x R, FiF 有 xFi
– 不相交性
xFi, Fj 使得 xFj, i j
– 重构性
存在函数 g 使得
R = g(F1, F2, …, Fn)
举例
职工关系 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
e# NM Loc Sal
E 5 Joe Sa 10
并发控制 中度
困难
容易
可靠性 实用性
很可靠 可能
较可靠 实用
低度可靠 可能
水平分段
• 基本水平分段
以关系自身的属性性质为基础,执行“选 择”操作,将关系分割成若干个不相交的 片段
F = { F1, F2 }
F1 = loc=Sa(E)
F2 = loc=Sb(E)
水平分段- 续
• 若 R F = {F1, F2, …, Fn}, 则
小项谓词选择-续
(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)
7 Sally Sb 25 8 Tom Sa 15
..
.. ..
e# NM Loc Sal
5 Joe Sa 10 8 Tom Sa 15
站点Sa
..
F
e# NM Loc Sal
7 Sally Sb 25
站点 Sb
分布选择比较
查询处理 目录管理
全复制 容易 容易或不存在
部分复制
无复制
有些困难
有些困难
– 完整性 对于每一个元组 tR, FiF 使得 tFi
– 不相交性 对tFi, Fj 使得 tFj, i j
– 可重构性 操作是并 (可以忽略, 因为完整性就蕴含着)
• 例子
R = {F1, F2, …, Fn}
EMP ( E#, NAME, DEPT, JOB, SAL, TEL, …)
从上向下设计过程
定义用户界面
视图设计
外部模式定义
用户 输入
反馈
分布式数据库设计-续
• 自下向上方法:
– 存在多个数据库(还可能是异构\自治) – 无设计问题(信息集成)!
DDB设计的两个问题
• 分段
– 分割关系成“段”
• 分配
– 将段置放到站点
• 目标
– 优化响应时间/吞吐量/费用/…
分段原则
如何保证分段原则
• “手工”检查!
e.g., F1 = loc=‘Sa’ E ; F2 = loc=‘Sb’ E
• 生成具有满足分段原则的限定谓词
谓词生成举例
• 设有关系 E (e#,name,loc,sal,…), 查询使用的简单 谓词(Ai Value)是: A<10, A>5, Loc = Sa, Loc = Sb