Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические работы по УБД 2013.doc
Скачиваний:
12
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

Лабораторная №12, №13 Работа с транзакциями. Кэширование изменений при работе с транзакциями.

Цель работы: .научится создавать кэш и управлять им; грамотно использовать свойства, события и методы компонентов для работы с транзакциями и кэшем; научится создавать транзакции и управлять ими

  • Pеализация механизма транзакций

Механизм транзакций используется для поддержания целостности БД: транзакция переводит БД из одного целостного состояния в другое. Транзакция может быть явной и неявной. Неявная транзакция запускается и завершается автоматически, явной транзакцией управляет программист. Для модификации данных в удаленной базе может использоваться SQL-запрос, выполняемый с помощью метода ExecSQL компонента Query. Такой запрос называют PassThrough SQL, его выполнение приводит к запуску неявной транзакции. Способ взаимодействия с сервером на уровне такой транзакции определяет параметр sqlpassthru mode псевдонима БД или драйвера InterBase, который может принимать следующие значения:

  1. shared autocommit — операторами модификации БД, например, update или insert, автоматически запускается неявная транзакция (по умолчанию); после внесения изменений эта транзакция автоматически подтверждается; разные транзакции могут использовать общее соединение с БД;

  2. shared no autocommit — операторами модификации БД также автоматически запускается неявная транзакция, но автоматического ее подтверждения не происходит, и нужно самостоятельно выполнять оператор commit; разные транзакции могут использовать общее соединение с БД;

  3. not shared — транзакции должны использовать различные соединения с БД и подтверждаться выполнением оператора commit. Возможность явного управления транзакциями предоставляет язык SQL сервера, который имеет в своем составе следующие операторы:

  • set transaction — начать транзакцию;

  • commit — подтвердить транзакцию;

  • rollback — отменить транзакцию.

Оператор запуска явной транзакции имеет формат:

SET TRANSACTION

[READ WRITE | READ ONLY]

[WAIT | NO WAIT]

[[ISOLATION LEVEL]

{SNAPSHOT [TABLE STABILITY] | READ COMMITED}]

[RESERVING <Список таблиц>

[FOR [{SHARED | PROTECTED}]

[{READ | WRITE}]];

Все операнды этого оператора являются необязательными и позволяют управлять перечисленными ниже режимами транзакции. Режим доступа к данным:

read write — разрешены чтение и модификация записей (по умолчанию);

read only — разрешено только чтение записей.

Поведение в случае конфликта транзакций при обновлении записей:

wait — ожидание завершения другой транзакции (по умолчанию);

no wait — прекращение данной транзакции.

Уровень изоляции от других транзакций (операнд isolation level):

snapshot — чтение данных в состоянии на момент начала транзакции (по умолчанию); изменения, сделанные другими транзакциями, в данной транзакции не видны;

snapshot table stability — предоставление транзакции исключительного доступа к таблицам; другие транзакции могут читать записи из таблиц;

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

Блокирование таблиц, указанных в списке операнда reserving, для других транзакций:

protected read — разрешено только чтение записей;

protected write — для транзакций с уровнем изоляции snapshot или read committed разрешено только чтение записей;

shared read — разрешены чтение и модификация записей;

shared write — разрешено чтение записей;

Для транзакций с уровнем изоляции snapshot или read committed разрешена модификация записей. Действие операторов commit и rollback по утверждению и отмене транзакции аналогично действию одноименных методов компонента Database.

  • Использование механизма кэшированных изменений

Механизм кэшированных изменений заключается в том, что на компьютере клиента в кэше (буфере) создается локальная копия данных, и все изменения в данных выполняются в этой копии. Для хранения локальной копии используется специальный буфер (кэш). Сделанные изменения можно утвердить, перенеся их в основную БД, хранящуюся на сервере, или отказаться от них. Этот механизм напоминает механизм транзакций, но, в отличие от него, снижает нагрузку на сеть, т. к. все изменения передаются в основную БД одним пакетом. Механизм кэшированных изменений реализуется в приложении, для чего компоненты, в первую очередь Database, Table и Query, имеют соответствующие средства. Кроме того, механизм кэшированных изменений поддерживается предназначенным для этого компонентом UpdateSQL. Основные достоинства рассматриваемого механизма проявляются для удаленных БД, но его можно использовать и при работе с локальными БД.

Контрольное задание:

  1. Используя компонент TIBTransaction с панели инструментов Interbase создать приложение, позволяющее измененять информацию об объекте недвижимости.

  2. Создать запросы на изменение информации в базе данных Exmpl.gdb, используя компонент UpdateSQL