现在的位置: 首页 > 综合 > 正文

Concept-第23章翻译

2014年11月06日 ⁄ 综合 ⁄ 共 12288字 ⁄ 字号 评论关闭

数据库应用程序开发

主要描述了应用程序开发中所使用的在oracle所包括的语言和数据类型。这部分包含下面的内容:

*23章,“信息整合”

*24章,SQLPL/SQL以及Java

*25章,应用程序开发语言的概述

*26章,原始的数据类型

*27章,对象数据类型以及对象视图

 

23 信息整合

这篇文章包含了下面的内容:

*oracle信息整合的介绍

*统一的数据访问

*信息共享

*整合非oracle系统

 

随着企业的发展,在企业中多个数据库以及应用程序之间的共享信息变的越来越重要。当客户在线提交订单时,企业需要在各个先手团队或者合作伙伴之间共享OLTP数据更新,数据库事件,以及应用程序之间的消息。信息需要到达不同的目的地,包括:异构的复制数据库,消息队列系统,数据仓库中转区,操作型数据存储,其他的应用以及备用数据库。

有三种共享信息的基本途径:一种是将数据存储在唯一的数据库中,这样减少了将来的数据整合工作。第二种是将信息分布式存储,并且提供工具整合这些信息,用户在访问数据库时如同访问一个虚拟的数据库。第三种方法是信息共享。此时需要你使用各种数据存储应用程序来维护信息。本章主要讲信息集成和信息共享。

 

Oracle使用分布式SQL语句来集成分布式信息。分布式SQL语句同步访问以及更新分布在多个数据库中的数据,同时维护位置透明性以及数据完整性。

Oracle流是一个oracle数据库提供的异步信息共享架构。Oracle流可以挖掘oracle的重做日志来捕捉对oracle数据的DML以及DDL修改操作,并且可以将修改的数据对于其他应用程序以及数据库来说是可以访问的。因此,oracle流能够提供非常灵活的异步复制解决方案,以及事件通知框架。因为数据流支持应用程序显式地入队以及出队操作,它也提供了一个完全的异步消息解决方案。该解决方案,oracle的高级队列,能够被用来和客户,合作伙伴以及供应商之间交换信息,并且协同多个业务进程。Oracle数据流和分布式SQL语句能够在非oracle系统中使用oracle的透明网关,通用连接以及消息网关来访问和更新该系统下的数据。Oracle能够和非oracle数据源,非oracle消息队列系统以及非SQL应用程序相集成,确保oracle与其他开发商有互操作性。所有数据能够被同时访问和修改。

分布式系统是由多个能够无缝通信的独立系统构成的网格。在分布式系统中的每个系统被称为一个节点。用户直接连接的系统被称为本地系统。用户访问的其他的系统被称为远程系统。分布式系统允许访问本地系统和远程系统以允许及本地和远程之间的数据交换。所有的数据能够同时被访问和修改。

当分布式系统允许通过网络对大量数据进行访问时,同时隐藏了数据的位置以及也减少了通过网络访问的复杂性。

在一个分布式系统中为了能够使公司操作顺利,必须能够做下面的操作:

*oracle数据库之间交换数据

*应用程序之间能够相互通信

*能够帮助与客户,伙伴以及供应商通信

*在数据库之间复制数据

*能够和非oracle数据库通信

 

统一的数据访问

同构分布式数据库系统是一个由位为一个或者多个计算机上的一个或者多个oracle数据库组成的系统。

分布式SQL

分布式SQL使应用程序和用户来同时访问或者修改在一些数据库上的数据,分布式SQL对多个数据库数据的访问和修改与对一个单独的数据库访问和修改一样容易。

一个分布式oracle数据库系统对于用户来说是透明的,使系统对于用于来用户来说好象就是一个单独的oracle数据库。企业可以使用这种分布式SQL特性来使所有的数据库运行起来看上去象只是一个数据库,并且因此减少了分布式系统的复杂性。

用户使用数据库链接来使在数据库上的一个用户可以访问在远程数据库上的对象。一个本地的用户可以访问一个远程数据库的链接,而不需要必须是远程数据库上的用户才能够访问远程数据库。

 

位置透明性

应用程序开发者以及管理员可以使用oracle分布式数据库系统能够隐藏数据库的物理位置的特性,使对象对于应用程序和用户来说具有透明性。位置透明性在不管该应用程序被连接到哪个节点上,用户都能够访问到数据库中的对象,比如:数据库表。位置透明性有一些优势,包括下面的列出的:

*对远程数据的访问是简单的,因为数据库用户不需要知道数据库对象的具体位置;

*管理员能够移动数据库对象并且在移动对象的同时用户和连接的存在的数据库应用程序不会受到影响。比如:对于在一个应用程序方案中的表和对象,数据库管理员可以使用同义词来实现位置透明性。

除了同义词,开发者能够使用视图和存储过程来为运行在分布式系统中的应用程序实现位置透明性。

 

SQL以及COMMIT透明性

Oracle的分布式数据库结构也提供查询,更新,以及事务透明性。比如:标准的SQL语句,比如:SELECTINSERTUPDATE,以及DELETE的操作就象他们在非分布式系统中操作一样。除此之外,应用程序使用标准的SQL语句COMMITSAVEPOINT,以及ROLLBACK来控制事务。

不象在本地数据库的事务,分布式事务包括改变在多个数据库内的数据。结果,分布式处理变得更复杂,因为oracle必须同时协调在一个事务中对多个数据库数据变更的提交或者回滚,将这些操作作为一个独立的单元。换句话说也就是要么整个事务提交,要么整个事务回滚。

 

Oracle使用两步提交机制来确保在分布式事务中的数据的完整性。在预备阶段,在事务中的初始节点分配任务给其他参与的节点来确认是否可以提交任何或者回滚任务。在提交事务期间,开始节点要求所有参与的节点提交事务。如果在此时有参与的节点中有一个节点答复不能提交,那么整个事务中的所有参与的节点都回滚该事务中所做的任务。两步提交机制是一个完全透明的,并且不需要复杂的编程或者其他特殊的操作就可以对分布式事务进行控制。

 

分布式查询优化

当一个事务需要分布式SQL语句中引用的远程表中的数据时,分布式查询优化减少了分布式节点之间的数据传输量。分布式查询优化使用oracle的优化器来查找或者产生SQL表达式,该表达式能够从远程数据库中抽取必要的数据,在远程节点处理数据以及将结果返回本地节点做进一步处理。

相对于为了处理事务将所有的表数据传输到本地数据库,分布式查询优化减少了需要传输的数据量。使用各种优化提示,比如:DRIVING_SITE,NO_MERGE,以及INDEX,你可以控制oracle在哪里处理数据以及如何访问数据。

 

信息共享

信息整合的核心就是将企业内的各种应用程序之间共享数据。

复制是一种在一个或者多个数据库内维护数据库对象的操作。复制技术为许多企业所面临的可伸缩性,可用性以及性能问题提供了一个解决方案。比如:复制技术能够改进企业网站的性能。通过本地复制那些被本地用户频繁查询的远程表,比如,详细目录表,这样通过复制表的方法可以减少通过网络传输数据的数据量。通过将本地用户不必访问位于远程数据库中的数据而是访问位于本地数据库的副本,分布式数据库不需要通过网络重复地传输数据,因此使数据库应用性能得到最大化的改进。Oracle数据流提供强大的复制特性能够被用来同步分布式对象的多个副本。

许多企业开发了各种自治的分布式应用程序,来自动控制业务流程以及管理业务任务。但是,这些应用程序需要相互通信,确保业务流程和任务处于一致的状态。他们也需要和客户,伙伴以及供应商通过低成本的渠道比如因特网来进行有效地信息交流,同时保留了事件的可跟踪的历史信息(这个事件以往是通过纸质表单进行记录的)。对于能够使这些应用程序之间松耦合,oracle通过使用建立在oracle数据流架构之上的oracle数据流的高级队列来实现的。oracle数据流的高级队列提供了处理事件的一个统一的框架。在应用程序,工作流中产生的事件,或者在数据库重做日志隐式地被捕捉到或者数据库触发器中捕捉到并且暂存到队列中。这些事件可以以各种方式使用。它们可以使用自定义函数或者数据库表操作被自动地应用,或者它们显式地出队列。应用程序也可以向需要使用事件的应用程序发送通知。这些事件可以在流动的任意阶段被转换。如果使用事件的应用程序在不同的数据库中,然后事件能够自动地传播到适合的数据库中去。在这些事件上的操作能够自动地被审计,并且在用户的保存周期内历史能够被保存。

 

Oracle数据流组件

Oracle数据流是可以允许在一个数据库内(或多个数据库之间)以数据流的形式来传播数据,事务以及事件,并且对这些进行管理。数据流将发布的信息传送到订阅者处。当用户需要修改发布信息时,可以创建新的oracle数据流,而不需要影响已经存在的数据流的功能。

Oracle数据流提供一组属性集合,该属性允许用户来控制哪些信息加入到数据流中,数据流如何流动或者是如何从一个节点流动到另一个节点,当数据流进每个节点时对在数据库流中的事件所触发的操作,以及数据流是如何终止的。通过对数据流上属性的配置进行定义,用户能够实现特定的需求,比如:消息队列或者数据复制。

Oralce数据流能够满足各种环境下的信息共享需求。Oracle数据流高级队列提供了数据库集成的消息队列和事件管理功能。除此之外,oracle使用oracle数据流工具来帮助实现用户构建事件通知,复制以及数据仓库加载的解决方案。使用强大的oracle数据流功能,用户还可以创建一个框架,同时满足上述多种解决方案的需求。这些解决方案及其所需的元数据都是相互兼容的。比如:一个用于数据仓库数据加载数据的系统能够被扩展为能够双向数据复制的系统。这样就不需要进行完全的重新设计系统框架。

 

Oracle数据流的体系结构

oracle数据流的体系结构是非常灵活的。在图23-1中,数据流包含三个基本的要素:

*捕获

*中转

*使用

 

23-1 数据流的信息流动过程


 

捕获

Oracle数据流能够捕获隐式的以及显式的事件,并且将这些事件放置于中转区域。数据库事件,比如:DML以及DDL变更,能够通过挖掘重做日志文件来隐式的挖掘到。用户可以设置规则来决定哪些事件需要被捕获。代表一个被捕获过的事件的信息已经被格式化为一个逻辑变更记录(LCR)并且被放置于中转区域。

Oracle数据流支持挖掘联机重做日志,以及挖掘归档日志文件。在联机重做日志的挖掘中,对变化数据的重做信息进行挖掘,同时可以对重做日志进行写操作,这样的同步操作减少了被捕获的信息与实际数据的延迟。

用户应用程序显式地将代表数据库事件的消息加入中转站的队列中。这些消息被格式化为LCRs,能够被应用引擎使用,或者它们被格式化为特殊的形式,通过使用显式地出队供其他用户应用程序使用。

 

中转

一旦捕获,事件被放置于中转区域。中转区域是存储以及管理被捕获到的事件的一个队列。LCRs以及其他类型的事件被存储到中转区域直到订阅者使用这些事件。LCR中转能够提供安全的区域,并且可以对LCR数据进行审计与跟踪。

订阅者检查中转区域的内容并且决定是否存在感兴趣的代表事件的消息。订阅者或是用户,应用程序,或是传播消息到另一个中转区域(通常是到另一个系统)的传播者,或是应用进程。订阅者可以设定评估规则,来决定是否消息满足订阅标准。如果满足,那么该消息将被订阅使用。

如果订阅者是应用程序,那么该应用程序将会使该消息从中转区域出队列然后使用该消息。如果订阅者是向另一个中转区传播的宣传者,那么该消息将会传播到那另一个中转区域。如果订阅者是事件应用进程,那么该进程将会使该消息出队列然后使用该消息。

在中转区域中的事件可能会传播到在同一个数据库中的另一个中转区域,或者被传播到在远程数据库中的中转区域。为了简化网络传输以及减少网络流量,事件不需要发送到系统中的所有数据库以及应用程序中去。而是,通过一个或多个系统的中转区域来存储控制事件直到事件到达订阅这的系统。并不是所有的系统需要订阅事件,这样就可以对在一个特定的系统中选择哪些事件提供灵活性。一个单独的中转区域能够中转来自多个数据库中的事件,使系统的安装和配置简单化。

当事件进入或者离开中转区域,或者被传播时,事件可以同时进行转化工作。转换也就是对参与捕获以及应用的对象的形式方面的变更,或者是在数据方面的变更。转换包括修改在特定数据库中的表中的特定的列的数据类型,向某个数据库中的表中添加列,或者包括在指定数据库中表中的数据的子集。

 

使用

在中转区域的消息被应用引擎所使用,应用引擎负责将消息所表示的数据变更应用到数据库中,或者消息被应用程序所使用。一个oracle数据流应用过程是非常灵活的。可以采用标准的或者自定义的方式应用事件。自定义应用能够在应用期间操纵数据或者执行其他的活动。对显式出队列的支持允许应用程序开发者使用oracle数据流来进行信息交换。开发者还可以使用oracle数据流的变化数据捕获以及传播特性来将数据修改事件通知应用程序。

 

使用oracle数据流实现数据复制

Oracle数据流是一个信息共享技术,该技术能够自动地获取用户需要的信息并且将信息共享给用户。这种信息共享的操作包括捕获以及管理在数据库中的事件(包括DML以及DDL变更的事件),并且包括传播这些事件给其他数据库以及应用程序。Oracle数据流捕获到的数据修改能够被直接应用到复制数据库中去,或者调用用户自定义的存储过程来在目标数据库中执行其他操作。比如:一个存储过程就是能够传播用来加载数据仓库的中转区域的表数据。

在数据复制过程中Oracle数据流采用的基本步骤是:

*捕获DML以及DDL修改

*经定向网络传播数据修改

*解决冲突以及应用修改

 

捕获DML以及DDL修改

为复制数据库配置数据流首先需要定义需要配置的对象或者对象集合。使用oracle数据流的隐式捕获机制,那么对这些对象的变更能够被有效地捕获到并且将这些数据修改复制到一个或者多个远程数据库中,仅对原始系统只有微小的影响。这种捕获机制能够从重做日志中抽取数据修改(DML)以及结构修改(DDL)。被捕获的修改别发布到中转区域中。基于重做日志的捕获能够使对表所做的变更被记录在重做日志文件中来保证在发生故障或者是介质损坏时可以恢复。

直接从重做日志文件中捕获到的修改数据源系统上的负荷最小化。Oracle能够读取,分析以及解释重做信息,即在重做日志文件中包含的有关对数据库操作的历史信息。Oracle数据流能够挖掘信息并且将修改的数据递送到捕获进程中。

使用oracle数据流技术复制出来的数据库不必与源数据库相同。使用数据流来将数据转换为适当的格式的特性可以维护数据库之间的不同的数据结构。数据流可以在多个时间点上提供转换数据流的功能:在源数据库的修改捕获期间,在将事件传播到另一个数据库期间,或者在目标节点上的应用程序处理数据期间。这些转换工作都是登记在oralce数据流框架中的用户自定义的函数来完成的。比如:转换可以修改在一张表中指定列的数据类型或者是修改表中的列名或者修改表名等。

在每个节点上的数据可以是源数据的子集。比如:复制时可以使用规则,该规则可以定义根据包含在表中的部门标识查找出属于指定部门的员工。Oracle数据流能够自动地管理修改来确保只复制符合规则的数据。

 

经定向网络传播数据修改

在中转区域的事件能够被发送到其他数据库中的中转区域。数据流可以设置定向网络来允许数据修改能够按照执行的路线通过中间数据库到达目的数据库。在任何数据库上的修改能够够被发布并且能够通过网络传播到或者经过其他数据库。通过使用中转区域队列的基于规则的发布和订阅功能,数据库管理员能够选择哪些数据修改被传播到每个目标数据库,并且设定消息传输到目标数据库的路径。

因此,比如:一个企业能够配置复制数据库来捕获所有对指定方案的修改,并且仅将那些对欧洲客户的数据修改传播到在伦敦的欧洲客户总部,仅应用那些与伦敦分部有关的数据修改,并且促进节点指定的信息被应用到每个分部。

设定定向网络的方法在广域网(WAN)也可以使用,可以使数据修改首先发送到一个节点,之后发送到紧接着的节点,而不是直接发送到每个节点。

 

解决冲突以及应用数据修改

在中转区域中的消息能够被应用过程使用,在应用过程中这些数据修改被应用到数据库对象中,也可以被应用程序使用。用户自定义的过程,可以对被应用的事件进行完全的控制。

使用自定义的应用,为了处理对表的每种类型的DML操作(插入,更新,删除),单独的存储过程需要定义出来。比如:使用这种自定义的功能,用户可以写一个存储过程目的是为了能够根据员工的工资表中的值,在对员工进行删除操作时,跳过删除那些工资大于$ 1000000的员工。对原表的插入和更新操作,还有以及只对工资小于$1000,000的员工进行的删除操作会通过默认的应用引擎进行应用。

 

自定义应用也能够被用来执行自定义的数据转换。比如:在源数据库中对一个表的数据修改可能在远程数据库中需要将该数据修改应用到三张不同的表中。

在复制的远程数据库中完全可以进行读/写操作,并且其副本不需要与源数据库完全相同。因为远程数据库能够通过其他方式被修改,在数据修改应用到远程数据库之前会有一个应用过程会检查是否有冲突。这些冲突也能够通过内置的或者是自定义的解决机制将这些冲突自动地解决。

 

Oracle数据流的高级队列

Oracle数据流高级队列提供许多特性来完成数据库集成,构建健壮并且功能丰富的消息队列系统。这些特性改进了开发者的生产量,并且减少了管理员的操作负担,也就减少了构建和维护基于oracle的分布式应用程序的成本。这些特性的介绍如下:

 

异步的应用程序集成

Oracle数据流的高级队列提供分布式应用程序的异步集成。该组件提供了多种将消息消息入队方法。一个捕获过程能够隐式地从重做日志或者应用程序中捕获消息,并且用户能够显式地捕获消息。消息入队时可以设置延迟和过期属性。延迟属性是指迟允许一个入队的消息经过一段延迟时间之后才可见。高级队列在消息使用之前也支持对消息排队方式,有先进先出排序以及按照优先级对消息排序的方式。高级队列也提供多种使用消息的方式。自动应用让用户对消息调用用户自定义的操作。使用应用程序能够使一个消息显式地出队。消息队列可以支持阻塞和非阻塞出队方式。应用程序能够接受程序化的PL/SQLOCI,或者Java回调函数请求发出的消息通知,或者能够接受到以e-mail或者HTTP邮件形式的通知,然后获取消息并执行应用操作。应用程序也可以选择执行自动的应用操作。

可扩展的整合体系结构

 Oracle数据流高级队列为开发和整合分布式应用程序提供可扩展的框架。许多应用程序采用分布式轮辐式模型[distributed hub and spoke model],以oracle服务器为中心,整合多个应用程序。

基于oracle数据库的分布式应用程序可以与同一oracle服务器中的队列通信。Oracle的可扩展框架让多个应用程序共享同一个队列,就不需要添加额外的队列来支持额外的应用程序。

高级队列也支持多用户队列,也就是一个单独的消息能够被多个应用程序使用。当额外的应用程序被加进来时,这些多个应用程序可以使用oracle数据库中相同的队列以及甚至同一消息来协调业务事务的处理。这样保证了系统的可扩展性并且消息只需要被传递一次。

高级队列支持基于内容的发布以及订阅模式,应用程序可以发布消息并且客户可以订阅消息无需知道发布该消息的应用程序。使用这样的模式,用户可以向系统中添加应用程序,并且对存在的应用程序没有产生影响。

如果分布式应用运行在不同的oracle数据库中时,然后业务通信消息能够被自动地传播到相应的oracle数据库中。传播功能是由oracle数据流高级队列自动管理的并且对应用程序是透明的。

 

异构应用整合

在传统的应用整合中,不同的应用程序必须使用相同的数据模型才能进行通信。这种数据模型受限于基于消息的中间件所支持的数据类型。Oracle数据流高级队列支持AnyData队列,此队列能够存储多种数据类型的消息。

高级队列为应用程序提供使用oracle数据类型系统的功能。oracle数据类型系统包括标量数据类型,比如:number,date,varchar等等,具有继承能力的对象类型,具有XML数据操作符的XML类型,以及AnyData类型。高级队列支持XML数据类型,应用程序开发者能够充分利用XML的可扩展性以及灵活性来实现业务之间的通信。

Oracle数据流高级队列也提供了数据转换功能。使用不同的数据模式的应用程序可以在当消息出队或者入队时将消息转换为自身的数据模式。这些转换映射是由SQL表达式来定义的,SQL表达式可以是PL/SQL函数,Java函数,或者外部的C调用。

 

历史遗留应用整合

Oracle消息网关可以使oracle数据库应用与其他的消息队列系统整合起来,其他消息队列系统比如Websphere MQ(以前被称为 MQ Series)及 Tibco。因为许多在大型机器上的历史应用程序需要与Websphere MQ通信,所以需要将这些应用程序整合到oracle系统中去。消息网关可以使非oracle消息队列对用户来说看上去就是oracle数据流队列,并且自动地在oracle数据流队列和Websphere MQ或者Tibco队列之间进行传播。

包含多个合作伙伴的分布式应用程序可以使用oracle数据流的高级队列的Internet访问特性来协调这些应用程序之间的通信。使用这些高级队列的特性,外部合作伙伴或者应用程序能够放心地通过Internet将订单加入到高级队列中。只有经过授权以及经过身份验证的合作伙伴能够执行这些操作。

高级队列Internet的操作需要利用基于XMLInternet传输的协议,比如:HTTP(S),允许消息可以通过防火墙并且没有安全隐患。高级队列支持Internet通信,可以显著地减少通信成本,并且因此减少了整个解决方案的成本。

 

支持基于标准的API

Oracle数据流高级队列支持业界标准的APIsSQLJMS,以及SOAP。使用SQL所做的数据库修改被当作消息自动地被捕获。

同样,分布式消息以及数据库修改能够被应用到数据库表中,这些修改可以通过SQL查看。使用业界标准的JMS可以使消息能够加入队列并且出队列。高级队列也支持基于SOAPXMLAPI以及支持OCI以及OCCI,来帮助消息入队以及出队。

 

数据库修改通知

当注册查询的结果集发生变化时,客户应用程序能够接受到通知。比如:如果客户注册一个对hr.emloyees表的查询,并且如果用户用户添加一个员工的话,然后当一个新的行记录别插入到表中时,应用程序能够接受到一个数据库修改通知。对hr.employess表的新的查询就会返回变更后的结果集。数据库变更通知可以与许多开发工作相关联,尤其是对于那些依赖缓存数据的中间层应用程序。

 

修改数据的捕获

修改数据的捕获,是基于oracle数据流架构的特性,能够有效地鉴别以及捕获那些对oracle

相关表的添加,更新,或者删除的数据,并且修改数据的捕获可以使修改的数据可以被ETL工具和应用程序使用。使用oracle数据流的变更数据捕获功能,用户可以快速地鉴别和处理那些已经被修改的数据,而不是整张表。

 

异构系统

Oracle数据流是一个开放的信息共享解决方案,支持在oracle系统和非oracle系统之间的异构复制。使用透明的网关,在oracle数据库里执行的DML修改能够被应用到非oracle数据库中。

为了执行捕获对来自oracle数据源的DML数据修改以及将数据修改应用到非oracle目标数据库中的操作,oracle系统起到一个代理人的作用并且运行那些可能会在oracle目标数据库能够正常运行的应用进程。Oracle系统然后通过透明网关与非oracle系统通信。

数据修改首先从oracle数据库中出队,然后本地应用进程通过网络连接经过网关将这些数据修改应用到非oracle系统。

想将在非oracle数据库中的数据修改传播到oracle数据库中的用户可以写一个应用程序来捕获在非oracle系统上的数据修改。该应用程序能够通过读取事务日志文件或者使用触发器来捕获数据修改。该应用程序然后负责将这些捕获的数据修改排序组合为事务,并且将这些事务转换为oracle定义的逻辑变更记录(LCR)格式,然后在目标数据库的中转区域发布这些LCR记录。这些数据修改能够使用数据流应用过程应用到目标数据库中去。

 

Oracle数据流使用的案例

使用oraxcle数据流来创建一个框架,在此框架的基础上实现应用程序的新类。除此之外,所有的部署以及相关的元元素是相兼容的。比如:一个数据复制应用能够扩展为数据仓库的数据加载系统,或者是能够双向数据复制系统---而不需要重新设计框架。

假设一个企业使用oracle数据流来维护Web站点的多个副本,来改进可用性,可扩展性以及性能。额外也需要有一个报表包含最新信息的数据库,供在纽约的总部的分析人员来进行即席查询以及为纽约总部进行维护所做的灾难性数据库恢复。除此之外,可更新的物化视图能够被用来为无固定办公场所的销售人员提供数据。最后使用数据流可以与在sybase数据库中的已经存在的应用程序共享数据。

23-2 说明这种数据流的结构

23-2 数据流结构

Oracle数据流被用来在这个架构内的三个区域节点(纽约,伦敦,东京)之间进行复制数据。在每个节点上,基于日志的数据流捕获发生在每个节点中被订阅数据表上的任何数据修改,并且暂存这些数据修改于本地的队列中。在每个区域所捕获的所有数据修改都被运送到其他区域的数据库中,目的是为了是将在每个数据库节点上的所有数据修改都能够在其他数据库中反映出来,此时在整个系统的各个节点上订阅的对象都具有完全的数据。

因为当每个节点上的数据库接受到数据修改时,数据更新将会自动地应用到数据库中,所以oracle数据流应用过程就是被用来应用这些数据修改。当数据修改被应用时,oracle数据流检查并且解决已经被检测到任何冲突。数据流也能够被用来与非oracle数据库交换指定表的数据。为Sybase系统使用oracle的透明网关,这样数据流应用过程将会使用和oracle数据库相同的机制来将数据修改应用到Sybase系统中。

用于报表以及灾难性恢复的数据库位于纽约。报表数据库是一个功能齐全的oracle数据库,用来存储与报表相关的表的只读副本。报表数据库不能够捕获在这些表上的数据修改。数据流不会对报表数据库的配置和使用不会做任何限制。

伦敦节点也作为多个可更新的物化视图节点中的主节点。每个销售人员可以获取到他所需要的部分数据的副本。物化视图节点与主节点一天只能连接一次,来上传他们下的定单以及下载自从上次主节点刷新后任何修改的数据。

 

物化视图

Oracle数据流能够与物化视图(也叫快照)进行完全的相互操作,物化视图可以被用来维护可更新的或者只读的并且在某个时间点上的数据副本。物化视图可以是表的完整副本或者是 基于数据值从主表筛选出的结果集。物化视图的源可以是另一个物化视图,这样的物化视图为多层物化视图。物化视图可以按照周期来更新,或者也可以基于主表上的数据修改事务实时刷新。

只读的物化视图能够被用来周期地将已经被修改的商品分类传播到各种销售分部,因为商品分类只能在总部被修改。

因为物化视图不需要与主节点建立专用的连接,所以物化视图适合于脱机计算。比如:企业可能选择让销售成员使用可更新的物化视图。这样一个销售员能够将日间的定单情况输入到自己的笔记本中,然后在一天的结束时与销售系统来联机,上传新数据并下载系统中上次刷新后的修改数据。

 

整合非oracle系统

Oracle提供了两种方案来将oracle数据库与非oracle数据库整合:通过连接和透明网关。这些方案可以使oracle客户端能够访问非oracle数据源。这两种方案能够将第三方的SQL语句,数据字典以及数据类型转换为oracle的形式,因此这样就使非oracle数据库如同一个远程的oracle数据库。这些技术能够使企业将不同的异构`系统无缝的整合在一起并能够提供统一的视图。

分布式SQL可以通过连接和oracle的透明网关来对异构数据库进行同步访问。此外,oracle数据流也可以使用oracle的透明网关来对对异构数据库进行异步访问。在oracle数据流系统中使用透明网关技术能够将oracle数据库的数据复制到非oracle数据库中。

使用通过连接和oracle的透明网关可以在oracle系统中访问非oracle系统中的数据。与oracle分布式系统一样,位置透明性也能够被扩展到非oracle系统中的对象。因此,用户能够为非oracle系统中的对象创建同义词,并且可以不需要指定物理位置就可以引用这些对象。这种位置透明性,可以不需要开发者为访问来自非oracle系统的数据子定义一些程序,因此减少了开发量以及提高了应用程序的可迁移性。应用程序在访问oracle系统和非oracle系统时都可以使用一致的oracle接口,而不需要应用程序与非oracle系统的原生接口进行交互(这样会显著增加应用程序端的处理工作)。

 

通用连接

通用连接是一种通用的解决方案,可以使用ODBC或者OLEDB驱动来访问任何与ODBC或者OLEDB相兼容的非oracle系统。使用通用连接可以访问许多没有使用透明网关的非oracle数据库,通用连接使用业界标准,比如:ODBC以及OLEDB来提供透明的数据访问功能。使用通用连接可以访问低端数据源,比如:Foxpro,Acess,dBase,以及Excel类似的非关系型数据源。

 

Oracle的透明网关

与通用连接相反,通用连接是一种通用的解决方案,oracle透明网关是一个针对每种非oracle系统特别制定的解决方案。Oracle的透明网关提供一个优化的解决方案,使用比通用连接有更好的功能和更好的性能。

通用连接依赖业界的标准,而oracle透明网关通过原生接口来访问非oracle系统。透明网关是端对端的通信。Oracle提供了对多种数据源访问的透明网关,包括:Sybase,DB2,Informix,以及Microsoft SQL Server

抱歉!评论已关闭.