Java

Зачем кэшировать базы данных?

Ведь если что-то в базе данных изменится из другого источника, то всё, что будет получать пользователь из кэша будет устаревшим. Это же не практично! Всё равно нужно будет периодически ссылаться к СУБД, чтобы освежить кэш.
Moriturus ☆☆☆☆☆
Moriturus ☆☆☆☆☆
1 675
Разумеется, кэшировать надо только тогда, когда кол-во запросов к БД становится фактором, тормозящим работу системы.

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

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

И, разумеется, для кэширования надо использовать отдельную базу данных: специализированную in memory (Redis, Tarantool и т. п.), которая обеспечит максимально быстрое получение идентичных данных всеми клиентами.
Сергей Полушин
Сергей Полушин
61 105
Лучший ответ
>Зачем кэшировать базы данных?
Для ускорения работы.

>Ведь если что-то в базе данных изменится из другого источника
А если нет?
Moriturus ☆☆☆☆☆ Это не отвечает явным образом на мой вопрос.
Зачем кэшировать базы данных?
Затем.
Если у тебя одна и таже выборка отдаётся тысяче пользователей, то зачем ее каждый раз выполнять на стороне базы, если можно ее в оперативу положить и сразу отсылать 1001 пользователю, что тут непонятного? Базы не расчитаны на трёх калек, если их трое, то можно и в файл писать и в память и нанять таджиков что бы они телеграммы всем рассылали. Базы расчитаны на огромное число людей и рассуждали разработчики соответсвенно, оптимизируя ресурсы.
Вот кстати у многих тут людей которые вопросы задают по теме программирования похожий ход мысли, а заключается он в том, что логика такая возникает, зачем эти глупыши такое придумали, я ведь лучше знаю. И почему то никто не рассуждает отталкиваясь от того, что тот кто создавал был явно опытнее и точно понимал, что делает. У вас как то все наоборот и это меня очень удивляет.
Шобахт
Шобахт
74 425