четверг, 27 сентября 2012 г.

О вреде работы под Администратор 123


О вреде работы под админом в винде все знают, но всё равно работают. А вот в чём проблема работы под Администратор 123 в "АС-Библиотека-3"? Ситуация, согласись, не редкая. Вообще в библиотеках с паролями  большая проблема. Начальство требует списки паролей сотрудников в сейф, последние их забывают, а если записали, то обязательно потеряют и т.д. Поэтому, частенько, все работают под Администратором. Конечно, если коллектив небольшой и все доверяют друг другу, кроме того доступ к компьютерам только у сотрудников и сеть изолирована от Интернета - к чему эти игры в конспирацию. Однако проблема проявляется в совершенно неожиданном месте. Сам не поверил бы, если бы не увидел своими глазами. Дело, в общем то не в Администраторе, а в работе под одной учётной записью несколькими сотрудниками.
Итак, во всех многопользовательских системах обработки данных существует и успешно решается проблема "потерянных обновлений". Проще всего её показать на пальцах. Запустим два "Каталогизатора" и один "Администратор". Во всех модулях залогинимся под Администратором. В обоих "Каталогизаторах" выполним запрос одной и тоже записи (неважно какой), а в "Администраторе" сделаем выборку таблицы Demo__Lock (или другая *__Lock, если логическая база другая).


В левом "Каталогизаторе" изменим пару строк и повременим с сохранением изменений в базе. Перечитаем Demo__Lock - появилась блокировка.


Теперь изменим другое поле (например, дату) в правом "Каталогизаторе" и тоже не сохраняем.


Перечитаем Demo__Lock – та же запись, только время изменилось.


Жмём кнопку "Сохранить" в левом "Каталогизаторе".


Перечитываем Demo__Lock - таблица пустая, блокировки нет.


Жмём кнопку "Сохранить" в правом "Каталогизаторе".


Попробуй угадать, что в базе? Естественно результат второго сохранения. Перечитаем запись в обоих.


Правый "Каталогизатор" закэшировал данные и перекрыл все модификации, выполненные в левом.
Но гипотетический сотрудник, работающий за левым "Каталогизатором" уверен, что он выполнил свою работу. И впоследствии будет крайне удивлён, увидев старые данные. Это и есть один из вариантов проблемы "потерянного обновления".
А что произойдёт, если учётки разные? Перелогинимся в правом "Каталогизаторе" под "Библиотекарь" и попробуем всё повторить.


Начнём модификацию в левом. Перечитаем Demo__Lock - появилась блокировка.


Теперь попробуем модифицировать запись в правом.


Срабатывает защита.
Конечно, решение проблемы "потерянных обновлений" в "АС-Библиотека-3" немного странное, но оно работает именно так. Неважно, какими правами обладают учётки, важно, чтобы они были разными.
Аналогичная ситуация с модулями "Читатель" и "Абонемент", работающими с БД User. Попробуй сам. И не ленись писать комментарии.

Комментариев нет:

Отправить комментарий