总部+30分支 数据交换的问题(170分)

  • 主题发起人 主题发起人 kulu
  • 开始时间 开始时间
K

kulu

Unregistered / Unconfirmed
GUEST, unregistred user!
开发工具:delphi5+oracle8i,可选工具jb
问题:大约30个分支机构+一个总部,
分支拥有自己的数据,总部保存所有分支机构的数据,
某些表必须在分支和总部之间实时同步,某些表可以
隔一段时间再同步。
我设想的几种方案:
1.总部直接访问分支数据库
2.数据库复制
3.使用数据管道传送
4.程序通过tcp/ip直接访问总部数据库,每次业务操作
时同时更新总部数据库
5.三层结构更新总部数据库。
6.xml格式数据交换

使用什么方法最合适?有人做过类似的项目吗?
 
一点看法,不一定对
1.对要求时时更新的部分
  在分部采用分布式两阶段提交
  同时更新总部数据库
2.对要求一定时间间隔更新的部分
  在总部数据库上建立下级数据库
  的快照

 
相同的数据在2台服务器,可能在某些情况下不能同步(比如网络问题),引起数据
不一致。

如果用3层,则数据库只有一个,不会出现不一致,可是对分支来说,
速度比较慢,而且断线就做不了啦

 
我做过的是SQL SERVER7的,采用的是数据库复制(出版,分发,订购),它可以保证多台数据库
的同步。
对于你的问题,无外乎三种情况:
1。只将总部的数据送往分支机构,采用总部为出版者,推到分支机构的单项复制
2。只将分支机构的数据送往总部,采用各个分支机构为出版者,总部为中心订阅者的方式,
将分支机构的数据推到总部的单项复制(应该分时间片)
3。双方的数据都要送往对方,采用合并复制(应注意数据冲突)
 
我个人倒是更加赞同使用多层结构。特别是基于互联网的多层。
我有一个想法:
彼此采用internet互连,总部始终在线。分支连线后,通过
调用应用服务器的一个服务(各种类型可选)更新数据,同时
本身的程序也可以响应其他机器的服务请求。从而形成一个真正意义
上的虚拟网。
 
分时同步,用程序实现数据互传。关键是要控制好数据完整性问题。
 
既然使用的是oracle,何不使用snapshot,它的刷新间隔四可以设置的,
如果要实时,可以使用trigger和database link 实现
 
后退
顶部