先介绍一下需求:
客户是一个集团客户,下属几十家子公司,且子公司下面还有二级子公司,各自独立核算.业务大同小异. 客户的要求是:建一个供所有子公司通用的业务系统. 集团公司能够监管各子公司数据并且能对所有数据进行综合分析统计,且集团和子公司之间 ,子公司和子公司之间有业务联系.也就是能部分数据共享.但不能做成一个集中数据库,各子公司通过B/S系统访问的模式,必须要做成分布式 数据,也就是各分公司有自己独立的数据库。以保证网络不能通信的时候,子公司的业务不受影响。但是又必须要保证子公司之间部分数据共享,且 所有子公司数据必须要采集到集团总部。 我设计了三个方案: 方案1:采用分布式数据库设计,也就是由DBMS自动管理的数据订阅、分发技术实现数据库的数据同步,以达到数据共享的目的。但是这种设计要求 必须要有专网通信。但是我们客户的个子公司距离很远不可能实现专网通信。 方案2:使用中间件,也就是开发一个专门的数据交换工具。各分公司部署一套独立的相同的数据库,总部集团部署一个数据库,然后各分公司数据 实时上传到集团总部数据库(总部集团一个数据库存储所有子公司的数据),然后再把数据分发到各子公司(数据增量同步),这样就可以 实现数据共享。所有数据均集中到总部后统一分发。但是有一个问题是各分公司数据量很大,且分公司数量有几十个,这样总部数据库数据 量将异常庞大。且在总部服务器上频繁读写,估计总部服务器将难以承受,效率会很低。且数据分发还存在很大技术问题。 方案3:各分公司部署一套独立的相同的数据库,总部集团针对每一个分公司建一个相同得数据库帐套。各子公司实时的把自己的业务数据交换到集 团服务器上自己对应的帐套内,这样集团可以通过选择不同的帐套来进入各分公司数据库进行监管.然后再建一个数据仓库,从各分公司帐 套中采集数据,然后在数据仓库上开发一套B/S的BI系统,对数据进行综合分析统计.这样子公司也可以通过BI统计分析二级子公司的数 据.同时通过BI系统实现数据共享(也就是各子公司可以通过BI平台进行业务),这样解决了效率的问题,同时避开了数据下发的问题是还 是有点问题,就是在集团总部要建很做帐套,也就是很多个数据库(每个子公司一个数据库),如果增加一个子公司就要新建一个数据库. 这样集团服务器压力还是很大. 目前偏向于第三种方案,但是心里还是没底.毕竟这么复杂的架构还是第一次做.不知道会有什么问题没有,请各位大虾帮忙分析一下! 小弟在此谢过了,也希望为有同样困惑的同仁提供一点参考!
客户是一个集团客户,下属几十家子公司,且子公司下面还有二级子公司,各自独立核算.业务大同小异. 客户的要求是:建一个供所有子公司通用的业务系统. 集团公司能够监管各子公司数据并且能对所有数据进行综合分析统计,且集团和子公司之间 ,子公司和子公司之间有业务联系.也就是能部分数据共享.但不能做成一个集中数据库,各子公司通过B/S系统访问的模式,必须要做成分布式 数据,也就是各分公司有自己独立的数据库。以保证网络不能通信的时候,子公司的业务不受影响。但是又必须要保证子公司之间部分数据共享,且 所有子公司数据必须要采集到集团总部。 我设计了三个方案: 方案1:采用分布式数据库设计,也就是由DBMS自动管理的数据订阅、分发技术实现数据库的数据同步,以达到数据共享的目的。但是这种设计要求 必须要有专网通信。但是我们客户的个子公司距离很远不可能实现专网通信。 方案2:使用中间件,也就是开发一个专门的数据交换工具。各分公司部署一套独立的相同的数据库,总部集团部署一个数据库,然后各分公司数据 实时上传到集团总部数据库(总部集团一个数据库存储所有子公司的数据),然后再把数据分发到各子公司(数据增量同步),这样就可以 实现数据共享。所有数据均集中到总部后统一分发。但是有一个问题是各分公司数据量很大,且分公司数量有几十个,这样总部数据库数据 量将异常庞大。且在总部服务器上频繁读写,估计总部服务器将难以承受,效率会很低。且数据分发还存在很大技术问题。 方案3:各分公司部署一套独立的相同的数据库,总部集团针对每一个分公司建一个相同得数据库帐套。各子公司实时的把自己的业务数据交换到集 团服务器上自己对应的帐套内,这样集团可以通过选择不同的帐套来进入各分公司数据库进行监管.然后再建一个数据仓库,从各分公司帐 套中采集数据,然后在数据仓库上开发一套B/S的BI系统,对数据进行综合分析统计.这样子公司也可以通过BI统计分析二级子公司的数 据.同时通过BI系统实现数据共享(也就是各子公司可以通过BI平台进行业务),这样解决了效率的问题,同时避开了数据下发的问题是还 是有点问题,就是在集团总部要建很做帐套,也就是很多个数据库(每个子公司一个数据库),如果增加一个子公司就要新建一个数据库. 这样集团服务器压力还是很大. 目前偏向于第三种方案,但是心里还是没底.毕竟这么复杂的架构还是第一次做.不知道会有什么问题没有,请各位大虾帮忙分析一下! 小弟在此谢过了,也希望为有同样困惑的同仁提供一点参考!
解决方案 »
- T-SQL中varchar(10)代表什么意思?
- 请教如何在SQL SERVER里面存储List<double>型的数据
- 中文怎么查不出来?
- 用alter table 更改现有表中字段特性的问题
- 关于存储过程中的ntext
- 请问:如何从SQL 2008数据库中“一键(F5)”分别导出多个Excel表?
- 在线等待
- 为了实现两台sqlserver中的数据同步,使用强制方式可以,但请求方式不行,请问怎么回事,望高手指点
- 如何将局域网中的所有的活动的SQLServer服务器搜索出来.
- 如何查看本机上所有提供可用的"provider"?
- SQL2000触发器调用外部exe程序,并传递参数给exe程序?
- 怎样实现组态王对数据库的修改?
这样构架是最灵活的,对网络的要求也不苛刻
对于网络,各子公司可走VPN通信,若不行,以FTP OR HTTP传输数据亦可
这样的话,似乎就可以使用job一类的东西,等一天的业务结束后,传到总公司,然后总公司下发到分公司。
这种方案会有一定的时差。
个人感觉另外一个办法是webservice,各个分公司的数据,以及公司的数据使用webservice封装起来,然后总公司需要的时候,调用这些取得各个分公司的数据,各个分公司也可以使用调用这些webservice取得其他公司的数据。
不过这样的话,代码工作量似乎变得多了。。
仅供参考,楼主自己取舍吧