首页 百科知识 分布式数据库

分布式数据库

时间:2022-10-09 百科知识 版权反馈
【摘要】:分布式数据库是作为一个单独的数据库位于不同场所的系统。分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性。因此一个对象的全局对象名保证在分布式数据库内是唯一。在分布式数据库中,事务控制必须在网络上直辖,保证数据一致性。数据库链对分布式数据库的用户是透明的,数据库链的名字与链所指向的数据库的全局名相同。

3.9 分布式数据库

3.9.1 理解分布式数据库

分布式数据库是作为一个单独的数据库位于不同场所的系统。这些场所可以在任何地方,从紧邻的办公室到世界的任一端。在一个具有不同结点连接起来的网络环境当中,分布式数据库担当一个单独的系统。为了完全理解一个分布式系统是如何工作的,数据库管理员必须具备一定的专业知识,理解多硬件系统、网络、客户服务器技术与数据库管理技术。

一个分布式数据库在用户面前为单个逻辑数据库,但实际上是由存储在多台计算机上的一组数据库组成。在几台计算机上的数据库通过网络可同时修改和存取,每一数据库受它的局部的DBMS控制。分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性。

在系统中的每一台计算机称为结点。如果一结点具有管理数据库软件,该结点称为数据库服务器。如果一个结点为请求服务器的信息的一应用,该结点称为客户。在Oracle客户,执行数据库应用,可存取数据信息和与用户交互。在服务器,执行Oracle软件,处理对Oracle数据库并发、共享数据存取。Oracle允许上述两部分在同一台计算机上,但当客户部分和服务器部分是由网连接的不同计算机上时,更有效。

分布处理是由多台处理机分担单个任务的处理。在Oracle数据库系统中分布处理的例子如:

客户和服务器是位于网络连接的不同计算机上。

单台计算机上有多个处理器,不同处理器分别执行客户应用。

Oracle Net是Oracle网络接口,允许运行在网络工作站的Oracle工具和服务器上,可存取、修改、共享和存储在其他服务器上的数据。Oracle Net可被认为是网络通信的程序接口。Oracle Net利用通信协议和应用程序接口(API)为Oracle提供一个分布式数据库和分布处理。

Oracle Net驱动器为在数据库服务器上运行的Oracle进程与Oracle工具的用户进程之间提供一个接口。

参与分布式数据库的每一服务器是分别独立地管理数据库,好像每一数据库不是网络化的数据库一样。每一个数据库独立地被管理,称为场地自治性。场地自治性有下列几种好处:

(1)系统的结点可反映公司的逻辑组织。

(2)局部数据库管理员控制局部数据,这样每一个数据库管理员责任域要小一些,可更好管理。

(3)要一个数据库和网络是可用,那么全局数据库可部分可用。不会因一个数据库的故障而停止全部操作或引起性能瓶颈。

(4)故障恢复通常在单个结点上进行。

(5)每个局部数据库存在一个数据字典。

(6)结点可独立地升级软件。

可从分布式数据库的所有结点存取模式对象,因此正像非分布的局部的DBMS,必须提供一种机制,可在局部数据库中引用一个对象。分布式DBMS必须提供一种命名模式,以致分布式数据库中一个对象可在应用中唯一标志和引用。一般在层次结构的每一层实施惟一性。分布式DVMS简单地扩充层次命名模型,实施在网络上唯一数据库命名。因此一个对象的全局对象名保证在分布式数据库内是唯一。

Oracle允许在SQL语句中使用对象名引用分布式数据库中的模式对象(表、视图和过程)。在Oracle中,一个模式对象的全局名由三部分组成:包含对象的模式名、对象名、数据库名,其形式如下:

SCOTTEMP@MYOracle.CITYHUNTER.COM

其中SCOTT为模式名,EMP为表名,@符号之后为数据库名。

一个远程查询为一查询,是从一个或多个远程表中选择信息,这些表驻留在同一个远程结点。

一个分布式查询可从两个或多个结点检索数据。一个分布式更新可修改两个或两个以上结点的数据。

一个远程事务为一个事务,包含一个或多个远程语句,它所引用的全部是在同一个远程结点上。一个分布式事务中的一个事务,包含一个或多个语句修改分布式数据库的两个或多个不同结点的数据。

在分布式数据库中,事务控制必须在网络上直辖,保证数据一致性。两阶段提交机制保证参与分布式事务的全部数据库服务器是全部提交或全部回滚事务中的语句。

Oracle分布式数据库系统结构可由Oracle数据库管理员为终端用户和应用提供位置透明性,利用视图、同义词、过程可提供Oracle分布式数据库系统中的位置透明性。

Oracle允许在SELECT(查询)、INSERT、UPDATE、DELETE、SELECT……FOR UPDATE和LOCKTABLE语句中引用远程数据。对于查询,包含有连接、聚合、子查询和SELECT……FOR UPDATE,可引用本地的、远程的表和视图。对于UPDATE、INSERT、DELETE和LOCK TABLE语句可引用本地的和远程的表。注意在引用LONG和LONG RAW列、序列、修改表和封锁表时,必须位于同一个结点。Oracle不允许作远程DDL语句。

在单场地或分布式数据库中,所有事务都是用COMMIT或ROLLBACK语句终止。Oracle提供两种机制实现分布式数据库中表重复的透明性:表快照提供异步的表重复;触发器实现同步的表的重复。在两种情况下,都实现了对表重复的透明性。

3.9.2 使用一个分布式数据库

分布式数据库由通过数据库链与网络连接链接起来的多个数据库组成。对这些系统的管理可以大不相同。

在大型、高度集中的企业中,每个位置必须有它自己的数据库管理员;在一个高度集中的企业中,一个数据库管理员将负责位于不同省市,有些情况下,不同国家中的数据库。对这些数据库的管理与调整与自治的数据库系统相同,只是指向它们的链接与视图有所不同。

有许多原因需要使用一个分布式数据库系统的一些原因如下:

(1)应用设计。一定的软件设计深化为一个分布式系统。具有多个位置,每个位置上有分离的部门或数据库的公司将使用相同的或相似的软件。每个地点将维护它自己环境中唯一的数据。当公司发展时,每个地点将会要求访问其他结节位置上的数据,这最终会发展成为一个分布式系统。

(2)改进的性能。本地数据库将比一个大型集中的数据库小。结果是,该数据库上的查询与其他的事务将会运行得更快。网络活动将显著降低,改进整个系统的性能。

(3)较少的、不太昂贵的硬件需求。通过减少每个系统上用户的总数,支持这种系统的硬件可以相当的小(依赖于每个结点上的实际用户数)。例如,每个本地数据库可能会运行在一个单CPU NT服务器上,而不是运行在一个大型主机上。

(4)改进的可靠性可用性。通过将数据分布到多个结点,系统更有可能处于运行状态。

当一个结点停机时,系统的其他结点仍处于运行状态并且是可访问的。这种软件的分布增加了另一维可靠性。通过具有拥有软件副本的结点,每个结点可以是一个镜像结点以支持一个灾难恢复计划。

(5)改进的大量开发支持与前台应用。

Oracle给它的后台应用和前台应用提供了高级复制。后台应用要求实时复制数据,前台应用区域是一个正在增长的市场,特别对大量开发而言,此时高级复制功能具有许多优势。

这些功能对企业是有用的。

3.9.3 分布式数据库全局名与数据库链

(1)分布式数据库全局名。每一个数据库有一个唯一的全局名,由两部分组成:数据库名(小于等于8字符)和网络域。全局数据库名的网络域成分必须服从标准互联网规范。域名中的层次由符号“.”分开,域名的次序由叶至根,从左至右。

(2)数据库链。为对过程数据库定义的一路径。数据库链对分布式数据库的用户是透明的,数据库链的名字与链所指向的数据库的全局名相同。其由两部分组成:远程账号和数据库串。例建立数据库链的形式:

CREAT PUBLIC DATEBASE LINK sale.Division3.acme.com

CONNECT TO guest IDENTIFIED BY password

USING‘DB串’:

其中:sa1es.Divisin3.acme.com为定义的链名;guest/password为远程数据库的用户账号和口令;DB串用于远程连接。由账号和:DB串构成完全路径。如果只有一个则为部分路径。

有三种数据库链可用于决定用户对全部对象名的引用:

(1)专用数据库链:为一指定用户建立。专用数据库链仅链的主人可使用。在SQL语句中用于指定一全局对象名或者在持有者的视图过程定义中使用。

(2)公用数据库链:为特殊的用户组PUBLIC建立。公用数据库链可为任何用户使用,在SQL语句中用于指定一个全局对象名或对象定义。

(3)网络数据库链:由网络域服务器建立和管理,可为网络中的任何数据库的任何用户使用,可在SQL语句中指定全局对象名或对象定义中使用。注意:当前网络域服务器对Oracle不能用,所以网络数据库链不可用。

3.9.4 表快照

Oracle的表快照特征允许一个主表在分布式数据库的其他结点进行复制。只允许修改主表,而复制只可读。主表达式每一个复制称为一个快照。快照异步的刷新,反映主表的一个最近事务一致状态。

一个快照可为表的完全拷贝或者为表的一个子集,由引用一个或多个主表、视图或其他快照的分布式查询所定义。包含主表的数据库称为主数据库。

快照有两种:一种是简单快照。另一种是复杂快照。简单快照的每行是基于单个远程表中的一行。所以定义简单快照的查询中不能有GROUB BY或CONNECT BY子句,或子查询、连接或集合操作。如果在快照定义的查询中包含有上述子句或操作,这种快照称为复杂快照。

简单快照与复杂快照示例如图3-7所示。

img34

图3-7 简单快照与复杂快照示例

在快照建立时,Oracle在快照的模式中建立几种内部对象:

在快照结点,Oracle建立一基表用于存储由快照定义的查询所检索的行,然后为该表建立一个只读的视图,并为远程主表建立一视图,该视图用于新快照。

一个快照周期地被刷新,反映它的主表的当前情况。为了刷新一快照,快照定义查询是被发出,其查询结果想存储在快照中,代替以前的快照数据。

当快照为简单快照时,可以由快照日志来刷新,这样可加快刷新处理。快照日志是在主表数据库中的一表,与主表相关。Oracle使用快照日志跟踪主表中已修改的行。当基于主表的简单快照刷新时,仅需要快照日志的相应行来刷新快照,这种刷新称为快速刷新。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈