Write-Around

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

Проблема

[ред. | ред. код]

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

Вирішення

[ред. | ред. код]

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

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

[ред. | ред. код]

Переваги

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

Недоліки

[ред. | ред. код]
  • не забезпечує повну консистенцію даних. Дані можуть бути оновлені, стороннім сервісом в той час як кеш міститиме застарілу інформацію
  • нормалізовані дані. Аплікації потрібно провести додаткові операції над даними, щоб привести їх до потрібного формату
  • аплікації необхідно працювати як зі сховищем так із кешем
Робота патерну write-around
  1. Читаємо дані з кешу.
  2. Кеш-провайдер забезпечує дані та їх валідність.
  3. Оновлені дані поміщаємо в сховище.


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

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

Див. також

[ред. | ред. код]

Джерела

[ред. | ред. код]