Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[конспект] Технологии баз данных [v0.8.1].pdf
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.3 Mб
Скачать

Хэшированные кластеры

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

Корпорация Oracle рекомендует использовать хешированные кластеры при следующих условиях:

выборка кортежей в запросах выполняется с учетом условий равенства, которые охватывают все атрибуты ключа кластера;

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

Литература

1.Ramakrishnan R., Gehrke J. Storage and Indexing // Database management systems (part III). — 3rd ed. — New York : McGraw-Hill Companies, Incorporated, 2003. — (McGraw-Hill international editions: Computer science series). — ISBN 9780072465631.

2.Бураков П. В., Петров В. Физическая организация данных // Введение в системы баз данных (глава 7). — СПб. : СПбГУ ИТМО, 2010.

3.Карпова И. П. Механизмы размещения данных и доступа к данным // Введение в базы дан-

ных (раздел 6). — URL: http : / / rema44 . ru / resurs / study / dblectio / dblect3 . html #

_Toc32409903.

4.Карпова Т. С. Физические модели баз данных // Базы данных: модели, разработка, реализации

(глава 9). — СПб. : Питер, 2002. — ISBN 5272002784.

5.Коннолли Т., Бегг К. Структура данных в файлах с различной организацией / пер. с англ. Р. Г. Имамутдинова, К. А. Птицына // Базы данных: проектирование, реализация и сопровождение (приложение В) / под ред. К. А. Птицына. — 3-е изд. — М. : Издательский дом „Вильямс“, 2003.

6.Кузнецов С. Д. Методы поиска в основной памяти // Методы сортировки и поиска (раздел 4). — URL: http://citforum.ru/programming/theory/sorting/sorting2.shtml#4.

7.Кузнецов С. Д. Физическое представление реляционных баз данных во внешней памяти. Индекс-

ные структуры // Базы данных. Вводный курс (лекция 12). — 2008. — URL: http://citforum.

ru/database/advanced_intro/34.shtml.

§9. Управление транзакциями и синхронизация в реляционных СУБД

Восстановление и параллельность связаны с общим понятием защиты данных, т. е. предохранения данных от утраты или повреждения по следующим причинам:

Во время выполнения некоторых программ может произойти аварийный останов системы, в результате чего база данных может оказаться в непредсказуемом состоянии.

При «одновременном» выполнении возможен конфликт между двумя программами из-за обращения к одним и тем же данным, что приведет к получению неправильных результатов как внутри базы данных, так и на выходе из нее.

57

9.1. Понятие транзакции

Определение 1. Транзакцией (transaction) называется группа последовательных операций чтения и/или изменения содержимого базы данных, которая представляет собой логическую единицу работы с данными.

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

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

то все эти обновления будут отменены. Поэтому транзакция либо полностью выполняется, либо пол-

ностью отменяется (т. е. создается такая ситуация, как если бы эта транзакция вообще не выполнялась). Благодаря этому последовательность операций, которая по самой своей сути не является неразрывной, может быть преобразована в такую последовательность, которая внешне кажется неразрывной.

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

Определение 2. Компонент системы, который обеспечивает такую неразрывность(или подобие неразрывности), называется диспетчером транзакций (монитор обработки транзакций, ТРмонитор).

Ни в одной СУБД не может быть предусмотрен априорный способ определения того, какие именно операции обновления могут быть сгруппированы для формирования единой логической транзакции. Поэтому должен применяться метод, позволяющий указывать границы каждой из транзакций извне, со стороны пользователя. Обычно в языках манипулирования данными транзакции определяются в виде (вместо указанных операторов могут использоваться их аналоги):

BEGIN TRANSACTION; // метка начала транзакции действие_1;

действие_2;

...

IF(условие_отката)

THEN ROLLBACK; // откат изменений в~случае возникновения откатных условий

// (приведение базы в~непротиворечивое состояние)

...

действие_N;

COMMIT; // успешное завершение транзакции, т.е. все~измененные или~добавленные данные фиксиру

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

58

 

PARTIALLY

COMMIT

 

COMMITTED

DO_TRANSACTION

COMMITTED

 

BEGIN_TRANSACTION

ABORT

 

ACTIVE

 

 

 

FAILED ABORTED

Рис. 5. Диаграмма переходов для транзакции

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

дов (рис. 5):

В состоянии ACTIVE происходит инициализация транзакции и это состояние остается активным, пока выполняются запросы транзакции. Возможен переход в состояние FAILED в силу вызова ROLLBACK.

В состояние PARTIALLY COMMITTED попадаем, когда было выполнено последнее действие тела транзакции. Может оказаться, что в результате выполнения транзакции нарушены правила упорядочивания или ограничения целостности — в этом случае необходимо завершить транзакцию аварийно (abort). Еще возможна ситуация, когда в системе происходит отказ и все обновленные в транзакции данные невозможно успешно записать во внешнюю память — тогда тоже происходит аварийное завершение. Иначе транзакция выполнена успешно и можем перейти в состояние COMMIT.

В состояние FAILED попадаем, если выполнение запланированных запросов не может быть продолжено (вызван откат) по причине невозможности фиксации данных или аварийного завершения.

После отката транзакции попадаем в состояние ABORTED и база данных восстанавливается до исходного непротиворечивого состояния.

В состояние COMMITTED попадаем в случае успешного завершения транзакции.

Для сохранения сведений о транзакциях СУБД ведёт журнал транзакций.

Определение 3. Журнал транзакций — это часть базы данных, в которую поступают данные обо всех изменениях всех объектов базы данных.

Журнал недоступен пользователям СУБД и поддерживается особо тщательно (иногда ведутся две копии журнала, хранимые на разных физических носителях). Форма записи в журнал изменений зависит от СУБД. Но обычно там фиксируется следующее:

номер транзакции (номера присваиваются автоматически по возрастанию);

состояние транзакции (завершена фиксацией или откатом, не завершена, находится в состоянии ожидания);

точки сохранения (явные и неявные);

команды, составляющие транзакцию

и прочее.

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

59

Элементарные операции различных транзакций могут выполняться в произвольной очередности (конечно, внутри каждой транзакции последовательность элементарных операций этой транзакции является строго определенной). Например, если есть несколько транзакций, состоящих из последовательности операций элементарных:

T pTp1q; Tp2q; : : : ; Tpnqq; Q pQp1q; Qp2q; : : : ; Qplqq; S pSp1q; Sp2q; : : : ; Sppqq

то реальная последовательность, в которой СУБД выполняет эти транзакции может быть, например, такой:

Tp1q; Qp1q; Tp2q; Sp1q; Sp2q; Qp2q; Tp3q; : : :

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

Определение 5. Последовательность, в которой выполняются элементарные операции заданного набора транзакций, называется графиком запуска набора транзакций.

Определение 6. График запуска набора транзакций называется последовательным, если транзакции выполняются строго по очереди. Если график запуска набора транзакций содержит чередующиеся элементарные операции транзакций, то такой график называется чередующимся.

Определение 7. Два графика называются эквивалентными, если при их выполнении будет получен один и тот же результат, независимо от начального состояния базы данных.

Определение 8. График запуска транзакции называется верным (сериализуемым), если он эквивалентен какому-либо последовательному графику.

9.2. Фундаментальные свойства транзакций

Более точно, в современных СУБД поддерживается понятие транзакции, характеризуемое аббревиатурой АСИД (ACID). В соответствии с этим понятием под транзакцией подразумевается последо-

вательность операций над базой данных, обладающая следующими свойствами:

1Атомарность (Atomicy)1: результаты всех операций (изменяющих данные в базе), успешно выполненных в пределах транзакции, должны быть отражены в состоянии базы данных, либо в состоянии базы данных не должно быть отражено действие ни одной операции. Это свойство позволяет относиться к транзакции, как к динамически образуемой составной операции над базой данных (в общем случае состав и порядок выполнения операций, выполняемых внутри транзакции, становится известным только на стадии выполнения).

2Согласованность (Consistency): транзакция может быть успешно завершена с фиксацией результатов своих операций только в том случае, когда действия операций не нарушают целостность базы данных, т. е. удовлетворяют набору ограничений целостности, определенных

для этой базы данных. Иными словами, в результате выполнения транзакции получаем непротиворечивое состояние базы данных.

3Изоляция (Isolation): несколько одновременно (параллельно или квазипараллельно) выполняемые транзакции никоим образом не должны действовать друг на друга. Другими словами,

результаты выполнения операций транзакции T1 не должны быть видны никакой другой транзакции T2 до тех пор, пока транзакция T1 не завершится успешным образом.

4Долговечность (устойчивость, Durability): после успешного завершения транзакции все изменения, которые были внесены в состояние базы данных операциями этой транзакции, должны гарантированно сохраняться, даже в случае сбоев аппаратуры или программного обеспечения.

1 Свойство атомарности могут называть свойством «всё или ничего».

60