Недопустимость кэша команд IBM Websphere - PullRequest
1 голос
/ 09 августа 2011

Мой бизнес-поток выглядит следующим образом:

  1. аннулировать команду
  2. Получение данных из команды (операции с базой данных, немного медленнее)

Шаг 2 будет доступен многим одновременным пользователям.

Теперь, когда команда недействительна и пользователь пытается извлечь данные, начинает выполняться несколько запросов к базе данных, потому что выполнение немного медленнее.

Есть ли способ остановить это многократное выполнение запросов?

Другими словами, вопрос в следующем: можем ли мы выполнить команду, и выборка данных из команды как синхронизированная?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Если вы используете кешируемую команду Dynacache и запросы одинаковы для пользователей, то команда должна кэшироваться после первого выполнения.

Только первое выполнение должно попасть в базу данных, после этого данныеследует извлекать из кэша до тех пор, пока кэш не станет недействительным.

Я обычно использую Dynacache как часть пакета IBM Websphere Commerce.Websphere Commerce использует запланированную команду для проверки таблицы с именем CACHEIVL.Вы должны настроить триггеры, которые будут вставлять идентификатор недействительности в CACHEIVL при изменении целевой таблицы.

Поскольку у вас нет запланированной команды Dynacache, вы можете реализовать что-то конкретное для вашего варианта использования, используя Планировщики Websphere ,

Вот пример кешируемой команды, использующей Dynacache.

0 голосов
/ 18 сентября 2011

Да, вы можете сделать что-то вроде этого.

public class Fetcher {
  private static String data;
  private long timestamp;
  public synchronized String fetchData() {
    String result="";
    if (data!=null) {
     result=data;
     // let's invalidate too old data
     if (new Date().getTime()-timestamp> 100000)
      data=null;
    } else {
      DAO db = DAO.getConnection();
      data = db.performQuery();
      result=data;
    }
   return result;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...