Каков наилучший способ кэшировать набор данных с помощью памяти, такой как производительность, и привязывать ее к изменениям базы данных? - PullRequest
3 голосов
/ 06 сентября 2011

Кто-нибудь сталкивался с проектом с открытым исходным кодом или библиотекой в ​​.Net, чтобы выступать в качестве слоя кэширования между базой данных и приложением, которое автоматически или по запросу синхронизирует данные, чтобы можно было повысить производительность.

Стек .Net как некоторые жесты, которые можно использовать, например, SqlDependencies и Cache, но у обоих есть проблемы.

Проверенные варианты:

  • SqlDependency основаны на таблице, поэтому при обновлении одной записи в таблице вся таблица становится недействительной.

  • Объект Cache работает хорошо, но ему не хватает функций управления объектами для управления изменениями в объектах.

  • DataTable в Cache может быть решением, но я бы хотел иметь дело с кэшем как с объектами, а не с DataRow.

Есть какие-нибудь предположения в системе, специализирующейся на этой задаче? Любой хороший ORM, который может сделать это?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Возможно, вы захотите взглянуть на AppFabric .Одним из его компонентов является Velocity (который был исследовательским распределенным кешем в памяти).Он поддерживается только в серверных выпусках Windows.

1 голос
/ 06 сентября 2011

OuputCaching - это очень хороший способ оптимизации приложения. Даже простое кэширование страницы в течение 30 секунд имеет огромное значение для приложений, находящихся под большой нагрузкой. VaryByCustom позволяет значительно контролировать процесс кэширования данных, как и механизм кэширования вывода .NET.

Если наблюдение за изменениями в реальном времени не критично, я бы предложил это в качестве возможной альтернативы хранению ваших данных в памяти, и даже тогда я бы подумал об оптимизации определенных частей данных или объектов. Хранение DataSets в памяти не масштабируется - но, конечно, это зависит от ваших требований. Если у вас есть только маленький DataSet и вы можете кешировать его в Application cache, тогда это не плохая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...