我们有一个应用程序(规则引擎),它在内存中有很多表来执行某些业务规则.此引擎还用于在需要时写回数据库.
数据库结构是非规范化的,我们有5个事务表,有时也需要查询报告.
这里的问题是,我们想要在应用程序内部缓存数据,因此它会在App启动时加载,然后只有在数据库更改时才会更改.
有什么建议?
我们倾向于创建一个数据库服务,它将处理所有插入,更新和删除,并将它们排队以减少数据库服务器上的负载(事务表也有大量索引).此外,我们正在考虑启用数据库服务,并为所有需要直接数据库访问的报表/其他应用程序提供服务.
这里的目的是减少每个请求的Select查询的DB命中数,并确定事务的优先级.另外,为了确保人们访问应用程序,请不要关闭数据库服务器.
Rules Engine是一个C#桌面应用程序,报告和其他应用程序是基于Web的.
最好的方法是什么?我还想到从事务表中删除所有索引,并将触发器插入到新表中,该表是一个副本,但是为报表检索编制索引.
最佳答案 您应该查看分布式缓存解决方案(从性能和可伸缩性的角度来看).简而言之,我正在采用由分布式缓存支持的可伸缩数据库服务(以便多个数据库服务由相同的缓存提供服务).
这是讨论分布式缓存的article,包括各种数据库同步方法.这里是blog帖子,列出了.NET中用于分布式缓存的几个选项.