2010-01-17 7 views
1

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

подход 1)

A- ли изменения данных в базе данных. Если удастся сделать B, C
B- Удалить весь список из кеша.
C-Re-Cache список при первом чтении.

подход 2)

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



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

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

ответ

2

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

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

Факторы, чтобы рассмотреть:

  • ставки Hit (чтение и редактирование/удаление)
  • Количество записей/пунктов
  • Размер каждого элемента
  • и т.д. и т.п ...
1

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

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

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