- •Лабораторная №1 Проектирование структуры базы данных. Нормализация таблиц.
- •О бозначение таблиц и полей
- •Лабораторная №2 Создание серверной части приложения: алиас, файл базы данных, таблицы.
- •Лабораторная №3, №4 Визуальное проектирование структуры базы данных: таблицы, индексы, условия ссылочной целостности, взаимосвязи.
- •Примечание
- •Лабораторная №5, №6 Клиентская часть: размещение не визуальных компонентов, соединение с бд. Клиентская часть: размещение визуальных компонентов, отображение таблиц.
- •Лабораторная №7, №8 Запросы на добавление данных. Запросы на редактирование и удаление данных.
- •Лабораторная №9 Создание генераторов и триггеров. Каскадные воздействия.
- •Лабораторная №10 Создание хранимых процедур.
- •Лабораторная №11 Сортировка, поиск, фильтрация данных: в базе данных и выборках.
- •Лабораторная №12, №13 Работа с транзакциями. Кэширование изменений при работе с транзакциями.
- •Лабораторная №14 Обеспечение достоверности данных и перехват исключительных ситуаций.
- •Лабораторная №15 Работа с отчетами.
- •Лабораторная №16 Установление привилегии доступа.
- •Лабораторная №17 Копирование и восстановление данных.
- •Лабораторная №18 Копирование клиентской части
- •Список рекомендуемых баз данных
Лабораторная №12, №13 Работа с транзакциями. Кэширование изменений при работе с транзакциями.
Цель работы: .научится создавать кэш и управлять им; грамотно использовать свойства, события и методы компонентов для работы с транзакциями и кэшем; научится создавать транзакции и управлять ими
Pеализация механизма транзакций
Механизм транзакций используется для поддержания целостности БД: транзакция переводит БД из одного целостного состояния в другое. Транзакция может быть явной и неявной. Неявная транзакция запускается и завершается автоматически, явной транзакцией управляет программист. Для модификации данных в удаленной базе может использоваться SQL-запрос, выполняемый с помощью метода ExecSQL компонента Query. Такой запрос называют PassThrough SQL, его выполнение приводит к запуску неявной транзакции. Способ взаимодействия с сервером на уровне такой транзакции определяет параметр sqlpassthru mode псевдонима БД или драйвера InterBase, который может принимать следующие значения:
shared autocommit — операторами модификации БД, например, update или insert, автоматически запускается неявная транзакция (по умолчанию); после внесения изменений эта транзакция автоматически подтверждается; разные транзакции могут использовать общее соединение с БД;
shared no autocommit — операторами модификации БД также автоматически запускается неявная транзакция, но автоматического ее подтверждения не происходит, и нужно самостоятельно выполнять оператор commit; разные транзакции могут использовать общее соединение с БД;
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. Основные достоинства рассматриваемого механизма проявляются для удаленных БД, но его можно использовать и при работе с локальными БД.
Контрольное задание:
Используя компонент TIBTransaction с панели инструментов Interbase создать приложение, позволяющее измененять информацию об объекте недвижимости.
Создать запросы на изменение информации в базе данных Exmpl.gdb, используя компонент UpdateSQL
