Какая модель / фреймворк кэширования с Websphere Spring Hibernate Oracle?
Вопрос
Мы рассматриваем возможность внедрения платформы кэширования для нашего приложения, чтобы помочь повысить общую производительность нашего сайта.
Мы работаем на Websphere 6.1, Spring, Hibernate и Oracle.В настоящее время основное внимание уделяется статическим данным или данным, которые очень мало меняются в течение дня, но часто используются.
Так что любая информация была бы отличной.Я начал поиск в Google и чтение, но хотел получить представление о том, что сработало для членов сообщества.Одна из вещей, которая нас интересует, - это возможность заставить систему аннулировать кэш, когда в подчеркивающих данных действительно происходит изменение.
Спасибо
Обновить:
Я наткнулся на статью на веб-сайте IBM, где говорится, что кэширование с поддержкой кластера в Hibernate совместно с WebSphere Application Server еще не определено;таким образом, пока не определено, поддерживается ли их использование.
Что думаешь по этому поводу?Мы работаем в кластеризованной среде.
Решение
Ну, система кэширования гибернации делает именно это, я использовал Тайник эффективно и легко с Переход в спящий режим (и система кэширования второго уровня).
Ясный это тоже может быть вариантом, в зависимости от ситуации. Поиск в режиме гибернации или Компас мог бы помочь с этим (хотя это может потребовать некоторой серьезной работы).
Репликация с использованием Терракотовый тоже может быть вариант, хотя я никогда этого не делал.
Другие советы
В Hibernate встроено кэширование первого и второго уровней.Вы можете настроить его на использование EhCache, OSCache, SwarmCache или C3P0 - на ваш выбор.
Вы также можете использовать кэш WebSphere по умолчанию, т. е.DynaCache для реализации кэша второго уровня.Это позволит вам администрировать, отслеживать и настраивать свой кэш с использованием инфраструктуры кэширования WebSphere
Я использовал ehCache и OSCache и обнаружил, что OSCache проще настраивать и использовать.
Одна из вещей, которые нас интересуют, - это возможность заставить систему аннулировать кэш, когда изменение действительно происходит в подчеркиваемых данных.
Из того, что я вижу, Hibernate на самом деле не выполняет вышеуказанное - из Документы Hibernate:
Будь осторожен.Кэши никогда не узнают об изменениях, внесенных в постоянное хранилище другим приложением (хотя они могут быть настроены на регулярное истечение срока действия кэшированных данных).
Очевидно, что это означает, что кэш не имеет ESP и не может определить, вызывало ли приложение, не входящее в кластер, прямой DML в базе данных, но я предполагаю, что то, что вы хотите, - это возможность предоставить службу для устаревших приложений для подключения и аннулирования кэша, когда они обновляют эти данные.И, насколько мне известно, нет никаких предложений о том, как это можно было бы сделать.