Write-Back

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

Write back (також write behind) — шаблон проєктування для оптимізації використання кешу.

Проблема[ред. | ред. код]

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

Вирішення[ред. | ред. код]

Читаємо дані із кешу. При зміні даних оновлюємо кеш та асинхронно оновлюємо відповідне сховище.

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

Переваги[ред. | ред. код]

  • забезпечує консистенцію даних при оптимізованому доступі
  • забезпечує збереження статичних даних
  • надає оптимізований спосіб запису даних

Недоліки[ред. | ред. код]

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

Опис[ред. | ред. код]

Робота патерну write-back
  1. Читаємо дані з кешу.
  2. При зміні даних оновлюємо кеш.
  3. Кеш-сервіс асинхронно оновлює сховище.
public Data GetData()
{
	return _cache.GetData();
}

public void UpdateData(Data data)
{
	return _cache.UpdateDataAsync(data);
}
class Cache
{
	public Data GetData()
	{
		return this.GetCachedData();
	}

	public void UpdateDataAsync(Data data)
	{
		_queue.UpdateData(data);
	}
}


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

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

Джерела[ред. | ред. код]