Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инф..docx
Скачиваний:
8
Добавлен:
28.10.2018
Размер:
58.62 Кб
Скачать

43.Субд. Функциональные возможности.

Управляющим компонентом многих СУБД является ядро, выполняющее следующие функции:

1. управление данными во внешней памяти;

2. управление буферами оперативной памяти (рабочими областями, в которые осуществляется подкачка данных из базы для повышения скорости работы);

3. управление транзакциями.

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

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

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

Управление транзакциями. Транзакция - в общем случае последовательность ряда таких операций, которые преобразуют некоторое непротиворечивое состояние базы данных в другое непротиворечивое состояние, но не гарантируют сохранения непротиворечивости во все промежуточные моменты времени. При выполнении транзакция может быть либо успешно завершена, и СУБД зафиксирует произведенные изменения во внешней памяти, либо, например, при сбое в аппаратной части ПК, ни одного из изменений не отразится на БД. Понятие транзакция необходимо для поддержания логической целостности БД. Таким образом, поддержание механизма транзакций является обязательным условием даже для однопользовательских СУБД. (Если такая система заслуживает названия СУБД). Но понятие транзакция гораздо более важно для многопользовательской СУБД. Каждая транзакция начинается при целостном состоянии БД и оставляет это состояние после своего завершения. Становится очень удобным использование понятия «транзакция» как единицы активности пользователя по отношению к БД. При соответствующем управлении транзакциями со стороны СУБД, каждый пользователь может, в принципе, ощущать себя единственным пользователем БД. С управлением транзакциями многопользовательской СУБД связаны важные понятия - «сериализация транзакций» и «сериальный план выполнения смеси транзакций». Под сериализацией выполнения понимают такой порядок планирования работ, при котором суммарный эффект смеси транзакций эквивалентен эффекту их некоторого последовательного управления. Сериальный план выполнения смеси транзакций это такой план, который приводит к сериализации транзакций. Если удается добиться действительного сериального выполнения смеси транзакции, то для каждого пользователя, по инициативе которого образованна транзакция, присутствие других транзакций будет незаметно (если не считать некоторого замедления работы по сравнению с однопользовательским режимом). Существует несколько базовых алгоритмов сериализации транзакций. В централизованных СУБД наиболее распространены алгоритмы, основанные на синхронизации захвата объектов БД. При использовании любого алгоритма возможна ситуация конфликта между двумя или более транзакциями по доступу к объекту БД. В этом случае для поддержания сериализации необходимо, выполнять откат одной ли более транзакции. Это один из случаев, когда пользователь многопользовательской СУБД может реально (и достаточно неприятно) ощутить присутствие в системе транзакции других пользователей.