СУБД: параллельное управление АКА Кубок кофе по принципу - PullRequest
0 голосов
/ 12 июля 2011

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

Вот принцип.Давайте представим систему управления больницей.Врач использует приложение, чтобы отобразить пациента и изменить его.Прежде чем нажать на « Update », он уходит на кофе.Другой доктор отображает того же пациента в своем клиентском приложении и нажимает « Обновление ».Когда первый доктор вернулся, он нажимает « Обновление ».Вот проблема: какое обновление должно быть принято?Действительно, это риторический вопрос: это разработчик / архитектор, чтобы ответить на него.

Единственное решение, о котором я думаю, это добавить столбец " locked " в мои таблицы.Я устанавливаю логическое значение на true , когда получаю Пациент для обновления, и устанавливаю его на false , когда я только что обновил его.Любой « Get for update » проверит, установлено ли « locked » на false , чтобы разрешить запись.

Вы видите какие-либо проблемы, используяэто решение?

1 Ответ

0 голосов
/ 12 июля 2011

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

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

Все современные базы данных реализуютсделки;Правильное использование транзакций гарантирует требуемое поведение базы данных.

Столбец «заблокирован» не обязателен.Если вы поддерживаете его состояние в транзакции, изменения в его состоянии не будут видны другим транзакциям.Если вы поддерживаете его состояние вне транзакции, вы рискуете, что его значение будет несовместимо с реальными (выпущенными и сохраненными) блокировками.

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