Вопрос о конфликте при вставке данных в БД пользователем и администратором, см. Описание ниже. - PullRequest
0 голосов
/ 16 июня 2011

У меня есть случай, что произойдет, когда на одном конце Администратор редактирует Детали пользователя «А» в таблице «пользователи», и в то же время сам пользователь «А» редактирует свои данные в таблице пользователей. Чей эффект отразится .. И что можно сделать, чтобы сделать его конкретным или отдать приоритет?

Спасибо и всего наилучшего ...

1 Ответ

1 голос
/ 16 июня 2011

Как говорит Майкл Дж. В., выигрывает последний - если у вас нет механизма блокировки или логики приложения для решения этого случая.

Механизмы блокировки имеют тенденцию резко снижать производительность вашей базы данных. http://dev.mysql.com/doc/refman/5.5/en/internal-locking.html дает обзор параметров в MySQL. Однако описанный вами сценарий - доступ администратора к записи, блокировка этой записи до тех пор, пока они не изменят запись - вызовет все виды проблем с производительностью.

Альтернативой является проверка «грязной» записи перед обратной записью. Псевдокод:

User finds record
Application stores (hash of) record in memory
User modifies copy of record
User instructs application to write record to database
Application retrieves current database state, compares to original
If identical
     write change to database
If not identical 
     notify user

В этой модели смена администратора вызовет поток «уведомить пользователя»; Ваше приложение может решить прекратить запись или заставить пользователя обновить запись из базы данных перед ее изменением и повторной попыткой.

Больше кода, но гораздо меньше вероятность возникновения проблем с производительностью / масштабируемостью.

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