Языковые и программные средства субд. Систем управления базами данных

Рис. 1.4. Структура СУБД

Контроллер словаря – обеспечивает доступ к системному каталогу и работу с ним.

Контроллер файлов – манипулирует фалами с данными и отвечает за распределение дискового пространства. Он не управляет физическим вводом/выводом, а передает запросы соответствующим методам доступа ОС.

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

· контроль прав доступа – проверяет наличие у данного пользователя полномочий на выполнения затребованной операции;

· процессор команд – выполняет запрос;

· средства контроля целостности – осуществляют проверку ограничений поддержки целостности при выполнении операций изменения данных;

· оптимизатор запросов – определяет оптимальную стратегию выполнения запроса;

· контроллер транзакций – осуществляет обработку операций, поступающих в процессе транзакции;

· планировщик – отвечает за бесконфликтное выполнение параллельных операций с БД и управляет относительным порядком выполнения операций, определенным в разных транзакциях;

· контроллер восстановления – отвечает за восстановление БД при сбоях до непротиворечивого состояния;

· контроллер буфера – отвечает за перенос данных между ОП и жестким диском.

Многие СУБД поддерживают возможность внедрения собственных операторов в языки высокого уровня (COBOL, Fortran, Pascal, Ada, C). Но в СУБД поддерживается 2 специализированных языка для разработки приложений с БД – ЯОД (DDL – Data Definition Language) и ЯМД (DMD – Data Manipulation Language). ЯОД – описательный язык для определения логической схемы БД. Он состоит из набора операторов, задающих определение схемы БД. Результатом компиляции таких описаний (концептуальной и внешних схем) является набор таблиц, хранимый в специальном системном каталоге БД. (Он хранит метатданные). ЯОД не используется для работы с данными. Для этого используется ЯМД , который содержит набор операторов, выполняющих обработку данных: поиск, добавление, изменение и удаление. Поддержка ЯМД – одна из основных функций СУБД. Различают 2 подхода к реализации ЯМД: процедурный и декларативный.

При использовании процедурного ЯМД пользователь определяет последовательность действий, которые необходимо выполнить, чтобы получить требуемый результат. Этот поход аналогичен тому, как реализованы процедурные языки программирования (Pascal, C и др.). ЯМД в этом случае предоставляет пользователю набор операторов над данными. К этому типу относятся языки, основанные на реляционной алгебре.

Декларативные ЯМД позволяют определить весь требования к результирующим данным с помощью одного оператора. В этом случае нет необходимости знать детали внутренней реализации структур данных и особенности алгоритмов, используемых для их извлечения. К этому типу относятся языки, основанные на реляционном исчислении SQL и QBE. SQL (Structured Query Language) основан на реляционном исчислении и поддерживается всеми реляционными СУБД. Для него определен международный стандарт. QBE (Query By Example) – простой язык с графическим интерфейсом, который позволяет формулировать запрос непрофессиональным пользователям (напр., в СУБД Access).

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

  • экранных форм – для создания шаблонов ввода данных;
  • отчетов;
  • графического представления данных в виде диаграмм;
  • приложений для создания программ обработки данных.

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных . В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Мы рассмотрим более подробно языки ранних СУБД в следующей лекции.

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

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

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

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

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

Языковые и программные средства СУБД

Понятие и классификация СУБД

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

По степени универсальности различают два класса СУБД:

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

специализированные системы, функционирующие на некоторой модели ЭВМ в определенной операционной системе и имеют средства настройки на работу с БД в конкретной предметной области.

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

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

По мощности выделяют настольные и корпоративные СУБД. Настольные системы (Access, FoxPro, Paradox) ориентированы на конечных пользователей (специалистов в конкретной предметной области). Они не предъявляют высоких требований к техническим средствам, отличаются низкой стоимостью. Корпоративные СУБД (Oracle, SyBase, DB2) обеспечивают работу в распределенной среде, имеют высокую производительность, развитые средства администрирования и более широкие возможности поддержания целостности. СУБД MS SQL Server, Interbase имеют возможности и настольных и корпоративных систем.

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

Языковые и программные средства СУБД

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

– описания представления БД;

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

– управления БД.

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

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

В настоящее время имеются многочисленные примеры языков СУБД, объединяющих возможности описания данных и манипулирования данными в единых синтаксических рамках. Единый интегрированный язык современных СУБД содержит все необходимые средства для работы с базой данных, начиная от ее создания, и обеспечивает пользовательский интерфейс с БД. Наиболее популярным и стандартным для реляционных СУБД является язык SQL (Structured Query Language - язык структурируемых запросов), разработанный фирмой IBM. Для поддержки объектных моделей предназначен язык OQL (Object Query Language), в основу которого положен SQL.

Примерами других языков этого класса могут служить: Quel системы Ingres, созданный Калифорнийским университетом; dBase семейства СУБД фирмы Asthon – Tate; R:Base фирмы Microrim.

Процедурным языком, при помощи которого осуществляется управление базой данных, является языкQBE (Query-By-Example) . Этот язык предоставляет пользователю удобный и унифицированный интерфейс для осуществления операций по ведению БД.

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

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

Модули представляют собой процедуры на языке Visual Basic for Application (VBA).

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

В Web-программировании активно используется СУБД MySQL. Для работы с БД этой системы применяют язык программирования PHP. Это Си-подобный язык, предназначенный для быстрого создания программ на Web-сервере.

На языке PHP разрабатываются скрипты (scripting language) – кодовые (программные) инструкции по выполнению определенных действий над данными, выбранными из БД. Скрипты вставляются в HTML-документы, преобразуя их из статических в активные. Web-сервер просматривает документ, выполняет найденные в нем PHP-инструкции и результат выполнения инструкций возвращает пользователю.

С помощью PHP можно обрабатывать данные из форм, генерировать динамические страницы, создавать счетчики, гостевые книги и т.д. В PHP включена поддержка многих баз данных: FilePro, Informix, MySQL, Oracle, Sybase и др.

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

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

· управление данными во внешней памяти (на дисках);

· управление данными в оперативной памяти с использованием дискового кэша;

· журнализация изменений, резервное копирование и восстановление базы данных после сбоев;

· поддержка языков БД (язык определения данных, язык манипулирования данными).

Обычно современная СУБД содержит следующие компоненты:

· ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию;

· процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода;

· подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД;

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

Классификация СУБД.

По модели данных:

· Иерархические;

· Сетевые;

· Реляционные;

· Объектно-реляционные;

· Объектно-ориентированные.

По архитектуре организации хранения данных:

· локальные СУБД (все части локальной СУБД размещаются на одном компьютере);

· распределенные СУБД (части СУБД могут размещаться на двух и более компьютерах).

По способу доступа к БД:

· Файл-серверные.

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

Примеры: Microsoft Access, Borland Paradox.

· Клиент-серверные.

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

Примеры: Firebird, Interbase, MS SQL Server, Sybase, Oracle, PostgreSQL, MySQL, ЛИНТЕР.

· Встраиваемые.

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

Примеры: OpenEdge, SQLite, BerkeleyDB, один из вариантов Firebird, один из вариантов MySQL, Sav Zigzag, Microsoft SQL Server Compact, ЛИНТЕР.

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

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.

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

Основные функции реляционной СУБД, поддерживаемые при реализации интерфейса SQL):

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

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

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

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