small 领导 一个 应用 sna 中产 ron prot
阅读目录
最近公司作为众多外部厂商之一,需要依托一个大型平台系统 (这里简称为 Big-S) 给特定用户提供一些服务。
作为外部厂商开发的 web 应用(这里简称 Small-S),需要提取 Big-S 中的基础数据,包括用户、组织结构、代码表...... 部分字段到本地数据表中。
融合 Small-S 自己特点,作为搭建 Small-S Web 项目的先决条件。
Small-S 需要做到和 Big-S 的重点基础数据实时一致, 重点关注 Big-S 数据交互方面的以下特性:
1. Big-S 提供给外部厂商交互方式大体有三种形式(EJB,WebService,JMS),数据表接近 4000 +。
2. Big-S 提供给外部厂商 Oracle 数据库 DB_Select , 当然 DB_Select 只含有 Select 权限。
至于其中 DB_Select 实时同步 Big-S 哪些数据库、需要怎样负载部署..... 这些都不是该关心的事情。
内部进行了几轮 PK,最终确定了比较不错的解决方案,本篇将循序渐进陈述几种提出的方法,给其他同行做参考为主,记录总结为辅。
可能有人会感到疑惑,直接将需要的基础数据一次性抽取过来不行么?
Big-S 中实时也在操作这些数据,抽取过来的数据肯定会和 Big-S 中产生误差,已这样的数据作为基础的 web 项目,等着被领导请去喝茶吧。
回到顶部
使用 BIg-S 提供的外部服务,获取数据过程为实时处理,而且处理速度也相当不错。
获取数据时,你需要一些前置条件组织请求,才能准确的获取到你需要的数据,比如你需要一个用户信息, 前置条件可能是用户 ID,组织机构 ID......
回到顶部
使用 Big-S 提供的服务实时获取数据,被众人驳的体无完肤之后。
紧接着有人将目光放在了 Big-S 对外提供的数据库 DB_Select 上面。
具体想法为同时链接 Small-S 和 Big-S DB_Select , 公用同一个数据库资源池。
- <bean id="small-s" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
- <property name="driverClass" value="${smalls.driverClassName}" />
- <property name="jdbcUrl" value="${smalls.url}" />
- <property name="user" value="${smalls.username}" />
- <property name="password" value="${smalls.password}" />
- ........
- </bean>
- <bean id="big-s" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
- <property name="driverClass" value="${bigs.driverClassName}" />
- <property name="jdbcUrl" value="${bigs.url}" />
- <property name="user" value="${bigs.username}" />
- <property name="password" value="${bigs.password}" />
- ......
- </bean>
回到顶部
这个思路提出是一位经验老道的数据库 DBA ,在 Small-S 上建立 DB_LINK 到 Big-S 上,然后在 Small-S 上面建立需要表的同义词。
与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义,查询 Big-S 表时都是实时数据。
建立数据库链接和同义词过程:
- -- create database link
- create public database link big-s_link
- connect to '用户' identified by '密码'
- using '(description =
- (address_list
- (address = (protocol = tcp)(host = 'ip')(port = '端口'))
- )
- (connect_data =
- (sid = '实例名')
- (server = dedicated)
- )
- )';
- -- create database synonym
- create or replace synonym s_a for[email protected]_link;
至此依附 Big-S 数据实时获取解决方法应该来说有了比较不错的落地,至于使用后是什么情况,需要项目上线运行一段时间才能知道。
依附大系统 【数据实时获取】解决方案
来源: http://www.bubuko.com/infodetail-2011902.html