Автор работы: Пользователь скрыл имя, 21 Января 2015 в 12:18, курс лекций
Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
Основные функции СУБД:
управление данными во внешней памяти (на дисках);
управление данными в оперативной памяти;
Во-вторых, использование памяти и процессора при выполнении "тяжелых" запросов. Если мы запускаем какой-то очень интенсивно работающий с базой запрос, то он выполняется в рамках одного серверного процесса, обслуживающего данного клиента, не останавливая при этом остальные. Приоритет "тяжелого" запроса (фактически процесса) падает по мере увеличения времени использования им ресурсов процессора и он начинает "уступать дорогу" более приоритетным процессам других соединений, выполняющим короткие запросы, т. е. процессор занят на 90%, но на долю "долгожителя" приходится 80-70-60- 50-40 %... Он замедляет остальные, это заметно, но терпимо, и главное - у пользователя не возникает ощущения "подвешенности".
Вот где недостаток "избыточность" перетекает в преимущество "нагрузочная способность". Как бы то ни было, архитектура Classic значительно лучше SuperServer справляется с тяжелыми запросами при одновременном обслуживании нескольких клиентов и более корректно реализует вытесняющую многозадачность, что позволяет эффективнее справляться с запросами-"тяжеловесами".
Все данные, которые пользователи "помещают" в базу, используя любой инструмент из множества применяемых для этой цепи "складируются" сервером в некую сущность - баз данных. Обычно под базой данных понимается и сам сервер СУБД, и пользовательская информация, и даже клиентские программы, которые работают с данными. Мы будем понимать под базой данных совершенно конкретную вещь - файлы базы данных.
База данных InterBase представляет собой один или несколько файлов, в которых находится информация обо всем, что связано с этой базой. Исключение составляет информация о пользователях, поскольку пользователи определяются на уровне всего сервера и хранятся отдельно, в системной базе данных ISC4.GDB(Security.fdb). Внутри файлов базы данных содержится вся информация о базе: сами данные, индексы, триггеры, хранимые процедуры и т. д.
База данных InterBase для среднего проекта представляет собой один файл, так как ограничение в 32 Гбайта на размер одного файла базы данных позволяет держать все данные в одном файле (версии ниже InterBase 6.5, Firebird 1.0 и Yaffil 1.0 имеют ограничение в 2-4 Гбайт, в зависимости от ОС). 32 гигабайт вполне хватает для хранения информации приложения баз данных среднего размера. Но при необходимости можно разбить базу данных на несколько файлов. Известны базы данных InterBase размером в сотни гигабайт.
GDB(FDB) - это расширение, которое рекомендуют использовав для файлов баз данных InterBase(FireBird). Первое, что нужно сказать о строении GDB-файла, - это то, что он представляет собой набор страниц жестко определенного размера. Размер файла базы данных кратен размеру страницы, который неизменен для всех файлов данной базы данных. Разные версии InterBase поддерживают различные размеры страниц, что отражено в таблице 1. Размер страницы задается при создании базы данных и не может быть изменен в течение ее жизненного цикла, т. е. изменить размер страницы возможно только при создании базы из резервной копии (restore).
Таблица 1. Размер страницы, поддерживаемый различными версиями
Версия InterBase |
Размер страницы, байт | ||||
1024 |
2048 |
4096 |
8192 |
16384 | |
InterBase 4 |
* |
* |
* |
* |
|
InterBase 5.x |
* |
* |
* |
* |
|
InterBase 6.0x |
* |
* |
* |
* |
|
Firebird Ix/Yaffl 1.x /InterBase 6.5 ивыше |
* |
* |
* |
* |
* |
Чтение и запись данных в базе данных осуществляется постранично, и многие важные характеристики базы данных и сервера, такие, например, как размер буфера базы данных (Database cache), зависят от размера страницы и исчисляются в "страницах".
Лекция 2.Описание данных на основе SQL
SQL
(Structured Query Language) — Структурированный Язык
Запросов — стандартный язык запросов по работе
с реляционнымиБД.
Язык SQL появился после реляционной
алгебры, и его прототип был разработан
в конце 70-х годов в компании IBM Research.
Он был реализован в первом прототипе
реляционной СУБД фирмы IBM Sys
Первый международный стандарт языка SQL был принят в 1989 г. (далее мы будем называть его SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO, и подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако развитие информационных технологий, связанных с базами данных, и необходимость реализации переносимых приложений потребовали в скором времени доработки и расширения первого стандарта SQL.
В конце 1992 г. был принят новый международный стандарт языка SQL, который в дальнейшим будем называть SQL/92 или SQL2. И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД внесли изменения в свои продукты так, чтобы они в большей степени удовлетворяли стандарту SQL2.
В 1999 году появился новый стандарт, названный SQL3. Если отличия между стандартами SQL1 и SQL2 во многом были количественными, то стандарт SQL3 соответствует качественным серьезным преобразованиям. В SQL3 введены новые типы данных, при этом предполагается возможность задания сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации. Наконец, добавлен раздел, который вводит стандарты на события и триггеры, которые ранее не затрагивались в стандартах, хотя давно уже широко использовались в коммерческих СУБД. В стандарте определены возможности четкой спецификации триггеров как совокупности события и действия. В качестве действия могут выступать не только последовательность операторов SQL, но и операторы управления ходом выполнения программы. В рамках управления транзакциями произошел возврат к старой модели транзакций, допускающей точки сохранения ( savepoints ), и возможность указания в операторе отката ROLLBACK точек возврата позволит откатывать транзакцию не в начало, а в промежуточную ранее сохраненную точку. Такое решение повышает гибкость реализации сложных алгоритмов обработки информации.
А зачем вообще
нужны эти стандарты? Зачем их изобретают
и почему надо изучать их? Текст стандарта SQL2 занимает
600 станиц сухого формального текста, это
очень много, и кажется, что это просто
происки разработчиков стандартов, а не
то, что необходимо рядовым разработчикам.
Однако ни один серьезный разработчик,
работающий с базами данных, не должен
игнорировать стандарт, и для этого существуют
весьма веские причины. Разработка любой
информационной системы, ориентированной
на технологию баз данных (а других информационных
систем на настоящий момент и не бывает),
является трудоемким процессом, занимающим
несколько десятков и даже сотен человеко-месяцев.
Следует отдавать себе отчет, что нельзя
разработать сколько-нибудь серьезную
систему за несколько дней. Кроме того,
развитие вычислительной техники, систем
телекоммуникаций и программного обеспечения
столь стремительно, что проект может
устареть еще до момента внедрения. Но
развивается не только вычислительная
техника, изменяются и реальные объекты,
поведение которых моделируется использованием
как самой БД, так и процедур обработки
информации в ней, то есть конкретных приложений,
которые составляют реальное наполнение
разрабатываемой информационной системы.
Именно поэтому проект информационной
системы должен быть рассчитан на расширяемость и переносимос
Для поставщиков СУБД стандарт — это путеводная звезда, которая гарантирует правильное направление работ. А вотэффективность реализации стандарта — это гарантия успеха.
SQL нельзя
в полной мере отнести к традиционным
языкам программирования, он не содержит
традиционные операторы,управля
В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие Data Definition Language (DDL) — языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления (администрирования ) БД.
SQL содержит разделы, представленные в табл. 5.1:
Таблица 5.1. Операторы определения данных DDL | ||||
Оператор |
Смысл |
Действие | ||
CREATETABLE |
Создать таблицу |
Создает новую таблицу в БД | ||
DROPTABLE |
Удалить таблицу |
Удаляет таблицу из БД | ||
ALTERTABLE |
Изменить таблицу |
Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы | ||
CREATEVIEW |
Создать представление |
Создает виртуальную таблицу, соответствующую некоторому SQL-запросу | ||
ALTERVIEW |
Изменить представление |
Изменяет ранее созданное представление | ||
DROP VIEW |
Удалить представление |
Удаляет ранее созданное представление | ||
CREATEINDEX |
Создать индекс |
Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс | ||
DROPINDEX |
Удалить индекс |
Удаляет ранее созданный индекс | ||
Таблица 5.2. Операторы манипулирования данными Data Manipulation Lanquaqe (DML) | ||||
Оператор |
Смысл |
Действие | ||
DELETE |
Удалить строки |
Удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. Применение оператора согласуется с принципами поддержки целостности, поэтому этот оператор не всегда может быть выполнен корректно, даже если синтаксически он записан правильно | ||
INSERT |
Вставить строку |
Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу | ||
UPDATE |
Обновить строку |
Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации |
Таблица 5.3. Язык запросов Data Query Lanquaqe (DQL) | ||||
Оператор |
Смысл |
Действие | ||
SELECT |
Выбрать строки |
Оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу | ||
Таблица 5.4. Средства управления транзакциями | ||||
Оператор |
Смысл |
Действие | ||
COMMIT |
Завершить транзакцию |
Завершить комплексную взаимосвязанную обработку информации, объединенную в транзакцию | ||
ROLLBACK |
Откатить транзакцию |
Отменить изменения, проведенные в ходе выполнения транзакции | ||
SAVEPOINT |
Сохранить промежуточную точку выполнения транзакции |
Сохранить промежуточное состояние БД, пометить его для того, чтобы можно было в дальнейшем к нему вернуться |
Таблица 5.5. Средства администрирования данных | ||||
Оператор |
Смысл |
Действие | ||
ALTERDATABASE |
Изменить БД |
Изменить набор основных объектов в базе данных, ограничений, касающихся всей базы данных | ||
ALTERDBAREA |
Изменить область хранения БД |
Изменить ранее созданную область хранения | ||
ALTERPASSWORD |
Изменить пароль |
Изменить пароль для всей базы данных | ||
CREATEDATABASE |
Создать БД |
Создать новую базу данных, определив основные параметры для нее | ||
CREATEDBAREA |
Создать область хранения |
Создать новую область хранения и сделать ее доступной для размещения данных | ||
DROPDATABASE |
Удалить БД |
Удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие) | ||
DROP DBAREA |
Удалить область хранения БД |
Удалить существующую область хранения (если в ней на настоящий момент не располагаются активные данные) | ||
GRANT |
Предоставить права |
Предоставить права доступа на ряд действий над некоторым объектом БД | ||
REVOKE |
Лишить прав |
Лишить прав доступа к некоторому объекту или некоторым действиям над объектом | ||
Таблица 5.6. Программный SQL | ||||
Оператор |
Смысл |
Действие | ||
DECLARE |
Определяет курсор для запроса |
Задает некоторое имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных | ||
OPEN |
Открыть курсор |
Формирует виртуальный набор данных, соответствующий описанию указанного курсора и текущему состоянию БД | ||
FETCH |
Считать строку из множества строк, определенных курсором |
Считывает очередную строку, заданную параметром команды из виртуального набора данных, соответствующего открытому курсору | ||
CLOSE |
Закрыть курсор |
Прекращает доступ к виртуальному набору данных, соответствующему указанному курсору | ||
PREPARE |
Подготовить оператор SQL к динамическому выполнению |
Сгенерировать план выполнения запроса, соответствующего заданному оператору SQL | ||
EXECUTE |
Выполнить оператор SQL, ранее подготовленный к динамическому выполнению |
Выполняет ранее подготовленный план запроса |
Информация о работе Лекции по "Систе́ма управле́ния ба́зами да́нных "