Основные функции СУБД

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

Управление данными

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

Управление буферами ОЗУ

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

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

Управление транзакциями

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

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

Что они означают?

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

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

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

Журнализация

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

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

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

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

Что это и как используется?

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

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

Откат

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

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

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

Жесткие сбои

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

Поддержка языков

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

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

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

Что он собой представляет?

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

Язык SQL включает в себя целый перечень специальных средств, позволяющих определить ограничения целостности базы данных. Опять же, любые такие ограничения включаются в специальные таблицы-каталоги, и контроль целостности осуществляется непосредственно на языковом уровне, то есть в процессе считывания отдельных операторов модификации БД компилятор, основываясь на имеющихся в базе ограничениях целостности, проводит генерирование соответствующего программного кода.

Комментарии