База данных веб-приложений или Карты для повышения производительности - PullRequest
0 голосов
/ 05 марта 2019

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

Ответы [ 3 ]

0 голосов
/ 05 марта 2019

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

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

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

0 голосов
/ 10 марта 2019

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

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

0 голосов
/ 05 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...