Кэширование, зависящее от базы данных, с несколькими базами данных / SqlServers - PullRequest
1 голос
/ 07 октября 2010

Я работаю в среде, в которой одно веб-приложение (работающее в веб-ферме) динамически подключается к различным базам данных SQL Server (возможно, на разных серверах) на основе выбора пользователя (эта часть не подлежит обсуждению, если только вы не может подарить мне 1 000 000 долларов и / или какое-нибудь устройство для изменения времени).

Я бы хотел кешировать некоторые из часто используемых данных из базы данных в приложении, такие как «настройки», и ищу наилучшую практику для использования с классом SqlCacheDependency или зависимым от кэша связанной базы данных решение (не в отличие от пользовательской реализации уведомления или опроса SQL; уведомление предпочтительнее опроса).

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

Есть идеи, предложения или опыт в этой области?

Или просто лучше принять удар и всегда идти в базу данных?

Ответы [ 2 ]

0 голосов
/ 07 октября 2010

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

Вы сказали, что в какой-то момент пользователь выбирает базу данных, и вы создаете соединение, открываете его, читаете данные и так далее. Это хорошее место, чтобы прочитать ваши настройки только для этой базы данных и использовать их в приложении. В то же время вы можете настроить SqlCacheDependency, чтобы получать уведомления об изменениях в вашей текущей базе данных.

Когда пользователь выбирает другую базу данных, вы просто отбрасываете текущие настройки и загружаете другие из вновь выбранной базы данных.

На мой взгляд, это гораздо проще реализовать.

0 голосов
/ 07 октября 2010

вы можете использовать nhibernate или hibernate с кэшем 2-го уровня в вашем коде доступа к данным. для кэширования части вы можете использовать memcached или speed (appfabric).

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