数据库层缓存、触发器和失效

本文关键字:失效 触发器 缓存 数据库 | 更新日期: 2023-09-27 18:13:24

我有一个用于将大量时间序列测量持久化到RDBMS数据库(MS SQL Server)中的DAL。还有一个网络应用程序可以连接到这个数据库并在线显示趋势(通常是几个月的数据图表,例如5分钟的最小/最大/平均聚合,用于各种数量和物联网设备)。

由于数据量大,我希望将聚合结果缓存到一个单独的表中,如果我能有一个额外的内存缓存层,那将是非常酷的。然而,设备经常发送带有旧时间戳的历史数据,这意味着缓存经常需要失效,并且有两个应用程序访问这些数据(插入/更新并偶尔读取数据的服务,以及读取数据的web应用程序)。

我已经研究了几个选项,如SQL触发器,或简单地手动使表无效,但我不确定如何正确地将缓存无效传播到web应用程序。

是否有一种方法以某种方式检测SQL事件在我的web应用程序和无效缓存?或者有一个单独的进程来处理内存缓存,这个进程也可能无效?或者我是否应该创建自己的第三个服务,它将作为所有db操作的代理,提供数据的内存缓存(这看起来确实有点小题大做)?

数据库层缓存、触发器和失效

我不相信web应用程序可以直接检测sql server事件。