Функции СУБД
🕛 22.05.2009, 11:42
1. Управление данными во внешней памяти;2. управление буферами во внешней памяти:
буферизация состоит в том, чтобы сгладить разно скоростную работу между внешней и внутренней памятью.
При работе с БД СУБД может установить большую или меньшую актуальность каких-то данных. Наиболее актуальные данные могут всё время храниться в буфере. Эта функция повышает эффективность обработки данных.
3. управление транзакциями(transactions):
транзакция - последовательность операций над данными из БД, которая рассматривается СУБД как логическое единое целое. Под логическим единым целым понимается то, что СУБД фиксирует начало набора операций и его конец. Эта функция необходима, чтобы поддерживать целостность и логическую непротиворечивость данных, а также безопасное управление данными. Транзакция должна закончиться либо фиксацией нового состояния(commit), либо восстановлением предыдущего состояния(rollback). Существует возможность параллельного выполнения нескольких транзакций (но иногда это невозможно).
Сериальное выполнение транзакций - выполнение в соответствии с так называемым сериальным планом. Сериальный план - план выполнения транзакций, при котором эффект смеси транзакций эквивалентен их последовательному выполнению. Алгоритмы сериализации основаны на сериальных (синхронизационных) захватах. Цель таких захватов: построение сериального плана.
4. журнализация - ведение каких-то журналов:
существует два вида сбоев:
- мягкий, связанный с пропаданием питания, аварийной остановкой работы машины, сбоем ОС;
- жёсткий - характеризуется потерей информации на внешних носителях (авария HD).
При любом виде сбоев необходимо предусматривать восстановление информации. Это подразумевает хранение избыточной дополнительной информации. Такая информация, необходимая для восстановления, хранится в журналах. Журнал - это часть СУБД, которая недоступна пользователю, и которая поддерживается с особой тщательностью. Журнал хранится либо в нескольких копиях, либо на нескольких носителях. Журнал используется, чтобы фиксировать к нём все изменения, которые производятся над данными. С этой точки зрения можно рассмотреть две версии журнала:
- журнал локальных изменений - фиксирует отдельные операции, связанные с изменением страниц внешней памяти;
- журнал глобальных изменений - фиксирует результаты транзакций или транзакционных наборов.
При пользовании журналом используется стратегия упреждающей записи WAL(Write Ahead Log). Смысл этой стратегии состоит в том, чтобы сделать запись об изменениях прежде самих изменений.
При жёстком сбое нужна копия журнала и архивная копия БД, при этом архивная копия и журнал должны быть согласованы - это важная задача БД.
5. поддержка языков данных(Data Language)
существует две задачи информационных систем:
- описание структуры данных;
- манипулирование этими данными.
Раньше эти задачи решались с помощью языковых средств. Т.е. поддерживался язык описания данных SDL(Schema Definition Language) и язык манипулирования данными DML(Data Manipulation Language). В задачу SDL входило предоставление средств для именования объектов БД, типизации отдельных элементов и описания связей между элементами данных. DML поддерживает описание действий по изменению тех объектов, которые описаны на SDL.
В современных СУБД функции этих языков объединяются в структурированный язык запросов SQL(Structured Queried Language). Компилятор SQL производит преобразование описаний и запросов во внутреннее представление данных. Благодаря этому центральная управляющая часть СУБД работает только с внутренними представлениями, что обеспечивает эффективную работу.
SQL содержит:
- средства для описания ограничений целостности;
- средства для авторизации доступа к разным объектам:
суть состоит в том, что с каждым объектом связывается набор допустимых действий и круг пользователей, обладающих разными полномочиями. Полномочия и действия описываются в разных таблицах. Языковое средство позволяет контролировать это.
Типовая организация СУБД
Исходя из пяти функций, в современных СУБД можно наметить следующие части:
- внутренняя часть СУБД - ядро DBE(Data Base Engine)
ядро реализует следующие функции:1,2,3,4;
- компилятор языка данных(SQL)
задача компилятора: преобразование языковых конструкций в выполняемую программу. Основная проблема: языки данных являются непроцедурными языками, т.е. они не описывают механизм обработки данных, а описывают те результаты, которые должны получиться;
- подсистема поддержки времени выполнения(Run Time) - это подсистема, которая управляет данными во время обработки скомпилированных и сгенерированных процедур, потому что в этот момент представление данных отличается от того, которое поддерживается на уровне ядра. Задача этой части СУБД состоит в том, чтобы поддерживать соответствие между верхним и нижнем уровнем;
- набор утилит
к ним относятся:
процедуры относительно редкие, но настолько объёмные, что … - это загрузка и выгрузка БД, сбор статистики (проверка глобальной целостности данных, архивирование). Утилиты программируются с использованием функций ядра и с проникновением внутрь ядра.