Базы данных. Уровни данных. Нормальные формы схем отношений. Аксиома дополнения (добавления). Способы размещения с применением Хэш-функции, страница 28

2/  когда в б/д 2 транзакции выполняются параллельно, то СУБД поддерживает принцип независимого выполнения транзакции, который означает, что результаты выполнения транзакции будут такими же, как если бы сначала выполнялась транзакция 1, а потом транзакция 2 и наоборот.. Такая процедура называется сериализация транзакции. Способ выполнения набора транзакции называется сериальным, если результат совместного выполнения транзакции эквивалентен результату некоторого последовательного выполнения этих же транзакций. Наиболее распространенным механизмом для реализации сериализации транзакции является механизм блокировок. Самый простой вариант - блокировка объекта на все время действия транзакции. После окончания транзакции все заблокированные объекты становятся доступными другими транзакциями, т.е. разблокируются. Также реализована блокировка на уровне страниц. В этом случае блокируется только отдельные страницы на диске, когда транзакция обращена к ним. Для повышения параллельного выполнения транзакции используется комбинирование разных типов захвата.

Лекция 22.12

Файловые структуры, используемые для хранения данных.

Файлы:

1. прямого доступа

2. последовательного доступа

3. индексные

    3.1 плотный индекс – индексные прямые.

    3.2 неплотный индекс – индексно-последовательные.

    3.3 в деревья

4. инвертированные списки

5. взаимосвязанные фалы

    5.1 с однонаправленными цепочками

    5.2 с двунаправленными цепочками

Файлы прямого доступа – это фалы с постоянной длинной записи.

Файлы последовательного доступа - это фалы с переменной длинной записи.

Индексно-прямые файлы – в этих файлах основная область содержит последовательность записей одинаковой длинны, расположенных в произвольном порядке. Структура индексной записи имеет вид: 

заначение ключа

номер записи

Значение ключа- это значение первичного ключа

Номер записи – порядковый номер записи в основной области. В этих файлах для каждой записи в основной области существует одна запись из индексной области. Все записи в индексной области упорядочены по значению ключа. Неполный индекс строится для упорядочения записи. Структура записи:

заначение ключа

первой записи блока

номер блока

с этой записью

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

Способы размещения с применением Хэш-функции.

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

Методы разрешения коллизии:

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

2. Адрес считается не адресом хранения одной конкретной записи, а областью памяти, в пределах которой, размещаются все записи, получившие этот адрес. В пределах этой области записи могут размещаться последовательно, в порядке поступления. Если со временем область окажется заполненной, в памяти выделяется новая область, связанная с предыдущей указателем. ХФ может генерировать как абсолютный адрес области и относительный.

Пример ХФ: Ф-я основана на методе деления и определяется в виде: h(x)= kmodm+1, где m-делитель. Для вычисления h(x) ключ записи k делится на m и остаток от деления увеличивается на 1. (m=101 при k=2000, 2001, 20017 получаем h(x)=82, 83, 99). Эти же самые адреса окажутся сгенерированными h(x) для k=3313, 3314, 3330., т.е. для этих адресов возникает коллизия.