Транзакции, журнализация и многопользовательский режим

 

Далее, представим себе, что в первоначальной реализации информационной системы, основанной на использовании библиотек расширенных методов доступа к файлам, обрабатывается операция принятия на работу нового служащего. Следуя требованиям согласованного изменения файлов, информационная система вставляет новую запись в файл СЛУЖАЩИЕ и собирается модифицировать соответствующую запись файла ОТДЕЛЫ(или вставлять в этот файл новую запись, если сотрудник является первым в своем отделе), но именно в этот момент происходит (например) аварийное выключение питания компьютера.

 

Очевидно, что после перезапуска системы ее база данных будет находиться в рассогласованном состоянии (точно будут нарушены правила (2) и (3), а может быть, и правило (1)). Потребуется выяснить это (а для этого нужно явно проверить соответствие данных в файлах СЛУЖАЩИЕ и ОТДЕЛЫ) и привести данные в согласованное состояние. Проверку и коррекцию можно выполнить, например, следующим образом. Сгруппировать записи файла СЛУЖАЩИЕпо значениям поля СЛУ_ОТД_НОМЕР.Для каждой группы (а) проверить, существует ли в файле ОТДЕЛЫзапись, значение поля ОТД_НОМ которой равняется значению поля СЛУ_ОТД_НОМЕР записей данной группы; если такой записи в файле ОТДЕЛЫнет, то (б) исключить группу из файла СЛУЖАЩИЕи перейти к обработке следующей группы;иначе (в) посчитать число записей в группе и вычислить суммарное значение заработной платы; (г) обновить полученными значениями поля ОТД_РАЗМЕРи ОТД_СОТР_ЗАРПсоответствующей записи файла ОТДЕЛЫ и перейти к обработке следующей группы.

 

Настоящие СУБД берут такую работу на себя, поддерживая транзакционное управление и журнализацию изменений базы данных. Прикладная система не обязана заботиться о поддержке корректности состояния базы данных, хотя и должна знать, какие цепочки операций изменения данных являются допустимыми.

 

Представим теперь, что в информационной системе требуется обеспечить параллельную (например, многотерминальную) работу с базой данных служащих и отделов. Если опираться только на использование файлов, то для обеспечения корректности на все время модификации любого из двух файлов доступ других пользователей к этому файлу будет блокирован (вспомните возможности файловых систем касательно синхронизации параллельного доступа, упоминавшиеся в разд. 1.2). Таким образом, зачисление на работу Петра Ивановича Сидорова существенно затормозит получение информации о сотруднике Иване Сидоровиче Петрове, даже если они работают в разных отделах. Настоящие СУБД обеспечивают гораздо более тонкую синхронизацию параллельного доступа к данным.