Системы управления базами данных

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

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

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

• полнофункциональные СУБД;

• серверы БД;

• клиенты БД;

• средства разработки программ работы с БД.

Полнофункциональные СУБД (ПФСУБД) представляют собой традиционные СУБД, которые сначала появились для больших машин, затем для мини-машин и для-ПЭВМ. Из числа всех СУБД современные ПФСУБД являются наиболее много­численными и мощными по своим возможностям. К ПФСУБД относятся, например, такие пакеты как: Clarion Database Developer, DataBase, Dataplex, dBase IV, Microsoft Access, Microsoft FoxPro и Paradox R:BASE.

Обычно ПФСУБД имеют развитый интерфейс, позволяющий с помощью команд меню выполнять основные действия с БД: создавать и модифицировать структуры таблиц, вводить данные, формировать запросы, разрабатывать отчеты, выводить их на печать и т. п. Для создания запросов и отчетов не обязательно программирование, а удобно пользоваться языком QBE (Query By Example — формулировки запросов по образцу, см. подраздел 3.8). Многие ПФСУБД включают средства программирова­ния для профессиональных разработчиков.

Некоторые системы имеют в качестве вспомогательных и дополнительные средства проектирования схем БД или CASE-подсистемы. Для обеспечения доступа к другим БД или к данным SQL-серверов полнофункциональные СУБД имеют факультативные модули.

Серверы БД предназначены для организации центров обработки данных в сетях ЭВМ. Эта группа БД в настоящее время менее многочисленна, но их количество по­степенно растет. Серверы БД реализуют функции управления базами данных, запра­шиваемые другими (клиентскими) программами обычно с помощью операторов SQL.

Примерами серверов БД являются следующие программы: NetWare SQL (Novell), MS SQL Server (Microsoft), InterBase (Borland), SQLBase Server (Gupta), Intelligent Database (Ingress).

В роликлиентских программ для серверов БД в общем случае могут использо­ваться различные программы: ПФСУБД, электронные таблицы, текстовые процессо­ры, программы электронной почты и т. д. При этом элементы пары «клиент — сервер» могут принадлежать одному или разным производителям программного обеспечения.

В случае, когда клиентская и серверная части выполнены одной фирмой, естествен­но ожидать, что распределение функций между ними выполнено рационально. В ос­тальных случаях обычно преследуется цель обеспечения доступа к данным «любой ценой». Примером такого соединения является случай, когда одна из полнофункцио­нальных СУБД играет роль сервера, а вторая СУБД (другого производителя) — роль клиента. Так, для сервера БД SQL Server (Microsoft) в роли клиентских (фронталь­ных) программ могут выступать многие СУБД, такие как: dBASE IV, Biyth Software, Paradox, DataBase, Focus, 1-2-3, MDBS III, Revelation и другие.

Средства разработки программ работы с БД могут использоваться для созда­ния разновидностей следующих программ:

• клиентских программ;

• серверов БД и их отдельных компонентов;

• пользовательских приложений.

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

К средствам разработки пользовательских приложений относятся системы про­граммирования, например Clipper, разнообразные библиотеки программ для различных языков

программирования, а также пакеты автоматизации разработок (в том числе систем типа клиент-сервер). В числе наиболее распространенных можно назвать сле­дующие инструментальные системы: Delphi и Power Builder (Borland), Visual Basic (Microsoft), SILVERRUN (Computer Advisers Inc.), S-Designor (SDP и Powersoft) и ERwin (LogicWorks).

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

По характеру использования СУБД делят на персональные и многопользовательские.

Персональные СУБД обычно обеспечивают возможность создания персональных БД и недорогих приложений, работающих с ними. Персональные СУБД или разра­ботанные с их помощью приложения зачастую могут выступать в роли клиентской части многопользовательской СУБД. К персональным СУБД, например, относятся Visual FoxPro, Paradox, Clipper,dBase, Access и др.

МногопользовательскиеСУБД включают в себя сервер БД и клиентскую часть и, как правило, могут работать в неоднородной вычислительной среде (с разными типами ЭВМ и операционными системами). К многопользовательским СУБД отно­сятся, например, СУБД Oracle и Informix.

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

С точки зренияпользователя, СУБД реализуетфункции хранения, изменения (по­полнения, редактированияи удаления) и обработки информации, а также разработки и получения различныхвыходных документов.

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

язык описания данных — высокоуровневый непроцедурный язык декларатив­ного типа, предназначенный для описания логической структуры данных;

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

Названные языки в различных СУБД могут иметь отличия. Наибольшее распрост­ранение получили два стандартизованных языка: QBE (Query By Example) — язык зап­росов по образцу и SQL (Structured Query Language) — структурированный язык зап­росов. QBE в основном обладает свойствами языка манипулирования данными, SQL сочетает в себе свойства языков обоих типов — описания и манипулирования данными.

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

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

• управление буферами оперативной памяти;

• управление транзакциями;

• ведение журнала изменений в БД;

• обеспечение целостности и безопасности БД. Дадим краткую характеристику необходимости и особенностям реализации пере­численных функций в современных СУБД.

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

Необходимость буферизации данных и как следствие реализации функции управ­ления буферами оперативной памяти обусловлено тем, что объем оперативной памя­ти меньше объема внешней памяти.

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

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

Говорят, что транзакции присущи три основных свойства:

• атомарность (выполняются все входящие в транзакцию операции или ни одна);

• сериализуемость (отсутствует взаимное влияние выполняемых в одно и то же время транзакций);

• долговечность (даже крах системы не приводит к утрате результатов зафикси­рованной транзакции).

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

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

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

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

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

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

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

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