2

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

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

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

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

+0

Если вы используете базу данных SQL Server, вы можете захотеть использовать хранимую процедуру. – jdweng

+0

@jdweng: можете ли вы уточнить? Почему хранимые procs должны быть специфичными для SQL Server и как это связано с кешированием? – Lou

+0

База данных - это доступ к нескольким приложениям, поэтому обновление таблицы не может быть выполнено ни в одном приложении. Вы можете создать представление (временную таблицу) в SQL в хранимой процедуре и добавить отметку времени к представлению. Затем хранимая процедура будет обрабатывать обновление для представления. Приложения могут вызывать хранимую процедуру, которая позаботится об обновлении представления. Представление будет кешем. – jdweng

ответ

0

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