Используя EF core ncache провайдера, автоматически кэшируем и синхронизируем все таблицы в базе данных - PullRequest
0 голосов
/ 18 января 2019

Я хочу использовать ядро ​​Entity Framework (или любое другое ORM в этом отношении), которое может использовать SQL-сервер, встроенный в SQL DEPENDENCY, чтобы каждая вставка, обновление, удаление из таблицы, запуск события зависимостей sql и обновление кеша внутри структуры сущности для этой конкретной таблицы.

Другими словами, у меня есть база данных объемом 800 Мб, с 50 таблицами, которые имеют отношения только один ко многим, многие к одному и один к одному. Я хочу взять все эти таблицы и поместить их в память как таблицы.

Контекст структуры сущности должен быть одноразовым и не жить вечно.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать любой ORM для извлечения данных из базы данных. Как только данные извлекаются из базы данных, вы можете установить зависимость SQL от элемента до того, как он будет вставлен в кэш.

NCache обеспечивает собственную реализацию зависимости SQL, независимую от инфраструктуры, используемой для извлечения содержимого базы данных (EF, NHibernate, ADO.NET и т. Д.). В этой функции NCache регистрирует команды SQL (запросы SELECT и хранимые процедуры SELECT) на сервере базы данных. Если какое-либо событие UPDATE или DELETE изменяет результирующий набор, который можно получить с помощью этих зарегистрированных команд SQL, сервер SQL отправит уведомление NCache, в ответ удалив соответствующие данные кэша.

Следовательно, внутри блока using контекста db вы можете добавить содержимое, извлеченное из базы данных, в кэш с установленной зависимостью SQL от NCache.

Чтобы обеспечить 100% обновление данных кеша в ответ на события UPDATE вместо полного удаления данных кеша, затронутых этим, это включает в себя интеграцию с функцией автоматической перезагрузки, которая использует возможности NCache для сквозного чтения в форме источников поддержки источника , В этом случае вы можете установить флаг повторной синхронизации для элемента кэша, чтобы указать, что NCache должен извлекать свежие данные в случае, если элемент должен быть удален зависимостью SQL. Для этого провайдер для сквозного чтения продолжит извлекать свежие данные из базу данных и заменить устаревшие данные кеша. Провайдеры для чтения и провайдеры для записи представляют собой поставщиков источников поддержки NCache, которые позволяют NCache выполнять команды чтения и записи в базу данных от имени клиентов.

Дополнительную информацию о зависимости SQL можно найти по следующей ссылке:

http://www.alachisoft.com/resources/docs/ncache/prog-guide/sql-dependency.html

Информацию о поставщиках источников поддержки NCache можно найти по следующей ссылке:

http://www.alachisoft.com/resources/docs/ncache/prog-guide/data-source-provider.html

...