如何处理远程数据库同步的问题(300分)

  • 主题发起人 主题发起人 jeansonliu
  • 开始时间 开始时间
J

jeansonliu

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,我现在碰到的问题是这样的:我现在有一个C/S的进销存软件,但是这个软件的客户提出了一个需求,他在北京有好几个分店,每个分店都需要使用软件,也都有自己的库存。但是又需要即时的看到别的分店的库存和业务情况。我的初步思路是:每个分店分别使用自己的数据库,再建立一个服务端,这个服务端上也为每个分店建立相应的数据库。当分店的用户进行数据库操作的时候,把所有对数据有修改的语句也同步的在服务端的与这个分店对应的数据库上面执行一遍。在分店的客户端写一个进程,不停的检查是否有需要同步的数据修改语句。但是分店如何找到服务端我不太清楚该怎么处理,花生壳可以解决这个问题吗?我对花生壳不了解。大家有熟悉的可以指点我一下吗?最好说的详细写,赫赫。或者有更好的解决方案。不胜感激啊!
 
1. 建议数据库结构服务端与客户端一样,只是数据存储时客户端更关心网络不通时,本地数据的存储,起缓站作用,实现比较简单。
2. 在Internet上跑C/S程序是可行的,如果是ADSL就行,宽带更没问题,但这样会为每个点增加一笔不小的长期开支。建议再了解需求,比如及时数据一个、两个小时才显示,是否所有数据都需要及时等,这样可以考虑拔号发数据包,成本极低。当然,如果想直接连,用花生壳也是可以的,不过,一般建VPN,这样更安全可靠,windows自带VPN功能,ADSL、宽带上建VPN,使用起来与是否在Internet上没多大区别。
3. 再懒一点可以,使用数据库本身提供的复制功能。复制功能有发布和订阅两种方式,也就是说不需要你写什么更新sql语句,这些数据库早帮你做好了,当然,你为了可靠可以增加一些。
 
WilliamGui:
只要分店可以上网,那么分店的所有进销存数据都要求能够及时在服务端看到,因为其他分店也要需要及时了解别的分店的库存信息,所以数据需要及时体现在服务端上面。
 
如果我是用户,且POS单很多很频繁时,我选择Win32程序,反之,选择Web程序。
1. 选择Web程序,当然只用一个中心数据库,网络断开时,可以手工先记账
2. 选择Win32程序,本地一个数据库起缓存作用,防止断线,服务器端为中心数据库,采用集中发布的方式发布其它点的数据
 
将C/S结构的进销存软件发布到网络上,采用花生壳是个很好的选择.但是如果业务一刻都不能停的话,采用花生壳就会有麻烦,因为花生壳完全是建立在Intenet上的,网络一出现故障,业务即停止。
 
分店间的交互只是查询 那么你可以不必要服务端上也为每个分店建立相应的数据库。并同步这个数据库和下面分店的数据库的内容 只需要这个服务器能连接到各个分店的数据库上实时查询就可以了
也就是说你可以做一个查询的服务 这个服务远程连接各个分店的数据库。
如果你担心实时查询的性能或断网等情况 可以由这个服务定时取回结果缓存在服务器上 每次查询都是上一次定时获取回来的查询结果。
如果你的断网情况是经常性的 那么这个方案一定优于同步同构数据库的方案 因为业务发生的频率应该大于远程查询的频率。也就是说从分店到总店同步比从总店查询分店遇到断网的几率更大
如欲讨论可
msn:ball_cao@hotmail.com
 
通常可以用
1.POS系统,服务器和终端各用各的数据库,用DTS/XML/BatchMove之类技术实现数据库同步
2.远程登录,用花生壳/金万维之类软件实现域名解析
3.其它专门的远程登录软件,如C2BS等软件虚拟客户端,速度还可以
 
为各个分店做个编号,做个转发程序(不是本店的请求就转发出去到相应的分店去查), 不用另外建中心数据库了,就像以前的证券公司的通买通卖一下的)
 
多人接受答案了。
 
BatchMove技术实现数据库同步
 
后退
顶部