标签:
分布式开发之发布与订阅
发布订阅:数据实时备份同步
软件环境:sql server2008 r2
硬件环境:视数据量和对应机器分配的任务而定
机器数量:视分割线标准而定(即数据分别存放的分割线)
作 用 :
意 义:咱们可以用于两台服务器,其中一台机器用作增删改,另外一台机器用作查询,为了防止读写分离(即发布订阅)的信息有分差,可以做出选择,即当前日期一周(时间视发布与订阅的日期而定,因为订阅是可自动设置时间的,如连续订阅或者在某一时间段订阅)以内的数据查询在发布的机器上运行,当前日期一周之前的数据在订阅机器上运行。
扩 展:
其 他:数据库分布式开发还有分库分表(Sharding),Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。对于海量数据的数据库,可以使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。
总 结:发布订阅相比Sharding,发布订阅是以牺牲物理存储空间来换取查询的执行速度,而且相比较而言,对于发布订阅可能维护的难度会更大。比如各个分机DB中的Metadata是重复的,若其中某一个表(IssueType)的某条数据的Name发生了改变,我们需要写脚本对所有的分机DB的name执行update(这里不对分机DB使用发布订阅来保证分机DB的metadata的统一,是因为如果分机DB过多没有办法保证它们的实时性。)。Sharding是根据某些表之间的关联进行分表分库,对于Metadata不会出现重复,各个库之间都是独立的数据,只是在查询的时候可能会join到多个数据库或者多个server,从而大大的降低了查询的效率。
|
发布与订阅 |
分库分表(Sharding) |
原理 |
牺牲物理存储空间来换取查询的执行速度 |
把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题 |
Metadata |
重复 |
不重复 |
维护难度 |
大 |
小 |
查询效率 |
高 |
低 |
Server之间的联系 |
小(各个机器上的数据是分开独立的) |
大 |
需要更改proc |
No |
Yes |
查询是否需要多台机器join |
|
|
标签:
原文地址:http://www.cnblogs.com/toutou/p/Ttou.html