c2d6febc1f39ccdbc35a99cc517238f9.ppt
- Количество слайдов: 19
Транзакции в БД.
n Прежде чем обсуждать основные типы приложений баз данных, уточним термины транзакция и запрос. В теории баз данных, вообще говоря, под транзакцией понимают одну из команд SQL - SELECT, INSERT, UPDATE, DELETE. Однако в зависимости от типа приложений термин транзакция трактуется более свободно как элементарная логически завершенная единица работы (так называемая бизнес-транзакция), которая может включать несколько команд вставки, удаления или модификации. В зависимости от того, какие команды SQL используются, транзакции разделяют на транзакции только для записи (write-only), только для модификации (modify-only), только для чтения (read-only), только для удаления (delete-only). Транзакции только для чтения называют запросом.
n Транза кция (англ. transaction) — группа последовательных n n n операций с базой данных, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций. Различают: - последовательные (обычные), - параллельные - распределённые транзакции - вложенные транзакции. Распределённые транзакции подразумевают использование больше чем одной транзакционной системы и требуют намного более сложной логики (например, two-phase commit — двухфазный протокол фиксации транзакции). Также, в некоторых системах реализованы автономные транзакции, или под-транзакции, которые являются автономной частью родительской транзакции.
n Модель вложенных транзакций включает понятие головной транзакции, которая управляет выполнением всей иерархии. В рамках иерархии могут присутствовать транзакции разных уровней вложенности. Концевые узлы иерархии представляют собой обычные транзакции. Отдельные ветви иерархии могут иметь разную длину, т. е. концевые транзакции могут находиться на разном "расстоянии" от головной транзакции (корня дерева транзакций).
Свойства транзакций n Одним из наиболее распространённых наборов требований к транзакциям и транзакционным системам является набор ACID (Atomicity, Consistency, Isolation, Durability). Требования ACID были в основном сформулированы в конце 70 -х годов Джимом Греем. Вместе с тем, существуют специализированные системы с ослабленными транзакционными свойствами. n Atomicity n Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной. Поскольку на практике невозможно одновременно и атомарно выполнить всю последовательность операций внутри транзакции, вводится понятие «отката» (rollback): если транзакцию не удаётся полностью завершить, результаты всех её до сих пор произведённых действий будут отменены и система вернётся в исходное состояние.
Consistency Свойство согласованности гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое - транзакция не разрушает взаимной согласованности данных. n Одно из самых сложных и неоднозначных свойств из четвёрки ACID. В соответствии с этим требованием, система находится в согласованном состоянии до начала транзакции и должна остаться в согласованном состоянии после завершения транзакции. Не нужно путать требование согласованности с требованиями целостности (integrity). Последние правила являются более узкими и, во многом, специфичны для реляционных СУБД: есть требования целостности типов (domain integrity), целостности ссылок (referential integrity), целостности сущностей (entity integrity), которые не могут быть нарушены физически в силу особенностей реализации системы. n n Согласованность является более широким понятием. Например, в банковской системе может существовать требование равенства суммы, списываемой с одного счёта, сумме, зачисляемой на другой. Это бизнесправило и оно не может быть гарантировано только проверками целостности, его должны соблюсти программисты при написании кода транзакций. Если какая-либо транзакция произведёт списание, но не произведёт зачисление, то система останется в некорректном состоянии и свойство согласованности будет нарушено. n Наконец, ещё одно замечание касается того, что в ходе выполнения транзакции согласованность не требуется. В нашем примере, списание и зачисление будут, скорее всего, двумя разными подоперациями и между их выполнением внутри транзакции будет видно несогласованное состояние системы. Однако не нужно забывать, что при выполнении требования изоляции, никаким другим транзакциям эта несогласованность не будет видна. А атомарность гарантирует, что транзакция либо будет полностью завершена, либо ни одна из операций транзакции не будет выполнена. Тем самым эта промежуточная несогласованность является скрытой. n
n Isolation n Свойство изолированности означает, что конкурирующие n n за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно. Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат. Это свойство не соблюдается на уровне изолированности Durability - Свойство долговечности трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах (даже в случае последующих ошибок). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу. Другими словами, если пользователь получил подтверждение от системы, что транзакция выполнена, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.
n Завершение транзакции означает, что все операции, входящие в состав транзакции, успешно завершены, и результат их работы сохранен в базе данных. n Откат транзакции означает, что все уже выполненные операции, входящие в состав транзакции, отменяются и все объекты базы данных, затронутые этими операциями, возвращены в исходное состояние. n Для реализации возможности отката транзакций многие СУБД поддерживают запись в log-файлы, позволяющие восстановить исходные данные при откате. n Транзакция может состоять из нескольких вложенных транзакций.
n Фиксация транзакции - это действие, обеспечивающее запись на диск изменений в базе данных, которые были сделаны в процессе выполнения транзакции. До тех пор, пока транзакция не зафиксирована, возможно аннулирование этих изменений, восстановление базы данных в то состояние, в котором она была на момент начала транзакции. Фиксация транзакции означает, что все результаты выполнения транзакции становятся постоянными. Они станут видимыми другим транзакциям только после того, как текущая транзакция будет зафиксирована. До этого момента все данные, затрагиваемые транзакцией, будут "видны" пользователю в состоянии на начало текущей транзакции
n Сериализация транзакций - это механизм их выполнения по некоторому сериальному плану. Обеспечение такого механизма является основной функцией компонента СУБД, ответственного за управление транзакциями. Система, в которой поддерживается сериализация транзакций обеспечивает реальную изолированность пользователей. n Сериализуемость транзакций - параллельное выполнение заданного множества транзакций будет верным, если при его выполнении будет получен такой же результат, как и при последовательном выполнениитех же транзакций n Сериализуемость обеспечивается с помощью механизма блокировок и определения способов взаимодействия транзакций
n Основная реализационная проблема состоит в выборе метода n n сериализации набора транзакций, который не слишком ограничивал бы их параллельность. Приходящим на ум тривиальным решением является действительно последовательное выполнение транзакций. Но существуют ситуации, в которых можно выполнять операторы разных транзакций в любом порядке с сохранением сериальности. Примерами могут служить только читающие транзакции, а также транзакции, не конфликтующие по объектам базы данных. Между транзакциями могут существовать следующие виды конфликтов: W-W - транзакция 2 пытается изменять объект, измененный не закончившейся транзакцией 1; R-W - транзакция 2 пытается изменять объект, прочитанный не закончившейся транзакцией 1; W-R - транзакция 2 пытается читать объект, измененный не закончившейся транзакцией 1.
n Для управлением транзакциями в системах, поддерживающих механизм транзакций и язык SQL, используются следующие операторы: n – фиксация транзакции: COMMIT [WORK]; n – откат транзакции: ROLLBACK [WORK]; n – точка сохранения: SAVEPOINT <имя_точки_сохранения>;
n n n Начало транзакции соответствует появлению первого исполняемого SQLоператора. Транзакция завершается при наступлении одного из следующих событий: Поступила команда COMMIT или ROLLBACK (результаты транзакции соответственно зафиксируются или откатываются). Выдана и успешно проанализирована одна из команд языка описания данных (DDL, Data Definition Language), таких как CREATE, DROP или ALTER. При этом фиксируется предыдущая транзакция. Завершилась команда DDL. Таким образом, транзакция, содержащая оператор языка описания данных фиксируется автоматически. Пользователь завершил сеанс работы с системой (последняя транзакция фиксируется автоматически). Процесс пользователя аварийно завершен (последняя транзакция автоматически откатывается). Фиксация транзакции заключается в следующем: 1. Изменения, внесённые транзакцией, делаются постоянными. 2. Уничтожаются все точки сохранения для данной транзакции. 3. Завершается транзакция (уничтожаются системные записи о транзакции в оперативной памяти). n 4. Если выполнение транзакций осуществляется с помощью блокировок, то освобождаются объекты, заблокированные транзакцией. n Для организации отката СУБД во время выполнения транзакции производит запись в сегменты отката всех внесённых изменений. Все изменения выполняются в оперативной памяти (ОП), затем фиксируются в журнале транзакций и периодически (при выполнении контрольной точки) переписываются на диск. Процесс формирования контрольной точки заключается в синхронизации данных, находящихся на диске (т. е. во вторичной памяти) с теми данными, которые находятся в ОП: все модифицированные данные из ОП переписываются во вторичную память. n n
n Мониторы обработки транзакций (Transaction Processing Monitor - TPM), или, проще, мониторы транзакций программные системы (которые относят к категории middleware, то есть к посредническому или промежуточному программному обеспечению), обеспечивающие эффективное управление информационновычислительными ресурсами в распределенной системе. Они представляют собой гибкую, открытую среду для разработки и управления приложениями, ориентированными на оперативную обработку распределенных транзакций. В числе важнейших характеристик TPM - масштабируемость, поддержка функциональной полноты и целостности приложений, достижение максимальной производительности обработки данных при невысоких стоимостных показателях, поддержка целостности данных в гетерогенной среде. TPM опираются на трехзвенную модель "клиент-сервер"
Системы обработки транзакций.
n Первое поколение. Единые монолитные системы, взаимодействующие с пользователем посредством простейших терминалов. n Второе поколение. Поддержка продуктов многих поставщиков, интеллектуальные клиентские системы, поддержка множества систем баз данных, как правило, при помощи протоколов двухфазовой фиксации (второе поколение отражает нынешнее положение дел в этой области). n Третье поколение. Зарождающееся поколение систем, более адекватно, чем это возможно сегодня, отражающее потребности бизнеса n Хотя понятие "обработка транзакций" применимо практически к любой компьютерной среде, в особенности в мире бизнеса, однако традиционно использование мониторов обработки транзакций ограничивалось окружениями крупномасштабных центров обработки данных, функционирующих на базе мэйнфреймов, в таких прикладных областях, как резервирование авиабилетов или международные банковские операции 4). За последние годы, отчасти за счет того, что корпоративные информационные системы все более приобретают черты распределенности и неоднородности, мониторы обработки транзакций стали применяться и во многих других вертикальных приложениях (здравоохранение, страхование, торговля).
n Системы обработки транзакций. n Оперативная обработка транзакций (On. Line Transaction Processing) в действительности означает две вещи. В первоначальном узком смысле слова OLTP обозначает работающие с базами данных приложения в трехуровневой архитектуре клиент/сервер, использующие для управления транзакциями отдельную программу промежуточного уровня (сервер транзакций). В этом состоит отличие от двухуровневой архитектуры, когда транзакции управляются хранимыми процедурами и триггерами сервера баз данных. В своем же более широком и более часто используемом значении термин OLTP означает любую промышленную базу или любое приложение, работающее с базой данных, которая постоянно обновляется и редко подвергается запросам. OLTP-приложения часто противопоставляются работающим с базами данных OLAPприложениям (OLAP, On. Line Analytical Processing, оперативная аналитическая обработка).
n Типичными примерами OLTP-приложений являются системы складского учета, заказов билетов, операционные банковские системы и другие. Основная функция подобных систем заключается в выполнении большого количества коротких транзакций. Сами транзакции являются достаточно простыми, но проблемы состоят в том, что таких транзакций очень много, выполняются они одновременно и при возникновении ошибок транзакция должна откатиться и вернуть систему в состояние, в котором та была до начала транзакции. Практически все запросы к базе данных в OLTP-приложениях состоят из команд вставки, обновления и удаления. Запросы на выборку, в основном, предназначены для предоставления пользователям выборки данных из различного рода справочников. Таким образом, большая часть запросов известна заранее ещё на этапе проектирования системы. Критическим для OLTP-приложений является скорость и надежность выполнения коротких операций обновления данных. Чем выше уровень нормализации данных в OLTP-приложениях, тем оно быстрее и надежней. Отступления от этого правила могут происходить тогда, когда уже на этапе разработки известны некоторые часто возникающие запросы, требующие соединения отношений и от скорости выполнения которых существенно зависит работа приложений.
n Оперативная аналитическая обработка (On. Line Analytical Processing) описывает такой тип приложения, работающего с базой данных, которое позволяет пользователям делать запросы к базе, но не обновлять информацию. OLAP-приложения делятся на архивы данных и рынки данных. Назначение OLAP-приложения — предоставлять пользователям возможность анализировать данные в промышленной базе, не касаясь вопросов доступности и целостности производственной системы. В то время как промышленные базы данных должны отражать действительное состояние на текущий момент с точностью долей секунды, OLAPбазы хранят записи об уже совершенных в прошлом транзакциях. OLTP-базы непрерывно обновляются, в то время как OLAP-базы обновляются периодически путем снятия «слепка» с промышленной базы данных. Наконец, OLAP-базы не структурируются в соответствии с реляционной моделью, а часто имеют структуру, больше напоминающую отчет. n Главной задачей OLAP-приложений является доставка бизнесинформации людям, нечасто использующим компьютер, так что простота Web-интерфейса имеет в этой связи большое значение и делает OLAP отличным кандидатом для установки баз данных в WWW.
c2d6febc1f39ccdbc35a99cc517238f9.ppt