Как реализовать безопасные операции чтения и записи от нескольких пользователей на сервере nodeJs с использованием MySQL, чтобы избежать несоответствия состояния? - PullRequest
0 голосов
/ 02 апреля 2019

Я знаю, что архитектура nodeJs основана на одном потоке, и это модель, управляемая событиями.На самом деле непосредственно в приложении nodeJs нам не нужно заботиться о одновременной записи и чтении одной и той же переменной (скажите, если я ошибаюсь).Но теперь я хочу знать, как насчет одновременного доступа к строке базы данных (MySQL), которая обменивается с приложением nodeJs.Итак, как я могу реализовать состояние согласованности в моем приложении.PS: некоторые примеры кода будут хорошими.Спасибо

Как реализовать безопасные операции чтения и записи (базовое увеличение значения для примера) от нескольких пользователей на сервере nodeJs, использующих MySQL в качестве базы данных, чтобы избежать состояния несогласованности?

1 Ответ

1 голос
/ 02 апреля 2019

Согласованность базы данных - все о том, как СУБД реализует Атомарность, согласованность, изоляция и длительность (ACID). Это другой вопрос, чем параллелизм в программе node.js.

Если вы хотите увеличить значение строки в таблице базы данных, вы можете использовать этот запрос к базе данных.

 UPDATE statistics SET counter = counter + 1 WHERE item = 'someItemId';

Вам необходимо выполнить запрос из соответствующего вызова метода в вашем MySQL API node.js.

Даже если многие разные программы node.js (или Java, или php, или что-то еще) одновременно выполняют этот тип запроса в базе данных, результаты все равно будут согласованными. СУБД неявно оборачивает этот тип запроса в транзакцию , гарантируя, что он запускается до завершения после запуска. Вот что такое согласованность СУРБД.

Подробное объяснение ACID далеко выходит за рамки ответа о переполнении стека.

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