SAPsender中间件2016版

本文介绍了GOS系统中间件实现Oracle数据库与SQL Server之间的数据同步过程,包括使用EF6缓存提高性能,全数据更新策略确保数据一致性,以及通过并行计算提升效率。

近日,完成了一个集团GOS系统中间件取数需求:
1、读取ORACLE数据库表数据放入SQLserver中.
2、读取ERP-SAP RFC的数据放入SQLserver中.

这里写图片描述

在需求1中,我们实现了EF6 on oracle ,为以后的联通使用oracle提供了可能。
在程序部署方面,需要注意的是:
1、部署环境需要安装ODTwithODAC1120320_32bit
2、部署环境需要准备 D:\ODT\app\client\james\product\12.1.0\client_1\Network\Admin目录中,有sqlnet.ora和tnsnames.ora文件。

sqlnet.ora文件:

# sqlnet.ora Network Configuration File: D:\app\james\product\11.2.0\client_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsnames.ora文件:

JCDMS =   
(DESCRIPTION =      
  (ADDRESS_LIST =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.23.1.0 )(PORT = 1521))      

  )  
  (CONNECT_DATA =  
    (SERVICE_NAME = JCDMS )  
  )
)

在需求2中,使用的关键技术有
1、EF6缓存
使用EF6缓存,可以避免LINQ每次都去读取数据库,带来万倍的性能提升,
这个caching组件来源于VS2010的Nuget,要专门下载。

using EntityFramework.Caching;

使用很简单,只要在LINQ读数据时,加入自带的方法就行,还可以设置缓存时间。

var q1 = from c in db_gos.TI_WCAUTO_PRODSTOCK_M.FromCache(CachePolicy.WithDurationExpiration(TimeSpan.FromSeconds(10))) select c;

2、全数据更新策略
经过几次中间件传输的开发,这么可以明确一种全数据传输策略:
第一步,源数据库读取数据放SAPsend内存中
第二步,目的数据库读取数据放SAPsend内存中
第三步,以主键字段作为识别条件,比对原数据库和目的数据库的每一条记录,
如果源数据在目的数据库中有,对主键以外的字段,执行数据库修改操作。
如果源数据在目的数据库中没有,对主键以外的字段,执行数据库插入操作。

可以看到,对数据表中主键的定义也是很重要的。

3、并行多核计算
99%的程序都只用到单核,终于这里有一个使用了多核。在上面第三步,原数据和目的数据的比对,是一个大量计算的过程。intel x64 CPU大力发展的今天,一个最差的服务器至少也有10线程以上,如果在复杂的计算中能够用尽CPU的资源,才能使SAPsend从容应对大数据,全数据更新。MS为我们提供的并行计算粉墨登场,因为使用的多核并行计算,在我的破笔记本i3 3110M 4核上,做10000条数据中比对10000次的操作,只需要几十秒钟完成!

试试片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值