要实现的功能:
程序从源数据库里读出相应的数据,然后执行两个动作:
一是实时的将数据格式转换并且要上传到远程异构目的数据库,时间间隔可配置;
二是实时的读写一个设备信息交换文档,时间间隔可配置,读写内容主要为一些设备参数,此文档为txt格式,供给其他设备程序调用查询设备相关信息。
项目主要需求:
开发语言:C#;
主要数据库:源数据和目的数据库皆为MSSQL Server;
目的数据、文本文档需遵照现有标准定义文档转换和生成;
要求程序高效、稳定,做好后编译为DLL供系统和其他人调用;
目前的方案:
类的划分与设计:
定义发布操作类、数据提供类、文本数据处理类、关系数据处理类四个主要抽象类;
发布操作类(doAll)实现线程生成和主要业务的发布及操作,在供主程序调用的时候,通过传递消息实现以上两个功能;
数据提供类(dataProvider)包括存储过程调用和数据返回通用功能,配置文件读取功能及中间交换XML文档的生成;
文本数据处理类(txtData)提供文本数据生成功能;
关系数据处理类(relationData)提供关系数据转换和上传功能;
程序执行流程:
1、从发布操作类入口,生成两个线程,一个线程主要调用数据提供类(dataProvider)里探测数据库是否连接及执行源数据库里的存储过程以获取源操作数据,令一个线程调用3和4的操作;
2、考虑到项目需要和未来程序的可扩展及灵活性,在1中获取到的数据将其按照文本数据和关系数据的相应标准生成对应的XMl文档。
3、文本数据处理类(txtData)读取2提供的xml文档和配置文件中的时间间隔,实时生成交换文档。
4、关系数据处理类(relationData)读取2提供的xml文档和配置文件中目的数据库地址,然后调用数据提供类(dataProvider)提供的存储过程访问函数将数据插入到目的数据库。
大家觉得这样可行嘛?
还有什么比较好的思路?
大致的思想就是调用中间使用xml文档作为中介交换数据,主要的疑惑就是如果用xml文档做中介的话要会不会降低效率?因为程序的运行时要处理的数据都对实时性要求比较高,而且数据量很大。
谢谢诸位先,本人经验很少,写的有点多,有点啰嗦,大家将就看下吧,请诸位多多指正。
SQL Server 2000?还是2005
2000用DTS同步数据,2005用SSIS ,不用搞那么麻烦吧
不要使用xml文档作为中介交换数据,会性能下降的。
数据量很大时,有问题。
一般建议使用MSMQ。
以上都是实践证明的,希望可以提示到你。