Обновить кэшированные данные - PullRequest
1 голос
/ 17 января 2010

U кэширует список элементов, затем добавляет или обновляет или удаляет вызываемый метод.

Подход 1)

A- Изменить данные в базе данных. В случае успеха сделайте B, C
B- Удалить весь список из кэша.
C- Повторное кэширование списка при первом чтении.

Подход 2)

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



Подход (2), вероятно, вызовет неприятные проблемы с обнаружением ошибок, поскольку данные поступают из BLL и помещаются непосредственно в кэш. Нельзя допустить, чтобы при sproc не возникало никаких ошибок, я не беспокоюсь об ошибках времени выполнения базы данных, ошибки времени выполнения будут показать, но я беспокоюсь о неверных данных или пропустить расчет.

Могу ли я приступить к подходу (2) с осторожностью? Существует ли принцип «наилучшей практики», который предлагает не делать подход (2)?

Ответы [ 2 ]

2 голосов
/ 17 января 2010

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

Я не буду отбрасывать (2) полностью, хотя, если (1) недостаточно «хорошо».

Факторы, которые необходимо учитывать:

  • Показатели совпадений (чтение и редактирование / удаление)
  • Количество записей / предметов
  • размер каждого предмета
  • и т. Д. И т. Д. *
1 голос
/ 17 января 2010

Вы также должны принять во внимание, могут ли данные быть изменены в базе данных из другого приложения (которое обходит ваш кеш). В этих случаях второй подход (2) может привести к отображению неверных данных для пользователя.

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

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