2010-04-19 4 views
0

Существуют определенные таблицы, которые часто вызываются, но обновляются редко. Одна из этих таблиц - Департаменты. Поэтому, чтобы сохранить поездки DB, я думаю, что это нормально кэшировать эту таблицу, принимая во внимание, что таблица имеет очень маленький размер. Однако, как только вы их кэшировали, возникает проблема с сохранением данных таблицы. Итак, что является лучшим способом определить, что таблица грязная и поэтому требует перезагрузки и как этот код следует вызывать. Я ищу решение, которое будет масштабируемо. Поэтому обновление кеша в один раз после вставки не решит проблему. Если одна машина вставила запись, все остальные на ферме должны получить уведомление, чтобы перезагрузить кеш. Я думал о вызове соответствующего веб-сервиса из T-SQL, но мне не очень нравится идея потребления ресурсов на сервере sql. Итак, каковы наилучшие методы решения этих проблем. Заранее спасибо EddyAsp.Net MVC лучший способ обновления кэшированной таблицы

+0

Можете ли вы дать больше информации о своей архитектуре. У вас есть слой данных? Вы уже кешируете? –

ответ

0

Вы пробовали использовать зависимости sql или зависимости от кеша? Библиотека будет так часто разбивать базу данных, чтобы увидеть, изменились ли данные. Альтернативой также является использование зависимостей кэша. У вас может быть главный объект кеша и зависит от его дочерних кешей. поэтому, если основной кеш изменен, дочерние кэши будут обновлены.

Edit: Если выше не является решением, которое вы можете легко использовать memcached.net - wikipedia. Предназначен для больших сайтов, но это решение для вашей проблемы.

+0

Это будет работать только на машине, которая вставила запись, но все остальные машины на ферме будут незаметны, поэтому их данные не будут обновлены. – 2010-04-19 22:42:16

+0

Я отредактировал свой ответ. Я думаю, memcached решит вашу проблему. Кроме того, он доступен с открытым исходным кодом и бесплатно – Luke101

0

Есть несколько отличных распределенных систем кэширования. Посмотрите на NCache и скорость. У NCache есть отличные функции для хранения синхронизированных кешированных данных между различными узлами кеша, а также базой данных. Но это идет по цене.

+0

Я знаю о них, но они дороги и более применимы к крупномасштабным приложениям, кроме того, он не показывает, как решить такие проблемы, кроме использования их инструмента. Но спасибо за сообщение – 2010-04-19 22:27:04

0

Вот статья, которая описывает мышление вокруг настройки кеша.

http://www.javaworld.com/javaworld/jw-07-2001/jw-0720-cache.html?page=1

Вообще говоря объекты в кэше имеют время жизни и, когда срок службы истекает они вновь извлекаются из базы данных. Если данные не так важны, эта возможная согласованность позволяет сочетать производительность и точность представленной информации.

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

Смежные вопросы