现在有这样一个需求,三家的数据要同时写入到这个中间库里,然后每一家根据自己的需要,取得其他两家的数据。大概思路是什么样的?用什么技术比较好?
能否把你的需求场景描述下。
这三家分别是巡查大队,市政,公联,每一家都有自己的办公平台,现在要数据共享,自己在报数据的同时,要将这条数据写入到 另外一个数据库中,供另外两家同步。
@小欢乐: 从这个描述中,我们可以把“同时写入”这个约束条件去掉,简化为两个用例:
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: 写入时,要根据主键编号判断是否已经写入,来决定执行insert还是update,查询时也一样
@小欢乐: 这么看来写入时的约束比较弱,没有需要特别注意的地方。查询时通过主、外键或者关键字的约束也可以筛选出需要的记录。
@Launcher: 恩,谢谢大侠。还有个问题,就是中间库的一张主业务表 有个字段dataState,表示数据状态,0-新增数据,1-数据同步成功,读取数据方删除。这样妥当吗?
@小欢乐:
0-新增数据,我理解为第一次插入时的状态;
1-数据同步成功,我理解为 B 系统查询了此条记录,并反馈信息查询成功,是吗?
@Launcher: 对
@小欢乐: 你看看有没有这样的场景:B 启动了两个线程同步数据;或者 A 和 B 都需要查询同一条记录。
@Launcher: 现在的场景是,A只查询B、C的数据,B只查询C的数据,C只查询B的数据
@小欢乐: 那就没有问题。
@Launcher: 恩,非常感谢
用一个数据层就好了,三方无论写入还是请求都与这个数据层进行
webservice能搞定吗
@小欢乐: 可以,要注意接口的统一,插入数据的时候控制好并发