Техника для нескольких пользователей на одном наборе данных - PullRequest
0 голосов
/ 13 января 2012

Это скорее вопрос обучения, чем кодирования, но я уверен, что это общая проблема для тех, кто разрабатывает системы администрирования или приложения на php / mysql / js и т. Д.

Я разработал довольно сложное приложение, которое позволяет пользователям загружать изображения и определять в них горячие точки с соответствующими действиями. Изображения хранятся в таблице, а действия - в другой, с данными json для каждого действия в текстовом поле. Это формат журнала стиля, который используется пользовательским приложением для чтения. Однако, как я уже сказал, проблема носит общий характер.

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

Я не хочу внедрять систему блокировки, поскольку система очень обширна (ссылки на другие изображения и т. Д.), И я думаю, что это немного уродливо. Я видел эту ссылку (статья о мультитенантной архитектуре MSDN) в другом вопросе, но он кажется немного подавляющим и специализированным для сервера sql.

Итак - каковы здесь условия для данных и архитектуры системы, которые я могу исследовать, или есть какие-то хорошие статьи по этой теме, которые люди могут порекомендовать? Специально для php / web world было бы здорово!

-

Я все еще ищу хорошие ответы на этот вопрос. Тем временем выяснилось, что общий термин «параллелизм», но важна техника :)

1 Ответ

1 голос
/ 13 января 2012

Первый

ALTER TABLE tablename ADD COLUMN changecount BIGINT NOT NULL DEFAULT 0; 

для всех соответствующих таблиц. Затем, когда вы хотите отправить изменение, используйте не только

UPDATE tablename SET whatever WHERE id=whatever

но

UPDATE tablename SET whatever, changecount=changecount+1 WHERE id=whatever AND changecount=the_changecount_you_remembered_from_loading_the_object

теперь, если пользователь отправляет изменение, он обновляет счет изменений - другому пользователю, отправляющему изменение в тот же объект, но загруженному из более старого состояния, может быть сказано, что "другой пользователь только что изменил бла-бла" *

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