Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Типовая организация современной СУБД.




 

Организация типичной СУБД и состав ее компонентов соответ­ствует набору функций. Логически в современной СУБД можно выделить внутреннюю часть — ядро СУБД (Data Base Engine), ком­пилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит.

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

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

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

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

 

Языковые средства систем управления

Базами данных

 

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

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

для высококвалифицированных пользователей языковые сред­ства представляются в их явной синтаксической форме;

в других случаях функции языков могут быть доступны косвен­ным образом, когда они реализуются в форме различного рода меню, диалоговых сценариев или заполняемых пользователем таблиц. По таким входным данным интерфейсные средства формируют адекват­ные синтаксические конструкции языка интерфейса и передают их на исполнение или включают в генерируемый код языка приложе­ния. Интерфейсы с неявным использованием языка широко исполь­зуются в СУБД для персональных ЭВМ. В этом случае используется (для реляционных СУБД), например, табличный язык Query-By-Example (QBE), разработанный М.Злуфом.

Языковые средства используются для выполнения двух основ­ных функций:

для описания представления базы данных на управляемых уров­нях архитектуры системы;

для инициирования выполнения операций манипулирования данными.

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

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

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

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

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

В настоящее время имеются многочисленные примеры языков СУБД, объединяющих возможности описания данных и манипули­рования данными в единых синтаксических рамках. Более того, в современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с ба­зой данных, начиная от'ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Наиболее популяр­ным и стандартным для реляционных СУБД является язык SQL (Structured Query Language), разработанный фирмой IBM и реализо­ванный в реляционной СУБД System R, а впоследствии и в коммер­ческой системе DB2. Другим примером языков этого класса могут служить: язык Quel системы Ingres, созданный Калифорнийским университетом, языковые средства большинства СУБД для персо­нальных ЭВМ, например язык dBase семейства СУБД фирмы Asthon-Tate и многочисленных совместимых с ним систем, язык СУБД: R:Base фирмы Microrim.

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

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

Как уже отмечалось, конечные пользователи информационной системы разделяются на две категории — прямые и косвенные. Те, кто относится к группе прямых пользователей, в отличие от косвен­ных, самостоятельно без посредников общается с ЭВМ. Они способ­ны разрабатывать новые приложения.

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

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

Изучение простейших возможностей языков конечных пользо­вателей не требует больших затрат времени. Такой уровень подготов­ки (обычно 1—3 дня) позволит пользователю разрабатывать неслож­ные приложения.

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

Процедурный язык, при помощи которого осуществляется уп­равление базой данных, называют языком управления данными.

 

Язык QBE

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

Для пользователя решение основных задач производится через таблицу-шаблон, связанную с реальной БД.

Важно, что для выполнения действий над базой пользователю достаточно обладать элементарным запасом языковых средств, что­бы понимать и использовать возможности всего языка. Синтаксис языка прост, тем не менее охватывает широкий спектр сложных опе­раций. Это достигается за счет использования одинаковых операций для извлечения, манипулирования, определения и контроля данных. Операции языка «подражают» ручному манипулированию таблица­ми, сохраняя при этом все требования реляционной модели. Форми­рование операций должно следовать процессу рассуждений пользо­вателя, предоставляя тем самым свободу при их построении. Архи­тектура языка QBE направлена на удовлетворение сформулирован­ных требований.

 

Язык SQL

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

Его появление и развитие как средства описания доступа к БД связано с созданием теории реляционных БД. Прообраз языка воз­ник в 1970 г. в лаборатории Санта-Тереза фирмы IBM в рамках научно-исследовательского проекта System/R. Сегодня - это фактичес­кий стандарт интерфейса с современными СУБД. Популярность его настолько велика, что разработчики нереляционных СУБД (напри­мер, ADABAS), снабжают свои системы SQL-интерфейсом.

Язык SQL имеет официальный стандарт - ANSI/ISO. Большин­ство разработчиков придерживаются этого стандарта, однако часто расширяют его для реализации новых возможностей обработки дан­ных.

SQL не является языком программирования в традиционном представлении. На нем пишутся не программы, а запросы к базе данных. Поэтому это язык декларативный. Это означает, что с его помощью можно сформулировать, что необходимо получить, однако нельзя указать, как это следует сделать. В частности, в отличие от процедурных языков программирования (Си, Паскаль), в языке SQL отсутствуют такие операторы, как if/then/else.

Запрос в языке SQL состоит из одного или нескольких операто­ров, следующих один за другим и разделенных точкой с запятой. Наиболее важные выделены в стандарте ANSI/ISO SQL.

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

Повторяем, что SQL — это язык запросов, поэтому на нем невоз­можно написать достаточно сложные прикладные программы, кото­рые работают с базой данных. Для этой цели в современных СУБД используют язык четвертого поколения (FGL — Forth Generation Language), обладающий основными возможностями процедурных языков третьего поколения (Си, Паскаль), возможностью встроить текст программы оператора SQL, и средствами управления интер­фейсом пользователя (формами, меню, вводом пользователя и т.д.). Сегодня - FGL - это один из фактических стандартов разработки приложений, работающих с БД.

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

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

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

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...