Базы данных. Учебное пособие
.pdf1)выбирается очередная запись из списка данной тран- закции;
2)выполняется противоположная по смыслу операция (например, вставка вместо удаления); тем самым вос-
станавливается предыдущее состояние объекта базы данных;
3)обратные операции журнализируются;
4)при успешном завершении отката в журнал заносится запись о конце транзакции; с точки зрения механизма журнализации такая транзакция является зафиксиро- ванной.
3.8. Восстановление после мягкого сбоя
К числу проблем, возникающих при мягком сбое, отно- сится тот факт, что одна логическая операция модификации
базы данных может изменить несколько физических блоков базы данных. Несмотря на применение протокола WAL, по-
сле мягкого сбоя набор страниц внешней памяти базы данных может оказаться несогласованным, т.е. часть страниц внеш- ней памяти соответствует измененному состоянию объекта, а часть - нет. К такому состоянию не применима операция вос- становления логического уровня. Если состояние объекта со- ответствует состоянию объекта до/после его изменения, то
состояние внешней памяти базы данных называют физически согласованным.
Контрольные точки
Контрольная точка – момент синхронизации между ба- зой данных и журналом регистрации транзакций. Все буферы оперативной памяти принудительно записываются во вторич- ную память системы. Контрольные точки организуются через
установленный временной интервал и включают выполнение следующих действий:
1)запись всех имеющихся в оперативной памяти записей журнала во вторичную память;
2)запись всех модифицированных блоков в буферах ба- зы данных во вторичную память;
61
3)помещение в файл журнала записи контрольной точ- ки, которая содержит идентификаторы всех транзак- ций, которые были активны в момент создания этой контрольной точки.
3.9. Восстановление БД после жесткого сбоя
Единственный вариант восстановления после жесткого сбоя, то есть после физического повреждения носителей ин- формации (например, винчестера) - это наличие копии базы данных, для чего существует механизм резервного копирова- ния.
Любая СУБД должна предоставлять механизм, позво- ляющий создавать резервные копии базы данных и ее журна- ла через установленные промежутки времени и без необхо- димости останавливать систему.
Для этого типа восстановления недостаточно только восстановление последнего состояния базы данных, поэтому основным инструментом является в этом случае журнал и ар- хивная копия базы данных.
Восстановления начинается с обратного копирования базы данных из архивной копии; затем для всех закончив-
шихся транзакций операции выполняются повторно в прямом смысле. По журналу (в прямом направлении) выполняются все операции, для не закончившихся к моменту сбоя операци- ям применяется откат. Поскольку жесткий сбой не сопровож- дается утратой буферов оперативной памяти, можно восста- новить базу данных до такого уровня, чтобы можно было продолжить даже выполнение незакончившихся транзакций. Восстановление после жесткого сбоя - процедура достаточно длительная. К сожалению, возможна утрата и журнала изме- нений, тогда единственным источником данных является ар- хивная копия; недостатком в данном случае является восста-
новление не к последнему согласованному состоянию базы данных.
62
Производство архивных копий возможно несколькими путями: при переполнении журнала изменений и архивирова- ние самого журнала изменений.
3.10.Администратор базы данных
Администратора базы данных можно рассматривать как необходимый структурный элемент автоматизированного банка данных, т.е. банк данных включает в себя не только данные, программы и оборудование, но еще и персонал. Ад- министратору базы данных отводится важная роль — ответ- ственность за общее управление системой баз данных.
Обязанности администратора БД перечислены ниже.
Определение информационного содержания базы дан-
ных. Администратор базы данных с учетом запросов пользо- вателей к базе принимает решение о том, какая информация должна содержаться в базе данных, то есть определяет ин-
формационное содержание базы данных и задает их общую логическую организацию, так называемую модель данных.
Определение структуры памяти и стратегии доступа.
Администратор базы должен решить, каким образом данные представляются в базе данных, т.е. разработать физическую организацию данных.
Взаимодействие с пользователем. Администратор базы данных — это лицо (или группа лиц), которое имеет глобаль-
ное представление об организации данных в системе и несет ответственность за их сохранность. Пользователи при уча- стии администратора имеют возможность корректно опреде- лить собственный «взгляд» на базу данных, что выражается в задании подмодели данных.
Определение стратегии отказа и восстановления. Ра-
бота автоматизированной системы, использующей банк дан- ных, существенно зависит от его успешного функционирова- ния. В случае повреждения по какой-либо причине всей базы
данных или ее некоторой части необходимо предусмотреть возможность восстановления данных с минимальной задерж- кой и влиянием на сохранившуюся часть базы данных. Адми-
63
нистратор должен определить и реализовать соответст- вующую стратегию восстановления.
Модернизация и эффективность работы базы данных.
Администратор базы данных ответствен за такую организа- цию системы, которая обеспечит максимальную эффектив- ность ее функционирования, а также за выполнение всех мо- дернизаций базы данных, направленных на более полное удовлетворение требований пользователей.
Для выполнения своих функций администратор БД ис- пользует набор вспомогательных программ. Эти программы составляют существенную часть СУБД. К ним относятся, на- пример, программы ведения системного журнала, хранящего сведения о каждом обращении в базу данных, программы восстановления базы данных и программы анализа статисти- ки использования данных.
На практике администратор БД — это чаше всего не один человек, а группа лиц, так как решаемый круг вопросов слишком широк для компетенции одного человека. Они несут ответственность за функционирование интегрированной БД, имеют полномочия по корректировке БД отвечают как за це- лостность данных, так и за защиту их от несанкционирован- ного доступа и надежность системы в целом.
Повышение требований к оперативности информаци- онного обмена и управления, а следовательно, к срочности
обработки информации привело к созданию многоуровневых систем организационного управления объектами, какими яв- ляются, например, банковские налоговые, снабженческие, статистические и другие службы. Их информационное обес- печение поддерживают сети автоматизированных банков дан- ных, которые строятся с учетом организации функциональной структуры соответствующего многоуровневого экономиче- ского объекта, машинного ведения информационных масси- вов. Эту проблему в новых информационных технологиях решают распределенные системы обработки данных с ис-
пользованием каналов связи для обмена информацией между базами данных paзличных уровней. За счет усложнения про- граммных средств СУБД повышаются скорости, обеспечива-
64
ются защита и достоверность информации при выполнении экономических расчетов и выработке управленческих реше- ний.
Итак, администратор базы данных - это:
∙управляющий данными, а не хозяин;
∙системный программист определенного профиля, а также эксперт высшего уровня, обеспечивающий эксплуатацию базы данных решениями по процеду- рам и регламентам работы;
∙лицо, принимающее окончательное решение в своей области, и человек, обладающий способностями к общению, совместному планированию и компро-
миссам.
Надежность и достоверность - это ключевые понятия в деятельности администратора базы данных. Он должен уметь вести тщательное документирование всех действий по управ- лению базой данных.
Инструментом администратора БД является словарь данных, описанный в Словаре вычислений от IBM как "цен- тральное хранилище информации о данных, такой, как значе- ние, взаимосвязи с другими данными, их источник, примене- ние и формат." Термин может иметь одно из близких по смыслу значений, относясь к базам данных и СУБД:
∙документ, описывающий базу данных или комплект баз данных;
∙целый компонент СУБД, необходимый для определе- ния ее структуры;
65
Вопросы для самопроверки
1.Каковы основные функции СУБД?
2.Как вы понимаете смысл терминов:
žядро базы данных;
žадминистратор БД;
žуправление буферами оперативной памяти.
3.Какие функции выполняет ядро БД?
4.Каковы функции утилит, встроенных в СУБД?
5.В чем конкретно заключается такая функция СУБД,
как управления данными во внешней памяти
6.Что означает термин транзакция?
7.Перечислите виды сбоев БД и дайте характеристику каждому.
8.Расскажите своими словами стратегию восстановления БД:
žпри откате транзакции;
žпосле мягкого сбоя;
žпосле жёсткого сбоя.
9.Что такое журнализация?
10.Что такое буферизация?
11.Перечислите обязанности администратора баз данных.
12.В каких случаях проводится индивидуальный откат транзакции?
13.Какую информацию содержат контрольные точки?
14.Поясните необходимость журнализации и буферизации.
15.Каков состав типовой БД?
16.Перечислите категории пользователей БД.
17.Каким образом может быть организован поиск в СУБД?
18.Что такое словарь данных?
19.Что понимается под термином эффективность базы дан- ных?
20.Каков порядок создания базы данных?
66
ГЛАВА 4. ЯЗЫК SQL
4.1. Язык SQL - фактический стандарт для реляционных СУБД
Сами по себе данные в компьютерной форме не пред- ставляют интерес для пользователя, если отсутствуют средст- ва доступа к ним. Доступ осуществляется в виде запросов, которые формулируются на стандартном языке запросов. Се- годня для большинства СУБД таким языком является SQL.
SQL (Structured Query Language) — Структурированный Язык Запросов — стандартный язык запросов по работе с ре- ляционными БД. Язык SQL появился после реляционной ал- гебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прото- типе реляционной СУБД фирмы IBM System R. В дальней-
шем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данны- ми в реляционных СУБД.
Первый международный стандарт языка SQL был при- нят в 1989 г. (SQL/89 или SQL1). В конце 1992 г. был принят новый международный стандарт языка SQL (SQL/92 или SQL2). И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89.
В 1999 году появился новый стандарт, названный SQL3. Если отличия между стандартами SQL1 и SQL2 во многом были количественными, то стандарт SQL3 соответствует ка- чественным серьезным преобразованиям. В SQL3 введены новые типы данных, при этом предполагается возможность задания сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации. В
рамках управления транзакциями произошел возврат к старой модели транзакций, допускающей контрольные точки сохра- нения. Возможность указания в операторе отката ROOLBACK точек возврата позволяет откатывать транзак- цию не в начало, а в промежуточную ранее сохраненную точ-
67
ку. Это повышает гибкость реализации сложных алгоритмов обработки информации.
В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесён- ными позже в 2008 г.
SQL не является языком программирования в традици- онном представлении. На нем пишутся не программы, а за- просы к базе данных, поэтому это язык называют деклара- тивным, не процедурным. Это означает, что с его помощью можно сформулировать, что необходимо получить, однако нельзя указать, как это следует сделать. В отличие от проце- дурных языков программирования (Си, Паскаль), в языке SQL отсутствуют алгоритмические конструкции, операторы цикла, условные переходы и т. д.
Запрос в языке SQL состоит из одного или нескольких операторов, следующих один за другим и разделенных точкой с запятой. Наиболее важные операторы выделены в стандарте
ANSI/ISO SQL.
Для пользователя представляют интерес не сами опера- торы языка, а их последовательность, оформленная как еди- ное целое и имеющая смысл с этой точки зрения. Каждая та- кая последовательность операторов языка SQL реализует оп- ределенное действие над базой данных. Оно осуществляется за несколько шагов, на каждом из которых над таблицами вы- полняются определенные действия.
Поскольку SQL- это язык запросов, то с его помощью невозможно написать сколько-нибудь сложные программы, которые работают с базой данных. Для этой цели в совре- менных СУБД используют язык четвертого поколения (4GL - Forth Generation Language), обладающий как основными воз-
можностями процедурных языков третьего поколения (Си, Паскаль), так и возможностью встроить в текст программы операторы SQL, так и средствами управления интерфейсом пользователя (формами, меню, вводом пользователя и т. д.).
68
Процесс обработки SQL- запроса представлен схема- тично на рис.4.1.
SQL |
Database |
|
Request |
Database |
|
|
Manage- |
|
|
ment Sys- |
|
Requested |
tem |
|
|
|
|
Data |
|
|
Рис.4.1. Обработка SQL–запроса базой данных
4.2. Основные классы операторов языка SQL
4.2.1.Операторы определения данных Data Definition Language (DDL)
Эта составляющая языка содержит 5 операторов, позво- ляющие создавать, модифицировать и уничтожать базы дан- ных и объекты внутри них (таблицы, представления) (табл. 4.1).
|
Таблица 4.1 |
Оператор |
Описание |
|
|
CREATE TABLE |
Добавление новой таблицы к базе данных |
|
|
DROP TABLE |
Удаление таблицы из базы данных |
|
|
ALTER TABLE |
Изменение структуры имеющейся таблицы |
|
|
CREATE VIEW |
Добавление нового представления к базе дан- |
|
ных |
DROP VIEW |
Удаление представления |
|
|
CREATE INDEX |
Создание нового индекса |
|
|
DROP INDEX |
Удаление существующего индекса |
|
|
69
4.2.2.Операторы манипулирования данными Data Manipulation Language (DML)
Эта составляющая языка содержит операторы, позво- ляющие добавлять, выбирать, удалять и модифицировать данные. Эти операторы не обязательно должны завершать транзакцию, внутри которой они вызваны.
Описание операторов представлено в табл. 4 2.
Таблица 4.2
Оператор |
Описание |
|
|
SELECT |
Выбор данных |
|
|
INSERT |
Вставка данных |
|
|
DELETE |
Удаление данных |
|
|
UPDATE |
Обновление данных |
|
|
Иногда оператор SELECT относят к отдельной катего-
рии Data Query Language (DQL).
4.2.3.Контроль транзакций Transaction Control Language (TCL)
Операторы данного класса (табл. 4.3) применяются для управления изменениями, выполняемыми группой операторов
DML.
|
Таблица 4.3 |
Оператор |
Описание |
|
|
COMMIT |
Завершение транзакции и со- |
|
хранение изменений в базе дан- |
|
ных |
ROLLBACK |
Откат транзакции и отмена из- |
|
менений в базе данных |
SET |
Установка параметров доступа к |
TRANSACTION |
данным в текущей транзакции |
70
