Java
Зачем кэшировать базы данных?
Ведь если что-то в базе данных изменится из другого источника, то всё, что будет получать пользователь из кэша будет устаревшим. Это же не практично! Всё равно нужно будет периодически ссылаться к СУБД, чтобы освежить кэш.
Разумеется, кэшировать надо только тогда, когда кол-во запросов к БД становится фактором, тормозящим работу системы.
Если данные меняются несколько раз в секунду, то кэшировать их действительно не имеет смысла. Но имеет смысл для таких данных использовать специализированную более быструю оперативную базу данных (которая сама по себе будет работать кэшем), из которой эти данные в фоновом режиме постепенно переносятся в основную базу.
Но если данные меняются, например, в среднем раз в несколько дней, а выбираются по несколько раз в секунду, то кэш с временем жизни (например же) 1 час более чем уместен. Кэш - он же не вечный, а имеет ограниченный срок жизни. Как только срок жизни данных в кэше истекает, данные из кэша автоматически удаляются и при следующем запросе производится обращение к основной базе данных - с загрузкой актуальных данных в кэш.
И, разумеется, для кэширования надо использовать отдельную базу данных: специализированную in memory (Redis, Tarantool и т. п.), которая обеспечит максимально быстрое получение идентичных данных всеми клиентами.
Если данные меняются несколько раз в секунду, то кэшировать их действительно не имеет смысла. Но имеет смысл для таких данных использовать специализированную более быструю оперативную базу данных (которая сама по себе будет работать кэшем), из которой эти данные в фоновом режиме постепенно переносятся в основную базу.
Но если данные меняются, например, в среднем раз в несколько дней, а выбираются по несколько раз в секунду, то кэш с временем жизни (например же) 1 час более чем уместен. Кэш - он же не вечный, а имеет ограниченный срок жизни. Как только срок жизни данных в кэше истекает, данные из кэша автоматически удаляются и при следующем запросе производится обращение к основной базе данных - с загрузкой актуальных данных в кэш.
И, разумеется, для кэширования надо использовать отдельную базу данных: специализированную in memory (Redis, Tarantool и т. п.), которая обеспечит максимально быстрое получение идентичных данных всеми клиентами.
>Зачем кэшировать базы данных?
Для ускорения работы.
>Ведь если что-то в базе данных изменится из другого источника
А если нет?
Для ускорения работы.
>Ведь если что-то в базе данных изменится из другого источника
А если нет?
Moriturus ☆☆☆☆☆
Это не отвечает явным образом на мой вопрос.
Зачем кэшировать базы данных?
Затем.
Если у тебя одна и таже выборка отдаётся тысяче пользователей, то зачем ее каждый раз выполнять на стороне базы, если можно ее в оперативу положить и сразу отсылать 1001 пользователю, что тут непонятного? Базы не расчитаны на трёх калек, если их трое, то можно и в файл писать и в память и нанять таджиков что бы они телеграммы всем рассылали. Базы расчитаны на огромное число людей и рассуждали разработчики соответсвенно, оптимизируя ресурсы.
Вот кстати у многих тут людей которые вопросы задают по теме программирования похожий ход мысли, а заключается он в том, что логика такая возникает, зачем эти глупыши такое придумали, я ведь лучше знаю. И почему то никто не рассуждает отталкиваясь от того, что тот кто создавал был явно опытнее и точно понимал, что делает. У вас как то все наоборот и это меня очень удивляет.
Затем.
Если у тебя одна и таже выборка отдаётся тысяче пользователей, то зачем ее каждый раз выполнять на стороне базы, если можно ее в оперативу положить и сразу отсылать 1001 пользователю, что тут непонятного? Базы не расчитаны на трёх калек, если их трое, то можно и в файл писать и в память и нанять таджиков что бы они телеграммы всем рассылали. Базы расчитаны на огромное число людей и рассуждали разработчики соответсвенно, оптимизируя ресурсы.
Вот кстати у многих тут людей которые вопросы задают по теме программирования похожий ход мысли, а заключается он в том, что логика такая возникает, зачем эти глупыши такое придумали, я ведь лучше знаю. И почему то никто не рассуждает отталкиваясь от того, что тот кто создавал был явно опытнее и точно понимал, что делает. У вас как то все наоборот и это меня очень удивляет.
Похожие вопросы
- Java, алгоритмы и структуры данных.
- Как назвается структура данных в программировании (C#), где доступ к каждому элементу осуществляется по имени?
- Paint. Применяемые алгоритмы и структуры данных.
- Почему все типы данных в Java пишутся с маленькой буквы, кроме String?
- Вопрос про работу с базой данных c JPA
- Создание отдельных баз данных под управлением программы Cronos и внесение информации в базы данных
- Какие потребуются расходы на разработку базы данных?
- База данных для хранения больших данных?
- База данных фамилий Хочу прояснения
- От чего зависит скорость восстановления базы данных?