База данных веб-приложений или карты для повышения производительности

Я хочу знать, полезно ли использовать ConcurrentHashMaps для пользовательских данных. У меня есть пользовательские данные, сохраненные в базе данных mysql, и я извлекаю их, когда пользователь входит в систему (или кто-то редактирует пользователя). Каждый раз, когда пользователь переходит на другую страницу, эти пользовательские данные будут обновляться. Должен ли я использовать карту и сохранять там изменения из моего приложения, имея базу данных в фоновом режиме, или я должен напрямую загрузить ее из базы данных. Я хочу сделать приложение максимально производительным.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
34
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если производительность является приоритетом, я думаю, вы должны хранить зарегистрированных пользователей в памяти.

Таким образом, запросы на чтение будут быстрыми, поскольку вам не нужно будет запрашивать базу данных. Однако вам нужно будет обновить карту, если какой-либо из зарегистрированных пользователей будет каким-либо образом отредактирован.

Ответ принят как подходящий

То, что вы описываете, это тайник. Предположим, что обращения к базе данных обходятся дорого, потому что нужно загрузить много информации, или запрос, который используется для извлечения данных, сложен и требует много времени. Здесь вступает в игру структура данных кэша. По сути, это хранилище в памяти, которое действительно быстрее выполняет запросы к базе данных, потому что на самом деле оно уже загружено в память.

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

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

Человек не может отличить задержку в 1 мс от задержки в 50 мс. Таким образом, оптимизация сверх «достаточно хорошего» излишняя.

MySQL уже использует кэширование; добавление другого кеша может фактически замедлить время отклика.

Другие вопросы по теме