Я работаю над программой просмотра, которая форматирует содержимое базы данных. Пока что все это только для чтения, и у меня есть кнопка Обновить, которая повторно запрашивает базу данных, если я хочу убедиться, что используются текущие данные.
Теперь я смотрю на изменение средства просмотра на редактор (чтение-запись), который включает в себя обратную запись в базу данных, и осознаю, что существуют потенциальные проблемы параллелизма: если над базой данных работает более одного пользователя, то есть возможности устаревших данных и другие ошибки параллелизма.
Что мне интересно, Каковы подходящие шаблоны проектирования для базы данных и пользовательского интерфейса приложения, чтобы избежать проблем параллелизма?
Чтобы быть пуленепробиваемым, я мог бы заставить пользователя использовать явную транзакцию (например, большую часть времени он находится в режиме только для чтения, затем ему нужно нажать кнопку «Редактировать», чтобы начать транзакцию, затем кнопки «Подтвердить» и «Отменить», чтобы подтвердить фиксацию). или отменить транзакцию), но это кажется неуклюжим и не сработает с большими наборами изменений («Редактировать», тогда изменение за 1 час приводит к чрезмерно большой транзакции и может помешать другим людям вносить изменения). Кроме того, было бы плохо, если кто-то вносит кучу изменений, а затем это терпит неудачу - тогда что они должны делать, чтобы избежать потери этой работы?
Похоже, я бы хотел уведомить пользователя, когда соответствующие данные изменяются, так что степень детализации изменений невелика, и они получают запрос на обновление из базы данных и привыкание делать это.
Кроме того, если есть обновления, я должен автоматически перенести их на дисплей приложения? (при условии, что они не затирают то, над чем работает пользователь) Или пользователь должен быть явно обновлен?
Отличным примером, который близок к ситуации, над которой я работаю, являются исследователи файловых систем (например, Windows Explorer), которые показывают иерархию папок / каталогов и список объектов внутри них. Проводник Windows позволяет вам обновлять, но есть также некоторое уведомление от файловой системы к окну Проводника, так что, если новый файл будет создан, он просто появится в окне просмотра без необходимости нажимать клавишу F5 для обновления.
Я нашел эти сообщения в StackOverflow, но они не совсем совпадают: