Транзакционные параллельные СУБД новая волна


ACID: вернемся к истокам - часть 2


Поскольку отсутствует какая-либо область управления, охватывающая наборы транзакций, у системы управления базами данных (СУБД) нет никакого контроля вне пределов границ транзакций. Поэтому пользователю должно гарантироваться, что если система сообщает ему о том, что нечто произошло, то это "нечто" действительно произошло. Поскольку по определению любая (успешно завершенная – С.К.) транзакция является корректной, результаты неизбежно появляющихся некорректных транзакций (т.е. транзакций, содержащих ошибочные данные), могут быть устранены только соответствующей "контр"-транзакцией (countertransaction).

Эти четыре свойства – атомарность, согласованность, изоляция и долговечность (ACID) – описывают основные черты парадигмы транзакций, которые влияют на многие аспекты разработки систем баз данных. Поэтому мы считаем, что способность какой-либо системы к поддержке транзакций является пробным камнем (ACID test) качества этой системы.

FUNDS_TRANSFER. PROCEDURE, $BEGIN_TRANSACTION; ON ERROR DO; /* in case of error */ $RESTORE_TRANSACTION, /* undo all work */ GET INPUT MESSAGE; /* reacquire input */ PUT MESSAGE ('TRANSFER FAILED'); /* report failure */ GO TO COMMIT; END; GET INPUT MESSAGE; /* get and parse input */ EXTRACT ACCOUNT_EBIT, ACCOUNT_CREDIT, AMOUNT FROM MESSAGE, $UPDATE ACCOUNTS /* do debit */ SET BALANCE ffi BALANCE - AMOUNT WHERE ACCOUNTS.NUMBER = ACCOUNT_DEBIT; $UPDATE ACCOUNTS /* do credit */ SET BALANCE = BALANCE + AMOUNT WHERE ACCOUNTS.NUMBER = ACCOUNT_CREDIT; $INSERT INTO HISTORY /* keep audit trail */ <DATE, MESSAGE>; PUT MESSAGE ('TRANSFER DONE'); /* report success */ COMMIT: /* commit updates */ $COMMIT_TRANSACTION; END; /* end of program */

Рис. 1. Простая программа на языке PL/1-SQL, переводящая средства с одного счета на другой.

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


Начало  Назад  Вперед



Книжный магазин