Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1117411
  • 博文数量: 141
  • 博客积分: 3161
  • 博客等级: 中校
  • 技术积分: 3011
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-27 14:53
文章存档

2012年(28)

2011年(113)

分类: 数据库开发技术

2012-09-25 08:19:57

在上一篇文章中,介绍了SODA的相关的内容,我们本篇接着没有完成的话题继续。


Peer-to-Peer Transactional Replication



翻译为中文就是“点到点的事务复制”,简称P2PP2P的技术在SQL Server 2005以及以后的版本中可以使用。在SQL Server2000中没有P2P的技术,但是有一个类似的称之为“双向事务复制”的技术。



P2P可以使得应用程序去读取或者修改任何一个处于复制的节点中的数据。同时P2P也可以使得数据的操作在不同的节点之间负载均衡。这个技术非常适合在那些需要高可用,高性能的应用中使用。


P2P主要采用SQL Server中的Replication(复制)来实现的。在Replication中,发布数据的一方成为“发布者”,而接受发布数据的一方成为“订阅者”。在一个标准的事务Replication中,订阅者都是只读的,而发布者的数据是可以修改的。或者说的更加通俗一点就是:一个(火或者多个)数据库用来写,其他的数据库只读,只写数据库中的变化通过Replication技术,同步到订阅者。


注:SQL Server Replication内容很多,大家自学!


这里注意:Replication技术不等于P2P,因为P2P是一种使用Replication的架构设计。不是一个具体的技术。就好比,ajax不是jquery一样,jquery只是实现和包含了ajax的功能而已。


P2P中,每一个节点可以同时是发布者,也可以是订阅者(注意:可以同时是,也可以只是一种)。它们之间存在一个双向的事务复制(transaction replication)。也就是说,只要P2P中的一个数据库方式变化,那么这个变化就会同步到其他的数据库,其他的数据库变化之后,也是同样的操作。一个简单的图示如下:


上面图中反应的就是所有的数据库同时是发布者也是订阅者的情况。当然,P2P实现的方式有很多,结构也是各不一样,上面只是P2P实现的一种方式而已,千万不要认为P2P就是等于上面这个图中的实现。


为了更好的说明,还是看看下面的图。


在图中,左边的系统使用P2P,包含了两个节点,而且两个节点都是可以进行数据的增删查改的,所以每次只要有一个数据库节点中的数据变化,就会同步到对方。而应用程序在读取数据的时候,不用知道读取那个数据节点,因为两个节点中的数据是一样,但是可能存在数据不实时的问题,之主要看同步的频率等,这个话题就深了,这里不谈。


在右边的系统中,只有B数据库节点是可以进行数据的更新等操作的,而A只读。每次B 的变化,都会同步到A


所以,从这里可以看出,P2P的实现可以采用很多的方式,千万不要思维定势。P2P同步的时候,需要考虑的问题很多,例如同步数据的频率,数据的大小,还有一个就是节点之间的网络。


好了,P2P就谈到这里,只是介绍了一下。如果大家的企业需要,我们可以提供更加全面而实际的分析和案例讲解。


下一篇:可扩展的共享数据存储设计

阅读(4735) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~