girniy.ru |
1
Системы управления базами данных 1. Понятие системы управления базами данных 1 2. Основные функции СУБД 1 2.1. Непосредственное управление данными во внешней памяти 1 2.2. Управление буферами оперативной памяти 1 2.3. Управление транзакциями 1 2.4. Журнализация 2 2.5. Поддержка языков БД 2 3. Состав СУБД 3 3.1. Ядро СУБД 3 3.2. Компилятор языка БД и подсистема поддержки времени выполнения 3 3.3. Утилиты БД 3 4. Обзор возможностей и особенностей различных СУБД 4 4.1. Access 4 4.2. Visual FoxPro 5 4.3. SQL Server 6 5. Локальные и удаленные базы данных 6 5.1 Локальная база данных 6 5.2. Удаленная база данных 6 5.3. Обработка данных по технологии клиент-сервер 7 6. Язык запросов SQL 7 6.1. Состав языка SQL 8 6.2. Примеры применения операторов языка SQL 9 7. Современные технологии разработки СУБД (CASE-технологии) 10 1. Понятие системы управления базами данныхОсновная особенность СУБД – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, стали называть банки данных, а затем «Базы данных» (БД). База данных – это интегрированная совокупность данных, предназначенных для многофункционального использования и модификации одним или несколькими пользователями. Под управлением данными понимается весь круг операций с данными входящими в БД, необходимых для решения поставленных задач и выдачи их результатов в удобном для пользователя виде. Под системой управления базами данных (СУБД) понимается комплекс программных средств, позволяющий осуществлять управление данными БД одному или нескольким пользователям. Не решая непосредственно никакой прикладной задачи, СУБД является инструментом для разработки прикладных программ и поддержания БД. 2. Основные функции СУБДК числу функций СУБД принято относить следующие: 2.1. Непосредственное управление данными во внешней памятиЭта функция включает обеспечение необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например, для убыстрения доступа к данным в некоторых случаях. В некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа производится вплоть до уровня устройств внешней памяти. 2.2. Управление буферами оперативной памятиСУБД обычно работают с БД значительного размера; по крайней мере, этот размер обычно существенно больше доступного объема оперативной памяти. Понятно, что если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственным способом реального увеличения этой скорости является буферизация данных в оперативной памяти. При этом даже если операционная система производит общесистемную буферизацию (как в случае ОС UNIX), этого недостаточно для целей СУБД, которая располагает гораздо большей информацией о полезности буферизации той или иной части БД. Поэтому в развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов. 2.3. Управление транзакциямиТранзакция – это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. (Например, в информационной системе с файлами СТУДЕНТЫ и ГРУППЫ единственным способом не нарушить целостность БД при выполнении операции перевода в группу нового студента является объединение элементарных операций над файлами СТУДЕНТЫ и ГРУППЫ в одну транзакцию.)
2.4. ЖурнализацияОдним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Обычно рассматриваются два возможных вида аппаратных сбоев: так называемые мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера (например, аварийное выключение питания), и жесткие сбои, характеризуемые потерей информации на носителях внешней памяти. В любом случае для восстановления БД нужно располагать некоторой дополнительной информацией. Другими словами, поддержание надежности хранения данных в БД требует избыточности хранения данных, причем та часть данных, которая используется для восстановления, должна храниться особо надежно. Наиболее распространенным методом поддержания такой избыточной информации является ведение журнала изменений БД. Журнал – это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД. Во всех случаях придерживаются стратегии «упреждающей» записи в журнал (так называемого протокола Write Ahead Log – WAL). Эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. 2.5. Поддержка языков БДДля работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка – язык определения схемы БД (SDL – Schema Definition Language) и язык манипулирования данными (DML – Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language). Перечислим некоторые функции реляционной СУБД, поддерживаемые на «языковом» уровне (т.е. функции, поддерживаемые при реализации интерфейса SQL). Прежде всего, язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом именование объектов БД (для реляционной БД – именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. Внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов. Язык SQL содержит специальные средства определения ограничений целостности БД. Ограничения целостности хранятся в специальных таблицах-каталогах, и обеспечение контроля целостности БД производится на языковом уровне.
3. Состав СУБДЕстественно, организация типичной СУБД и состав ее компонентов соответствует рассмотренному нами набору функций. Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть – ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других – нет, но логически такое разделение можно провести во всех СУБД. 3.1. Ядро СУБДЯдро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно, можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ) и утилитах БД. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры «клиент-сервер» ядро является основной составляющей серверной части системы.3.2. Компилятор языка БД и подсистема поддержки времени выполненияОсновной функцией компилятора языка БД является компиляция операторов языка БД в некоторую выполняемую программу. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка. 3.3. Утилиты БДНаконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра. 4. Обзор возможностей и особенностей различных СУБДРассмотрим средства разработки, которые предлагает Microsoft. Эта компания в настоящий момент предлагает несколько программных продуктов семейства СУБД: Access, SQL Server, Visual FoxPro. Эти средства могут быть использованы, так по отдельности – для решения конкретно поставленной задачи, как и в качестве интегрированного набора. Основные характеристики продуктов приведены в следующей таблице.
Рассмотрим названные СУБД. 4.1. AccessMicrosoft Access – одна из самых популярных настольных СУБД, рассчитанная как на начинающего, так и на квалифицированного пользователя. Главное качество Access, которое привлекает к нему многих пользователей, – тесная интеграция с Microsoft Office. В отличие от других рассматриваемых средств разработки, СУБД Access имеет русифицированный интерфейс и частично переведенный на русский язык файл контекстной помощи. СУБД Access для работы с данными использует процессор баз данных Microsoft Jet, объекты доступа к данным и средства быстрого построения интерфейса – Конструктор форм. Для получения распечаток используются Конструкторы отчетов. Автоматизация рутинных операций может быть выполнена с помощью макрокоманд. Access из всех рассматриваемых средств разработки имеет, пожалуй, самый богатый набор визуальных средств. Если функциональность визуальных средств оказывается недостаточной, пользователи Access могут обратиться к созданию процедур и функций на языке программирования Visual Basic for Application. Можно целиком создавать базы данных с помощью кодирования, когда в этом появляется необходимость.
4.2. Visual FoxProVisual FoxPro – одна из наиболее быстрых СУБД для персональных компьютеров. Интерфейс Visual FoxPro отвечает представлениям о современной графической среде и напоминает интерфейс прочих программ Microsoft. Основная работа с данными выполняется с помощью различных инструментальных средств, поэтому команды меню часто имеют вспомогательный характер и их состав гибко меняется в зависимости от того, какое средство активно в данный момент.
4.3. SQL ServerMicrosoft SQL Server 6.5 – одна из наиболее мощных СУБД архитектуры клиент-сервер. Эта СУБД позволяет удовлетворять такие требования, предъявляемые к системам распределенной обработке данных, как тиражирование данных, параллельная обработка, поддержка больших баз данных на относительно не дорогих аппаратных платформах при сохранении несмежного управления. MS SQL Server представляет собой систему плохо сравнимую с рассмотренными выше СУБД. Он не предназначен непосредственно для разработки пользовательских приложений, а выполняет функции управления базой данных. Для пользовательского приложения SQL Server является мощным источником генерации и управления нужными данными. 5. Локальные и удаленные базы данныхВ зависимости от расположения программы, использующей данные, и самих данных, а также способа разделения данных между несколькими пользователями различают локальные и удаленные базы данных. 5.1 Локальная база данныхДанные локальной базы данных (файлы данных) находятся на одном (локальном) устройстве, в качестве которого может выступать диск компьютера или сетевой диск (диск другого компьютера, работающего в сети). Для обеспечения разделения данных (доступа к данным) между несколькими пользователями, в качестве которых выступают программы, работающие на одном или нескольких компьютерах, в локальных базах данных применяется метод, получивший название блокировка файлов. Суть этого метода заключается в том, что пока данные используются одним пользователем, другой пользователь не может работать с этими данными, т. е. данные для него закрыты, заблокированы.
5.2. Удаленная база данныхДанные (файлы) удаленной базы данных находятся на удаленном компьютере. (Следует обратить внимание, что каталоги удаленного компьютера не могут рассматриваться как сетевые диски.) Программа работы с удаленной базой данных состоит из двух частей: клиентской и серверной. Клиентская часть программы, работающая на компьютере пользователя, обеспечивает взаимодействие с серверной программой: посредством запросов, передаваемых на удаленный компьютер, предоставляет доступ к данным. Серверная часть программы, работающая на удаленном компьютере, принимает запросы, выполняет их и пересылает данные клиентской программе. Запросы представляют собой команды, представленные на языке SQL. Программа, работающая на удаленном сервере, проектируется таким образом, чтобы обеспечить одновременный доступ к информации нескольким пользователям. При этом для обеспечения доступа к данным вместо механизма блокировки файлов используют механизм транзакций. 5.3. Обработка данных по технологии клиент-серверТехнология клиент-сервер является реализацией распределенной обработки данных. В системе архитектуры клиент-сервер обработка данных разделена между компьютером-клиентом и компьютером-сервером, связь между которыми происходит по сети. Это разделение процессов обработки данных основано на группировании функций. Как правило, компьютер-сервер баз данных выделяется для выполнения операций с базами данных, а компьютер-клиент выполняет прикладные программы. Каждая машина выполняет различные функции и имеет свои собственные ресурсы. Основная функция компьютера-клиента состоит в выполнении приложения (интерфейса с пользователем и логики представления) и осуществлении связи с сервером, когда этого требует приложение. Параметры компьютера-клиента, характеристики оперативной и дисковой памяти, другого оборудования, выбор операционной системы определяется требованиями приложения.
6. Язык запросов SQLSQL (Structured Query Language – структурированный язык запросов) – язык программирования, который используется при работе с реляционными базами данных в большинстве современных СУБД (Access, Paradox, ORACLE и др.). 6.1. Состав языка SQLЯзык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде. Поэтому, в язык SQL в качестве составных частей входят:
Подчеркнем, что это не отдельные языки, а модули, содержащие различные команды одного языка. Язык манипулирования данными используется, как это следует из его названия, для манипулирования данными в таблицах баз данных. Он включает 4 основных команды:
Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей: таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и процедур. Основными его командами являются:
Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать «язык управления доступом». Он состоит из двух основных команд:
Мы не будем приводить точный синтаксис команд SQL (который приводится в документации конкретной СУБД), а приведем примеры использования. 6.2. Примеры применения операторов языка SQLСоздание таблицы: CREATE TABLE Students (Номер INTEGER, Имя TEXT, Фамилия TEXT, [Дата рождения] DATETIME ); Будет создана таблица Students, в составе которой одно числовое поле – Номер; два текстовых поля – Имя и Фамилия; одно поле типа дата/время – Дата рождения. Изменение структуры таблицы: ALTER TABLE Students ADD COLUMN [Наличие стипендии] LOGICAL; В имеющуюся таблицу Students будет добавлено новое поле Наличие стипендии логического типа. Ввод данных в таблицу: INSERT INTO Students (Номер, Имя, Фамилия, [Дата рождения])
7. Современные технологии разработки СУБД (CASE-технологии)Средства CASE-технологии относительно новое, сформировавшееся на рубеже 80-х гг. направление. Термин CASE (Computer Aided Software Engineering) используется в настоящее время в весьма широком смысле. Первоначальное значение термина CASE, ограниченное вопросами автоматизации разработки только лишь программного обеспечения (ПО), в настоящее время приобрело новый смысл, охватывающий процесс разработки сложных информационных систем (ИС) в целом. Теперь под термином CASE-технологии понимаются программные средства, поддерживающие процессы создания и сопровождения ИС, включая анализ и формулировку требований, проектирование прикладного ПО (приложений) и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом, а также другие процессы.
Средства CASE-технологии делятся на две группы:
Приведем примеры CASE-средств. ERwin – средство концептуального моделирования БД, реализующее проектирование схемы БД, генерацию ее описания на языке целевой СУБД (ORACLE, Informix, Ingres, Sybase, DB/2, Microsoft SQL Server, Progress и др.) и реинжиниринг существующей БД. ERwin выпускается в нескольких различных конфигурациях, ориентированных на наиболее распространенные средства разработки приложений.
Uniface 6.1 – продукт фирмы Compuware (США) – представляет собой среду разработки крупномасштабных приложений в архитектуре «клиент-сервер». В список поддерживаемых СУБД входят DB2, VSAM и IMS; среда функционирования – все основные UNIX–платформы и MS Windows. CASE-средство Designer/2000 2.0 фирмы ORACLE является интегрированным CASE-средством, обеспечивающим в совокупности со средствами разработки приложений Developer/2000 поддержку полного жизненного цикла ПО для систем, использующих СУБД ORACLE. |