(3) 远程信息的集中。许多远程节点上的产品目录数据复制到总部节点,这
里总部节点只需要有数据只读的权限
一个主节点拥有一个表的完全所有权,而其他节点只能订阅这个表的只读拷贝。
也可以是多个主节点拥有同一个表的截然不同子集或者划分,而另一些节点则
订阅这些子集或者划分的只读拷贝。如,一个分布的产品目录系统可以让不同
的 销 售 办 事 处 拥 有 一 个 表 的 属 于 自 己 的 一 个 " 水 平 " 部 分 , 如 在 客 户
(CUSTOMERS)表, 订单(ORDERS)表和目录(ITEMS)这些表中含有每
个销售办事处为之服务的客户和产品信息。中心总部节点可以通过订阅每个办
事处拥有的数据来保持一个完整的所有产品和客户信息的只读拷贝。
2. 动态所有权
动态所有权,异步更新将复制数据从一个节点移到另一个节点,而在该过程中,
必须保证在同一时刻只有一个特定的节点可以对数据进行更新。一个典型实际
应用就是"海关订单处理系统",订单处理的典型步骤是,报关→同意→装运→
开单→收单→入帐等。应用模型可以执行其中的任何步骤,但必须保证各个不
同模块的同一个数据应该在一个综合数据库中。在该系统中,当且仅当订单的
状态表明前一个步骤已经完成时,下一个应用模块才可以执行更新订单数据的
操作。例如,"装运"应用模块仅能在"报关"并且得到"同意"后才能被执行。
(Delphi 中的 DEMO 程序中提供了一个简化版本演示程序)
通过使用动态所有权复制模型,可以将一个系统分布在多个节点和数据库上,
也就是说应用模型可以建立在不同的系统上。我们还是来看上面的例子,"报
关"和"批准"这两部分可以运行在一个系统上,"装运"在另一个系统上,"开
单"和"收单"等又可在一个系统上。在这个分布式系统中,数据可以被复制到不
同的节点上,这些节点对复制的数据只要具有只读的权限即可。如,利用复
制,"报关"节点可以监视已经报关的订单处理过程。
前面讨论的主节点所有权和动态所有权复制模型具有一个共同的特征:在任何
一个给定的时间点,只允许一个节点有更新数据的权利,而其余节点对于复制
的数据拷贝仅有只读权限。然而,还存在这样的情况,允许多个节点可以更新
同一个数据,在极端情况下可以是在同一时刻,这就是所说的共享所有权。
3. 共享所有权
共享所有权使用异步复制,这对于主节点和动态所有权模型来讲存在一些限制。
在共享所有权情况下,整个系统可以存在暂时的不一致,同时必须使用冲突检
测和消除。共享所有权模型相对于前面两种模型具有一些新的特点。
例如,对于前面我们讨论的那个采用具有水平划分主节点复制方案来的分布
式"订单处理系统"的例子。采用共享所有权模型,每个销售办事处都有库表中
不同的水平划分,该库表含有每一个办事处为之服务的一些订单信息和与消费
者有关的顾客信息。每一个销售办事处只输入与自己有关的顾客订单情况,而
不管其余顾客信息。
然而,在实际商业应用中,这个模型不是最佳的选择。例如,这种情况,一个
零售集团在一个大城市中可以有好几个商场。顾客可能经常去离他们住的最近
的那个商场,但是偶尔也可能到其他商场去购物。这时,如果多家商场执行更
新同一个顾客和其订单数据的信息,更新冲突就会发生。所以在这种情况下必
须要采用冲突检测和消除方案。
Oracle 高级复制支持同时既考虑冲突避免又考虑冲突检测和消除的复制模型 。
Oracle 高级复制之所以又称为对称复制,其原因之一就是支持对称复制模型,