Кэширование, триггеры и аннулирование на уровне базы данных

У меня есть DAL, который используется для сохранения большого количества измерений временных рядов в базе данных RDBMS (MS SQL Server). Существует также веб-приложение, которое подключается к этой базе данных и отображает тренды в режиме онлайн (обычно данные за несколько месяцев, например, с 5-минутными минимальными / максимальными / средними агрегатами для различных количеств и устройств IoT).

Из-за объема данных я хотел бы кэшировать агрегированные результаты в отдельную таблицу, и было бы неплохо, если бы у меня был дополнительный уровень кэширования в памяти. Однако устройства часто отправляют исторические данные с более старыми временными метками, что означает, что кэш часто необходимо аннулировать, и есть два приложения, которые получают доступ к этим данным (служба, которая вставляет / обновляет и иногда читает данные, и веб-приложение, которое читает данные).

Я рассмотрел несколько вариантов, таких как триггеры SQL или просто аннулирование таблицы вручную, но я не уверен, как правильно распространять недействительность кэша в веб-приложении.

Есть ли способ как-то обнаружить события SQL в моем веб-приложении и сделать кеш недействительным? Или есть отдельный процесс для кэша в памяти, который также может быть аннулирован? Или я должен, возможно, создать свой собственный третий сервис, который будет прокси для всех операций с БД, предоставляя кэш данных в памяти (это, конечно, похоже на перебор)?

1 ответ

Я не верю, что веб-приложение может обнаруживать события сервера SQL напрямую.

Другие вопросы по тегам