ГЛАВА 25. Обзор транзакций Firebird.

ГЛАВА 25. Обзор транзакций Firebird.

В базах данных клиент-сервер, таких как Firebird, клиентское приложение никогда не касается данных, которые физически хранятся в страницах базы данных. Вместо этого клиентские приложения ведут общение с системой управления базой данных - с "сервером" - создавая пакеты запросов и ответов внутри транзакций. Эта часть книги посвящена ключевым концепциям и вопросам управления транзакциями в Firebird.

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

* Потеря изменений (lost updates) появляется, когда два пользователя просматривают один и тот же набор, и один пользователь выполняет изменения, за которыми сразу же следуют изменения другого пользователя, перекрывающие работу первого пользователя.

* "Грязное" чтение (dirty read) позволяет одному пользователю видеть изменения, которые у другого пользователя находятся в процессе выполнения, без гарантии того, что изменения другого пользователя являются окончательными.

* Невоспроизводимое чтение (non-reproducible-reads) позволяет одному пользователю непрерывно выбирать строки, которые другие пользователи изменяют или удаляют. Эта проблема зависит от среды. Например, финансовые процессы по концу месяца или инвентаризация будут ошибочными в этих условиях, поскольку приложению продажи билетов нужно содержать все пользовательские представления синхронизированными, чтобы исключить двойные заказы.

* Фантомные строки (phanthom rows) появляются, когда один пользователь может выбирать некоторые, но не все новые строки, введенные другими пользователями. Опять же, это может быть применимо в одних ситуациях, однако это будет искажать результаты некоторых процессов.

* Перекрывающиеся транзакции могут возникать, когда изменения строки одним пользователем влияют на данные в других строках в той же таблице или в других таблицах, к которым обращаются другие пользователи. Это обычно связано с синхронизацией, проявляющейся, когда нет способа управлять или предсказать последовательность, в которой пользователи будут выполнять изменения.

Для решения таких проблем Firebird использует модель управления, которая изолирует каждую задачу внутри уникального контекста, ограничивающего последствия, если работа такой задачи может вызвать перекрытие работы, выполненной другими задачами. Состояние базы данных не может изменяться, если существуют какие-либо конфликты.

! ! !

ПРИМЕЧАНИЕ. Firebird не допускает "грязное" чтение. При некоторых условиях он специально позволяет невоспроизводимое чтение.

. ! .

Свойства ACID

Сейчас прошло уже более 20 лет с того времени, как два исследователя, Тэо Хедер (Theo Haerder) и Андреас Рютер (Andreas Reuter), опубликовали обзор, описывающий поддержание целостности базы данных в параллельно изменяемой среде. Они объединили требования в четыре правила, названные атомарность (atomicity), согласованность (consistency), изолированность (isolation) и устойчивость (durability) - аббревиатура ACID[87]. В течение последующих лет концепция ACID стала эталоном для реализации транзакций в системах баз данных.

Атомарность

Транзакция (называемая также единицей работы) описывается как множество действий, преобразующих данные. Чтобы быть "атомарной", транзакция должна быть реализована таким образом, чтобы обеспечить принцип "все или ничего, когда выполняются либо все операции, либо ни одна из них"[88]. Транзакция либо завершается полностью (подтверждается, commit), либо отменяется (откатывается, rollback).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

ГЛАВА 1. ОБЩИЙ ОБЗОР ОСОБЕННОСТЕЙ СИСТЕМЫ

Из книги автора

ГЛАВА 1. ОБЩИЙ ОБЗОР ОСОБЕННОСТЕЙ СИСТЕМЫ За время, прошедшее с момента ее появления в 1969 году, система UNIX стала довольно популярной и получила распространение на машинах с различной мощностью обработки, от микропроцессоров до больших ЭВМ, обеспечивая на них общие


Глава 2 Обзор служб набора протоколов TCP/IP

Из книги автора

Глава 2 Обзор служб набора протоколов TCP/IP 2.1 Введение Почему семейство протоколов TCP/IP получило столь широкое распространение? Прежде всего, благодаря способности к взаимному объединению гетерогенных локальных и глобальных сетей. Не менее важной является способность


Глава 10 Обзор системы

Из книги автора

Глава 10 Обзор системы Начиная с этой главы я начну рассказывать собственно о работе в Ubuntu и об устройстве этой системы. Надеюсь, вы успешно справились с установкой и не испугались незнакомых операций и терминов, которыми она изобиловала.Итак, начнём знакомство с Ubuntu


Глава 2. SQL : ОБЗОР.

Из книги автора

Глава 2. SQL : ОБЗОР. ЭТА ГЛАВА ПОЗАКОМИТ ВАС СО СТРУКТУРОЙ SQL языка а также с определенными общими выводами, такими как тип данных которые эти поля могут содержать и некоторые области неоднозначностей которые существуют в SQL.Она педназначена обеспечить связь с более


Глава 1. Обзор Ruby

Из книги автора

Глава 1. Обзор Ruby Язык формирует способ нашего мышления и определяет то, о чем мы можем размышлять. Бенджамин Ди Уорф Стоит напомнить, что в новом языке программирования иногда видят панацею, особенно его адепты. Но ни один язык не сможет заменить все остальные. Не


ГЛАВА 3. Конфигурирование Firebird.

Из книги автора

ГЛАВА 3. Конфигурирование Firebird. После инсталляции Firebird, как правило, готов к запуску. Конфигурирование не требуется или минимально. Если инсталляция и настройка сети прошли по плану, нет необходимости что-нибудь делать для нового пользователя, нужно лишь продолжать


ГЛАВА 6. Сервер Firebird.

Из книги автора

ГЛАВА 6. Сервер Firebird. Сервер Firebird - это программа, которая выполняется на узле хоста в сети, и слушает клиентов с порта коммуникации. Она обслуживает запросы множества клиентов к множеству баз данных. Суперсервер (Superserver) является многопоточным процессом, который запускает


ГЛАВА 7. Клиенты Firebird.

Из книги автора

ГЛАВА 7. Клиенты Firebird. Клиенту на удаленной рабочей станции требуется клиентская библиотека и приложение (программа), которое может взаимодействовать с интерфейсом прикладного программирования (Application Programming Interface, API), объявленным в этой библиотеке.Клиентская библиотека


ГЛАВА 8. О типах данных Firebird.

Из книги автора

ГЛАВА 8. О типах данных Firebird. Тип данных является основным атрибутом, который должен быть определен для каждого столбца в таблице Firebird. Он устанавливает и ограничивает характеристики множества данных, которые могут храниться в столбце, и операции, которые могут быть


ГЛАВА 19. Язык SQL в Firebird.

Из книги автора

ГЛАВА 19. Язык SQL в Firebird. SQL (произносится "эс кю эль"[62]) - это подъязык данных для доступа к реляционным системам управления базами данных. Его элементы, синтаксис и поведение стандартизовали ANSI и ISO в 1986 году.С этого времени SQL пересматривался три раза: SQL-89 (опубликован в 1989 г.),


ГЛАВА 26. Конфигурирование транзакций.

Из книги автора

ГЛАВА 26. Конфигурирование транзакций. Транзакция является "оберткой" вокруг любого фрагмента работы, влияющего на состояние базы данных или более чем одной базы данных. Пользовательский процесс запускает транзакцию и тот же самый пользовательский процесс завершает ее.


ГЛАВА 28. Введение в программирование в Firebird.

Из книги автора

ГЛАВА 28. Введение в программирование в Firebird. Одним из самых больших преимуществ полнокровных реализаций реляционных баз данных SQL является их способность компилировать и выполнять внутренние модули (хранимые процедуры и триггеры), представленные разработчиками в виде


Глава 1 Общий обзор языка Пролог

Из книги автора

Глава 1 Общий обзор языка Пролог В этой главе на примере конкретной программы рассматриваются основные механизмы Пролога. Несмотря на то, что материал излагается в основном неформально, здесь вводятся многие важные


Глава 10. Краткий обзор

Из книги автора

Глава 10. Краткий обзор Мы будем опираться на симбиоз взаимодействующих между собой методик. Методик, некоторые из которых были забыты десятилетия назад как непрактичные и наивные.Вот исходные материалы, из которых нам предстоит построить новую дисциплину разработки