需求大致是这样的:现在有一台 A服务器 和 ERP服务器,系统中存在一套算法,在某个模块被运行的时候(ASP.NET)会根据A服务器和ERP服务器的数据跑一遍这个算法,得到我们想要的数据。(MSSQL 2008)
但是这样有个问题,因为数据的不断积累,运算会变得越来越慢,而且每次运行相关模块都会需要跑一整套算法,效率很低。
现在想要对这个模块进行整改。
要求是
尽量小的修改现有业务逻辑的代码,因为代码量很大,数据也很多。曾经做过期初,但效果不明显;
数据必须是实时的,前后差不能超过10秒;
尽量高的性能和可靠性;
数据系核心业务数据,可靠性高于性能。
环境:
方案(ASP.NET)环境是.NET FRAMEWORK 2.0
数据库是MSSQL 2008
我初步的想法是在A服务器的库和ERP服务器的库,那些与业务相关的表有增删改查操作时,用C#写监控配合MSSQL触发器,将增删改查的详细操作和运行算法的最后结果写到另外两个表中,用户看到的最终数据以这两个表为准。
这样问题就变成:A ERP B三个服务器 Aa ERPa Ba三个数据库的跨服务器跨库的数据同步(其实不能算同步,算是数据运算的后的结果和详细记录。)
我现在没有什么思路,其实就是想的用winform或者wpf写一个多线程监控,timer,在mssql中写触发器,方案中写service,配合实现。但是这样很麻烦,工作量很大,而且用timer的性能损耗也不会低。
A服务器a表 同步到B服务器a表,运算到B服务器b表。
这样唯一的好处就是数据实时性凑合,不需要对现有代码做大的改动。
不知道大家有什么好的实现方法?给个思路也行!!!
但是这样随着数据量的累积,还是会越来越慢的。
这个怎么解决?我想的是,随着业务产生的时候,就开始记录、计算。
所以想用触发器和多线程监控。
看你的算法里是不是用到了日积月累的这些数据,否则数据增量不会影响算法的性能。
追问肯定用到了,所以我才想着每次增加/修改/删除数据的时候都会把详细信息和结果计算到另一个表。
本回答被提问者和网友采纳