Write Around — шаблон проєктування для оптимізації використання кешу.

Проблема ред.

Аплікація застосовує кеш для оптимізації повторного доступу до даних. Однак дані рідко оновлюються. Необхідно забезпечити спосіб підтримувати актуальні дані в кеші.

Вирішення ред.

Створюємо сервіс обов'язком якого буде кешування. Він знає про розташування даних та оновлює кеш при потребі. Зміна даних призводить лише до оновлення сховища.

Переваги та недоліки ред.

Переваги ред.

  • забезпечує часткову консистенцію даних при оптимізованому доступі
  • забезпечує непередбачувану потребу в ресурсах. Дані поміщаються в кеш на вимогу
  • система може працювати при несправності кешу. В такому випадку дані беруться зі сховища
  • забезпечує збереження статичних даних. Кеш-сервіс реалізовує стратегії кешування в залежності від вимоги
  • аплікація розділяє дані на читання та запис

Недоліки ред.

  • не забезпечує повну консистенцію даних. Дані можуть бути оновлені, стороннім сервісом в той час як кеш міститиме застарілу інформацію
  • нормалізовані дані. Аплікації потрібно провести додаткові операції над даними, щоб привести їх до потрібного формату
  • аплікації необхідно працювати як зі сховищем так із кешем

Опис ред.

 
Робота патерну write-around
  1. Читаємо дані з кешу.
  2. Кеш-провайдер забезпечує дані та їх валідність.
  3. Оновлені дані поміщаємо в сховище.


public Data GetData()
{
	return _cache.GetOrAdd(_database.GetData);
}

public void UpdateData(Data data)
{
	return _database.UpdateData(data);
}

Див. також ред.

Джерела ред.