Fai*_*l M 5 .net c# linq msmq linq-to-sql
我们有一个应用程序(规则引擎),它在内存中有很多表来执行某些业务规则。该引擎还用于在需要时写回数据库。
DB 结构是非规范化的,我们有 5 个事务表,有时也需要查询这些表以进行报告。
这里的问题是,我们想要缓存应用程序内部的数据,所以它会在应用程序启动时加载,然后只有在数据库发生变化时才会发生变化。
有什么建议吗?
我们倾向于创建一个数据库服务,它将处理所有插入、更新和删除,并将它们排队以减少数据库服务器上的负载(事务表也有索引负载)。此外,我们正在考虑让 DB 服务位于顶部并为所有需要直接访问 DB 的报告/其他应用程序提供服务。
这里的目标当然是减少每个请求的 Select 查询的 DB 命中率,并确定事务的优先级。还要确保访问应用程序的人不会关闭数据库服务器。
规则引擎是一个 C# 桌面应用程序,报告和其他应用程序是基于 Web 的。
解决这个问题的最佳方法是什么?我也确实想过从我的事务表中删除所有索引,并将触发器插入到一个新表中,该表将是一个副本,但为报告检索编制了索引。