Основные функции субд
Более точно, к числу функций СУБД принято относить следующие:
Непосредственное управление данными во внешней памяти
Эта функция включает обеспечение необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например, для убыстрения доступа к данным в некоторых случаях (обычно для этого используются индексы). В некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа производится вплоть до уровня устройств внешней памяти. Но подчеркнем, что в развитых СУБД пользователи в любом случае не обязаны знать, использует ли СУБД файловую систему, и если использует, то как организованы файлы. В частности, СУБД поддерживает собственную систему именования объектов БД.
Управление буферами оперативной памяти
СУБД обычно работают с БД значительного размера; по крайней мере этот размер обычно существенно больше доступного объема оперативной памяти. Понятно, что если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственным способом реального увеличения этой скорости является буферизация данных в оперативной памяти. При этом, даже если операционная система производит общесистемную буферизацию (как в случае ОС UNIX), этого недостаточно для целей СУБД, которая располагает гораздо большей информацией о полезности буферизации той или иной части БД. Поэтому в развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов.
Заметим, что существует отдельное направление СУБД, которое ориентировано на постоянное присутствие в оперативной памяти всей БД. Это направление основывается на предположении, что в будущем объем оперативной памяти компьютеров будет настолько велик, что позволит не беспокоиться о буферизации. Пока эти работы находятся в стадии исследований.
Управление транзакциями
Транзакция - это последовательность операций над БД, переводящих ее из одного непротиворечивого состояния в другое непротиворечивое состояние и рассматриваемыми СУБД как единое целое.
Либо транзакция успешно выполняется, и СУБД фиксирует (COMMIT) изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. Таким образом, поддержание механизма транзакций является обязательным условием даже однопользовательских СУБД (если, конечно, такая система заслуживает названия СУБД). Но понятие транзакции гораздо более важно в многопользовательских СУБД.
Выполнение транзакций требует того, что часто называется ACID-свойствами (atomicity, consistency, isolation, durability — четыре основных требования к выполнению транзакций) транзакции.
• Атомарность (неделимость). Требуется, чтобы были, выполнены все операции в транзакции или не была выполнена ни одна из них. Например, изъятие денег из банкомата и внесение соответствующего дебета в счет клиента должны быть единственной атомарной транзакцией. Отдельное выполнение одной из этих операций не допускается.
• Непротиворечивость. Обычно БД характеризуется таким понятием, как непротиворечивое (целостное) состояние, при котором данные соответствуют всем возможным ожиданиям. Например, условие непротиворечивости для БД авиационных линий состоит в том, что ни одно из мест в самолете не бронируется для двух клиентов. Хотя это условие может ненадолго нарушаться в процессе транзакции, когда люди размещаются по местам, менеджер транзакций должен гарантировать, что после завершения транзакции БД будет удовлетворять всем предполагаемым требованиям непротиворечивости.
• Изоляция. При параллельном выполнении двух или более транзакций их результаты должны быть изолированы друг от друга. То есть, одновременное выполнение двух транзакций одновременно не должно привести к результату, которого не было бы, если бы они выполнялись последовательно. Например, когда агенты продают билеты на один и тот же рейс и остается единственное свободное место, запрос одного из них должен быть удовлетворен, а запрос другого отвергнут. Недопустимо, чтобы по причине параллельных операций одно место было продано дважды.
• Долговременность. Если транзакция завершена, ее результат не должен быть утрачен в результате сбоя системы, даже если этот сбой происходит немедленно после завершения транзакции.
То свойство, что каждая транзакция начинается при целостном состоянии БД и оставляет это состояние целостным после своего завершения, делает очень удобным использование понятия транзакции как единицы активности пользователя по отношению к БД.
При соответствующем управлении параллельно выполняющимися транзакциями со стороны СУБД каждый из пользователей может в принципе ощущать себя единственным пользователем СУБД (на самом деле, это несколько идеализированное представление, поскольку в некоторых случаях пользователи многопользовательских СУБД могут ощутить присутствие своих коллег).
