首页 新闻 搜索 专区 学院

三方数据如何同步

0
悬赏园豆:10 [已解决问题] 解决于 2013-12-09 17:15

现在有这样一个需求,三家的数据要同时写入到这个中间库里,然后每一家根据自己的需要,取得其他两家的数据。大概思路是什么样的?用什么技术比较好?

sam.c的主页 sam.c | 初学一级 | 园豆:148
提问于:2013-12-09 16:06
< >
分享
最佳答案
0

能否把你的需求场景描述下。

收获园豆:7
Launcher | 高人七级 |园豆:45045 | 2013-12-09 16:14

这三家分别是巡查大队,市政,公联,每一家都有自己的办公平台,现在要数据共享,自己在报数据的同时,要将这条数据写入到 另外一个数据库中,供另外两家同步。

sam.c | 园豆:148 (初学一级) | 2013-12-09 16:34

@小欢乐: 从这个描述中,我们可以把“同时写入”这个约束条件去掉,简化为两个用例:

1、三个子系统A、B和C向数据库 D 中写入数据;

2、三个子系统A、B和C从数据库 D 中查询数据;

这么看来,用例1、和用例2实现起来都比较简单,使用TCP、HTTP,Asp.Net Web Service,WCF,还是 ASHX 等都只是简单的技术选型,也不复杂。

然而问题的重点是,有没有“需求约束”:

1、三个子系统A、B和C向数据库 D 中写入数据时是否有前置条件?

2、三个子系统A、B和C从数据库 D 中查询数据时是否有前置条件?

Launcher | 园豆:45045 (高人七级) | 2013-12-09 16:50

@Launcher: 写入时,要根据主键编号判断是否已经写入,来决定执行insert还是update,查询时也一样

sam.c | 园豆:148 (初学一级) | 2013-12-09 16:58

@小欢乐: 这么看来写入时的约束比较弱,没有需要特别注意的地方。查询时通过主、外键或者关键字的约束也可以筛选出需要的记录。

Launcher | 园豆:45045 (高人七级) | 2013-12-09 17:20

@Launcher: 恩,谢谢大侠。还有个问题,就是中间库的一张主业务表 有个字段dataState,表示数据状态,0-新增数据,1-数据同步成功,读取数据方删除。这样妥当吗?

sam.c | 园豆:148 (初学一级) | 2013-12-09 17:26

@小欢乐: 

0-新增数据,我理解为第一次插入时的状态;

1-数据同步成功,我理解为 B 系统查询了此条记录,并反馈信息查询成功,是吗?

Launcher | 园豆:45045 (高人七级) | 2013-12-09 17:31

@Launcher: 对

sam.c | 园豆:148 (初学一级) | 2013-12-09 17:35

@小欢乐: 你看看有没有这样的场景:B 启动了两个线程同步数据;或者 A 和 B 都需要查询同一条记录。

Launcher | 园豆:45045 (高人七级) | 2013-12-09 17:40

@Launcher: 现在的场景是,A只查询B、C的数据,B只查询C的数据,C只查询B的数据

sam.c | 园豆:148 (初学一级) | 2013-12-09 17:47

@小欢乐: 那就没有问题。

Launcher | 园豆:45045 (高人七级) | 2013-12-09 17:48

@Launcher: 恩,非常感谢

sam.c | 园豆:148 (初学一级) | 2013-12-09 17:51
其他回答(1)
0

用一个数据层就好了,三方无论写入还是请求都与这个数据层进行

收获园豆:3
James.Ying | 园豆:1472 (小虾三级) | 2013-12-09 16:22

webservice能搞定吗

支持(0) 反对(0) sam.c | 园豆:148 (初学一级) | 2013-12-09 16:35

@小欢乐: 可以,要注意接口的统一,插入数据的时候控制好并发

支持(0) 反对(0) James.Ying | 园豆:1472 (小虾三级) | 2013-12-09 16:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册