#mysql #database #azure #state #price
Вопрос:
Итак, у меня есть клиент, которому нужны все данные, показываемые ему на экране, чтобы они всегда были последними и наиболее правильными. Если он какое-то время в афк, он знает, что нужно обновить, и это нормально, однако для «обновления» или вызова базы данных необходимо получить все последние данные.
Прямо сейчас я только что реализовал, что при каждом отображении экрана данные будут получаться из базы данных. Кстати, это база данных SQL.
Теперь мы, возможно, захотим развернуть его в будущем в Azure, однако ВСЕГДА получаем так много данных на экран/вызов и т.д… я предполагаю, что в конечном итоге это будет очень дорого.
Как решить эту проблему? Я думаю, что кэширование «только» на самом деле не является решением, потому что как иначе интерфейс будет знать, что были внесены новые изменения в базу данных (добавлены, отредактированы записи и т. Д.)? Нужны ли нам какие-то «наблюдатели» в нашей базе данных, чтобы вносить изменения в кэширование при появлении новых изменений?
Мы уже немного работаем с Redux (это приложение ReactJS), но, конечно, как внутреннее интерфейсное состояние приложения узнает, было ли что-то добавлено в базу данных, скажем, другим человеком?
Если человек А загружает все данные, а человек В добавляет сущность, если человек А обновляет, мне нужно, чтобы все ПОСЛЕДНИЕ изменения поступали из базы данных, но технически без постоянного получения всех данных, потому что это будет дорого стоить…
Надеюсь, вы понимаете, что я имею в виду. Как я могу исправить эту проблему и каков наилучший (а также, возможно, наиболее экономичный и эффективный способ) сделать это?
Ответ №1:
что вам нужно, так это связь между сервером и клиентом, куда будут передаваться новые/измененные данные. Вы можете сделать это с помощью веб-сокетов или Событий на стороне сервера:
Подробная информация:
https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API