1 / 43

第 9 章 分布式数据库系统

第 9 章 分布式数据库系统. 本章主要介绍客户 / 服务器模式、服务器 - 服务器模式两种分布式数据库系统,以及分布式数据库的连接,分布式查询处理,并介绍了事务处理、多协议信息交换和表快照与复制,以便读者学习分布式数据库计算等技术。 9.1 概述 ( 客户 / 服务器结构、服务器一服务器结构) 9.2 分布式数据库的连接 9.3 分布式查询处理及其它 9.4 事务管理 9.5 多协议信息交换 9.6 表快照与复制. 9.1 分布式数据库系统概述. 分布式数据库系统与集中式数据库系统 构成:分布式数据库管理系统和分布式数据库

marsha
Download Presentation

第 9 章 分布式数据库系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 分布式数据库系统 本章主要介绍客户/服务器模式、服务器-服务器模式两种分布式数据库系统,以及分布式数据库的连接,分布式查询处理,并介绍了事务处理、多协议信息交换和表快照与复制,以便读者学习分布式数据库计算等技术。 9.1 概述(客户/服务器结构、服务器一服务器结构) 9.2 分布式数据库的连接 9.3 分布式查询处理及其它 9.4 事务管理 9.5 多协议信息交换 9.6 表快照与复制

  2. 9.1分布式数据库系统概述 • 分布式数据库系统与集中式数据库系统 • 构成:分布式数据库管理系统和分布式数据库 • 分布式数据库系统适合于单位分散的部门 • ORACLE的分布式结构基于两种模式 • 客户/服务器模式(client/server) • 服务器_服务器(server_server)结构

  3. 客户/服务器模式

  4. 服务器_服务器模式

  5. 分布式数据库的特征 ORACLE支持大多数理想的分布式特点 • 1. 本地自治(Local Autonomy) • 2. 不依靠一个中心站点 • 3. 能连续操作

  6. 全功能分布式数据库的规则和目标 • 规则细目 在ORACLE中存在 • 1 局部结点自治性 是 • 2 不依靠中心站点 是 • 3 连续操作 是 • 4 本地独立性 是 • 5 分片独立性 是 • 6 数据复制独立性 是 • 7 分布式查询处理 是 • 8 分布式事务管理 是 • 9 硬件独立性 是 • 10 操作系统独立性 是 • 11 网络独立性 是 • 12 DBMS独立性 是 返回章

  7. 9.2 分布式数据库的连接 图9.3:一个ORACLE分布式数据库实际结构

  8. 目录 9.2.1分布式数据库全局名和数据库链 9.2.2连接客户(CLIENTS)和服务器(SERVERS) 9.2.3 连接服务器(SERVERS)到其它服务器(SERVERS) 返回章

  9. 9.2.1分布式数据库全局名和数据库链1.分布式数据库全局名9.2.1分布式数据库全局名和数据库链1.分布式数据库全局名 • 全局数据库名唯一标识系统中的每个数据库 • 两部分组成:数据库名(小于等于8个字符)和网络域(net work domain) • 例:hq.divisionl.acme_tools.com • finance.division2.acme_tools.com • sales.division2.acme_tools.com • 对象可用对象全局名唯一标识 • human resources.emp@hq.divisionl.acme tools.COM

  10. 2.数据库链 • 数据库链:对远程数据库定义的一路径 • 数据库链对分布式数据库的用户透明 • 数据库链的名字与链所指向的数据库的全局名相同 • 数据库链由两部分组成:一个远程账号和一个数据库串 • 例建立数据库链的形式: CREATE PUBLIC DATABASE LINK sales.division3.acme.com CONNECT TO guest IDENTIFIED BY password USING’DB串’; • 由账号和DB串构成完全路径 返回节

  11. 9.2.2 连接客户(CLIENTS)和服务器(SERVERS) 图9.5 连接客户应用到服务器

  12. 连接客户应用到服务器 • 例9.1: $ runform scott/tiger@EDUCATION_DB my_form • EDUCATION_DB为连接描述符 • scott为用户模式名 • tiger为口令 • 客户应用myform • SQL* Net的连接描述符能连接客户到远程服务器 返回节

  13. 9.2.3 连接服务器(SERVERS)到其它服务器(SERVERS) 图9.6将服务器连接到服务器

  14. 例9.3:创建数据库链接Boston SQL>CREATE DATABASE LINK boston 2 CONNECT TO Scott IDENTIFIED BY tiger 3 USING ’education_db’; 'education_db'为数据库描述符

  15. 例9.4:用数据库连接BOSTON,访问远程scott/tiger账号中的EMP表。例9.4:用数据库连接BOSTON,访问远程scott/tiger账号中的EMP表。 • SQL>SELECT * • 2 FROM emp@boston; • ... • 14 rows retrieved. • 注意:数据库链在分布式数据库SQL语句中作为表名的一部分了 返回节

  16. 9.3 分布式查询处理及其它 • 9.3.1 建立分布式查询 • 9.3.2 在分布式事务(DISTRIBUTED TRANSACTION)中的其它语句 返回章

  17. 9.3.1 建立分布式查询

  18. 分布式查询例子 • 例 9.6: • SQL>SELECT ename,danme • 2 FROM emp@chicago,dept@ bethesda • 3 WHERE emp.deptno=dept.deptno • 4 AND loc=’NEW YORK’ • 5 AND job=’CLERK’; • SQL>SELECT ename,deptno • 2 FROM emp 3 WHERE job=’CLERK’ • SQL>SELECT dname, deptno • 2 FROM dept • 3 WHERE loc=’NEW YORK’ 等价于下面两个SQL语句的并 返回节

  19. 9.3.2 在分布式事务(DISTRIBUTED TRANSACTION)中的其它语句 • 例9.7:更新远程数据库中的数据: • SQL>UPDATE emp@ed_link • 2 SET Sal=Sal*1.05 • 3 WHERE ename=’WINSLOW’; • 1 row updaed. • 将数据插入到一个远程数据库的表中: • SQL>INSERT INTO emp@ ed_link (empno,ename,sql,hiredate,deptno) • 2 VALUES (1001,’EINSTEIN’,45OO,sysdate,40); • 1 row created. 从一个远程数据库的表中删除数据: • SQL>DELELE FROM emp@ed_link • 2 WHERE ename=’GREEN’; • 1 row deleted. 返回节

  20. 9.4 事务管理 • 事务 :一个原子单位 ,满足ACID准则即原子性、一致性、隔离性、持久性。 • ORACLE的事务管理 • 由一个可执行的SQL语句开始 ,事务开始时,被赋给一个可用回滚段,记录该事务的回滚项 • 事务结束 • 当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。 • 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。 • 用户撤消对ORACLE的连接(当前事务提交)。 • 用户进程异常中止(当前事务回滚)。

  21. 9.4 事务管理 • 1. 提交事务:将在事务中由SQL语句所执行的改变永久化 • 例9.8: 在对DEPT表插入一行后,提交该改变 • INSERT INTO DEPT VALUES (50,’LIU YIN’,’TAMPA’) • COMMIT WORK • 2.两阶段提交协议 :保证事务正常运行 • 第一阶段是“表决阶段” • 第二阶段是“执行阶段”

  22. 3. 回滚事务:撤消未提交事务中的SQL语句所作的对数据修改 例9.9:回滚当前整个事务 ROLLBACK 例9.10:回滚当前事务到SP5保留点。 ROLLBACK TO SAVEPOINT SP5 4. 保留点 在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分 返回章

  23. 9.5 多协议信息交换 9.5.1 SQL*NET 9.5.2 SQL*Net连接组分 9.5.3 Multi Protocol Interchange (多协议交换) 9.5.4 配置SQL*NET V2客户机(Client) 9.5.5 配置LISTENER 9.5.6 配置SQL*NET V2服务器(SERVER) 9.5.7 启动LISTENER 返回章

  24. 9.5.1 SQL*NET • 1. SQL*Net的功能概述客户机和服务器之间的连接通过SQL*Net建立和中止。 • SQL*Net映射ORACLE应用(UPI)和数据库调用(OPI)为网络调用。 • 在两个通讯结点之间不同的特征设置和NLS数据表示通过SQL*Net处理。 • SQL*Net “谈判” ( negotiates) • 一个结点既是客户(Client)应用,又可以是一个数据库服务器(Server)

  25. 2. SQL* Net 的优点 (1) 网络透明性 (2) 协议独立性 (3) 介质/拓扑独立性 (4) 异域网络性 (5) 本地透明性 返回节

  26. 9.5.2 SQL*Net连接组分 • SQL*Net V2和TNS接口 : • SQL*Net对应于特定的数据库通讯 • TNS是一组基本网络服务器集合,它可由许多不同的应用类型使用

  27. 返回节

  28. 9.5.3 Multi Protocol Interchange (多协议交换) • Multi Protocol Interchange :一个软件组分成分, 它允许SQL*Net V2/TNS连接穿过若干“共同体” • “共同体”是共享相同网络协议结点的集合 • Interchange不是一个: • 协议门路 • 协议变转器 • 路由器或 • 桥

  29. MutiProtocol Interchange

  30. 1. Interchange结构描述 图9.11 Interchange

  31. 2. 通过Interchange完成的连接

  32. Interchange完成的连接步骤 (1) 客户(Client)产生一个对不同“共同体”中一服务器(server)的连接请求 (2) SQL* Net V2/TNS 注意到目的地是在不同的“共同体”中,并发送出连接到客户(client)希望的Interchange。 (3)到来的连接请求由连接管理器接受。 (4)连接管理器(connection manager)询问导航器(navigator)是否它正进行着正确的路径。 (5)导航器回答yes(是),或者用一个更好的Interchange地址回答它。 (6)连接管理器传递连接控制到最好的现存数据泵(data pump),或者产生一个新泵,然后传递连接控制。 (7)数据泵询问导航器下一个去的地址:其它Interchange,或者其它目的地。 (8)数据泵发送连接到下个协议“共同体”。 注意:如果Interchange作为目的地是在同一个协议“共同体”中,则跳过第7步 返回节

  33. 9.5.4 配置SQL*NET V2客户机(Client) • 配置(Configure)一个SQL*Net V2客户机需要如下信息: • 连接描述符/数据库名字 • 客户机所属的协议“共同体” • 登录(Logging)和轨迹(tracing)信息 • SQL* Net V2/TNS连接描述符指定; • 服务器上listener的地址。 • 所连接到的ORACLE实例名。

  34. 配置SQL*NET V2客户机(Client) • 连接描述符在文件tnsnames.ora中定义 • 各个连接描述符需要CONNECT_DATA加上至少一个ADDRESS(地址)。 • 例9.11:配置客户机连接描述符的例子: • tnsnames.ora: • PROD7=(DESCRIPTION= • (ADDRESS= (COMMUNITY=TCP1.US.ORACLE) • (PROTOCOL=TCP) • (HOST=Server1) • (PORT=1521) • (CONNECT_DATA=(SID=PROD7))) • 用其连接: C:\Sgl plus scott/tiger @ PROD7 返回节

  35. 9.5.5 配置LISTENER • 1. 配置listener地址 :将机器上一定的数据库连接要求配置为监控器确定的地址 • listener配置文件listener.ora指定 例9.12:配置一个叫LISTENER的listener,来接受在PORT.7000的“共同体”TCP1.US.ORACLE和在OBJECT lsnr的DEC1.US.ORACLE“共同体”上的连接: LISTENER=(ADDESS_LIST= (ADDRESS= (COMMUNITY=TCP1.US.ORACLE.COM) (PROTOCOL=TCP) (HOST=hqvms1) (PORT=1521)) (ADDRESS=(COMMUNITY=DEC1.US.ORACLE) (PROTOCOL=DECNET) (NODE=hqvms1) (OBJECT=1snr)))

  36. 2.配置建立专用服务器(Dedicated Server)的Listener • 例9.13:配置叫做LISTENER的listener来启动对于PROD7和TEST7实例的专用服务器进程,这些进程在VAX机上由指定的程序文件执行: • SID_LIST_LISTENER=(SID_LIST= • (SID_DESC= (SID_NAME=PROD7) • (PROGRAM= ‘DISKS:[ORACLE.RDBMS]ORASRV_PROD7.COM’)) • (SID_DESC=(SID_NAME=TEST7) • (PROGRAM= ‘DISKS:[ORACLE.RDBMS]ORASRV_TEST7.COM’))) • 注意:要求启动一个专用服务器的关键字和将由平台而变化。 返回节

  37. 9.5.6 配置SQL*NET V2服务器(SERVER) • 各个Server的配置如下: • 文件 描述 • listener.ora listener 配置文件 • tsnames.ora 连接其它Server的连接描述符 • tnsnames.ora 现存的Interchanges列表。 • Sqlnet.ora 登录(logging)和轨迹信息。 • 注意:如果Server将不接触分布式数据库配置中的其它Server,则不要求tnsnames.ora

  38. Server的配置步骤 (1)为配置工具准备数据库账号。 (2) 以net_conf/net_conf登录到配置工具。 (3) 启动、返回到主屏幕,和在主屏幕完成 (4) 命名网络。 (5) 命名“共同体”。 (6) 配置listener。命名listener、指定配置参数、指定数据库SID 、指定连接描述符名字、指定(client)连接来使用 、指定listener如何启动一个专用服务器。、指定为LSNRCTL安全性的密码。、指定被监控(monitor)的地址。 (7) 配置客户机(client) :命名客户、列表客户所属于的“共同体”。 (8) 生成配置文件。 返回节

  39. 9.5.7 启动LISTENER 1. 命令状态 格式:$ LSNRCTL Command [listener_name] 其中:[Listener_name]是可选的listener的名字。 2. 交互式状态 格式:LSNRCTL>command[listener_name] LSNRCTL>exit 返回节

  40. 9.6 表快照与复制 1. 人工复制表 • 运用Export/Import实用程序输出一个远程表拷贝 • 向远程表上发出一个SELECT语句,以在本地机上建立一个拷贝 • 从SQL*PLUS 发出COPY命令,来拷贝远程表

  41. 人工复制表例子 例9.15:将数据库HQ中EMP的整个表拷贝到WEST数据库中的WESTEMP表。如果WESTEMP已经存在,SQL* PLUS将替代它的内容,WESTEMP 表中列与源表EMP的列有相同的名字。 SQL>COPY FROM SCOTT/TIGER@ HQ_ >TO JOHN/CHROME@ WEST_ >REPLACE WESTEMP_ >USING SELECT * FROM EMP

  42. 表快照与复制 2.用触发器(TRIGGERS)复制表 3.自动复制和更新表:可用表快照(snapshots)自动复制表 • 表快照的特点: • 快照可包含来自多个主表的数据。 • 快照可以是一个集合操作(GROUP BY)。 • 快照可以是一个表的子集(行,列)。 返回章

More Related