В вики большого объема с «горячими» страницами или там, где жизненно важно, чтобы изменения не

потеряны из-за перезаписи, проблема заслуживает более пристального изучения. Обычно предлагается

решения

• Блокировка страницы, так что всякий раз, когда страница читается для редактирования, никто другой не может

запросить его редактирование

• Обнаружение конфликтов, поэтому при попытке опубликовать редактирование сначала проверяется,

изменение версии произошло после того, как была прочитана исходная копия, и если это так, блокирует

запись

• Арбитраж различий, так что обнаруженный конфликт версий приводит, например, к

объединенная версия, сохраняющая оба набора изменений


АДМИНИСТРИРОВАНИЕ БАЗЫ ДАННЫХ

303

Мы рассмотрим каждый более подробно позже. Однако опыт показывает, что пользователи

обычно не хотят иметь дело с разрешением конфликтов версий. Реализация чего-либо

помимо первоначального «выигрывает последнее сохранение», поэтому требуется тщательный баланс между

целостность изменений данных и удобство для пользователя.

Блокировка страницы

Заблокировать редактируемую страницу многим кажется самым простым способом. Страница может

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

Однако это, казалось бы, простое решение имеет ряд сложностей.

• Что делать, если пользователь никогда не сохраняет никаких изменений? Когда и как страница

потом разблокировать?

• Что делать, если форма редактирования вызывается по ошибке или даже срабатывает поисковым ботом?

Это может быстро повлиять на целый ряд страниц.

• Если сценарий назначает время ожидания для блокировки, какое значение является достаточно продолжительным?

для пользователя, чтобы завершить редактирование без слишком долгого и утомительного, если

редактирование заброшено?

• Как блокировка по тайм-ауту влияет на пользователя, который начинает редактирование, отступает, а затем

решает все-таки отредактировать?

• Как тайм-аут влияет на пользователя, которому требуется необычно много времени для редактирования

страницу, возможно, потратив время на телефонный звонок перед сохранением?