Добавить в корзинуПозвонить
Найти в Дзене
HowToSchool

SD-EP31: Лучшие стратегии кэширования

Когда речь заходить об улучшении показателей доступности данных (скорость ответа, быстродействие и т. д.) нам на помощь приходит кэширование. Зачастую системы кэширования хранят данные в месте, где поиск происходит быстрее в сравнении с базой данных. Например, если вы храните данные в памяти, доступ к ней будет быстрее, чем обращение к базе данных, которая хранит данные на диске. Далее разберем пять популярных стратегий «жонглирования» данными между системами кеширования и базами данных. 1. Стратегия чтения данных – Cache Aside. Когда приложению необходимо прочитать данные из базы данных, оно сначала проверяет кэш на наличие этих данных. Если данные доступны (a cache hit), кэшированные данные возвращаются. Если данные недоступны (a cache miss), приложение обращается к базе данных. Данные возвращаются приложению и кэш обновляется. 2. Стратегия чтения данных – Read Through. Когда приложение запрашивает в кэше данные и в кэше их не оказывается, то система кэширования самостоятельно запра

Когда речь заходить об улучшении показателей доступности данных (скорость ответа, быстродействие и т. д.) нам на помощь приходит кэширование. Зачастую системы кэширования хранят данные в месте, где поиск происходит быстрее в сравнении с базой данных. Например, если вы храните данные в памяти, доступ к ней будет быстрее, чем обращение к базе данных, которая хранит данные на диске. Далее разберем пять популярных стратегий «жонглирования» данными между системами кеширования и базами данных.

1. Стратегия чтения данных – Cache Aside.

Когда приложению необходимо прочитать данные из базы данных, оно сначала проверяет кэш на наличие этих данных. Если данные доступны (a cache hit), кэшированные данные возвращаются. Если данные недоступны (a cache miss), приложение обращается к базе данных. Данные возвращаются приложению и кэш обновляется.

2. Стратегия чтения данных – Read Through.

Когда приложение запрашивает в кэше данные и в кэше их не оказывается, то система кэширования самостоятельно запрашивается эти данные из базы данных. При возвращении данных от базы данных система кэширования их сохраняет у себя и возвращает приложению.

3. Стратегия записи данных – Write Around.

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

4. Стратегия записи данных – Write Through.

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

5. Стратегия записи данных – Write Back or Write Behind.

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

P.S. Так какая стратегия больше подходит вам?