Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Chast_1.doc
Скачиваний:
62
Добавлен:
10.11.2018
Размер:
6.45 Mб
Скачать

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

Основные компоненты и их функции

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

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

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

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

К важнейшим характеристикам современных СУБД относятся:

  • среда функционирования - класс ЭВМ и операционных систем (платфор­ма), на которых базируется СУБД;

  • тип поддерживаемой модели данных (сетевая, иерархическая, реляцион­ная и др.);

  • возможности встроенного языка, его совместимость с другими прило­жениями;

293

  • наличие развитых диалоговых средств конструирования (таблиц, форм, запросов, отчетов, макросов) и средств работы с БД;

  • возможность работы с нетрадиционными данными в корпоративных сетях (страницы HTML, сообщения электронной почты, изображения, звуковые фай­лы, видеоклипы и т. п.);

  • уровень использования: локальная (для настольных систем), архитектура «клиент-сервер», параллельная обработка данных и т.п.;

  • использование объектной технологии OLE (Object Linking and Embedding -связывание и внедрение объектов; стандарт, описывающий правила интеграции прикладных программ, что позволяет использовать приложения, созданные в разных операционных средах);

  • степень поддержки языка SQL и возможности работы с сервером баз дан­ных (SQL-сервером) и др.;

  • возможности интеграции данных из разных СУБД. В частности, использо­вание технологии ODBC (Open Database Connectivity - открытый доступ к БД), позволяющей работать с данными других БД при помощи средств SQL.

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

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

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

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

Управление буферами оперативной памяти. Одна из особенностей рабо­ты ЭВМ состоит в том, что выполняемая программа и обрабатываемые дан­ные должны быть предварительно загружены в оперативную память. Посколь-

294

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

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

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

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

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

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

295

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

Индексные таблицы и хэширование

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

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

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

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

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

296

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

Возможны разные способы организации индексирования. Часто индекс име­ет древоподобную структуру, корень дерева которой содержит некоторый пер­вичный список ссылок (значений ключа). Из корня «выходят» ветви к индексам (спискам) следующего - второго уровня. Каждая ссылка списка указывает на адрес расположения в памяти ЭВМ списка соответствующего индекса следую­щего уровня. Если некоторый индекс не имеет исходящих ветвей, то его называ­ют «листом».

В качестве примера иерархической (древовидной) системы индексирования можно привести файловую систему ЭВМ, в которой используется иерархичес­кая система индексов для определения места расположения папок (каталогов) на диске. Иерархичность является следствием того, что в любой папке могут регистрироваться и другие папки.

В рассмотренном примере (см. табл. 5.14 и 5.15) индексы также можно представить в виде древовидной структуры. Дерево индекса по товару приве­дено на рис 5.18.

Сало о'


№ записей БД


Корневая вершина

Рис. 5.18. Дерево индекса по товару

Поиск данных с помощью индекса ведется путем последовательного задания значений ключей до тех пор, пока не будет определено место (адрес) искомых данных, обычно это «лист» дерева индекса.

297

Еще один способ ускорения поиска записи получил название «метод хэши­рования», идея которого базируется на том, что при заполнении БД с помощью специальной хэш-функции значение ключа преобразуется непосредственно в адрес, указывающий сегмент памяти, куда помещается соответствующая запись [8, 14, 64]. Когда пользователю надо выбрать данные из БД, он зада­ет значение ключа, по которому с помощью той же хэш-функции формирует число - адрес сегмента. После чего в этом сегменте ЭВМ находит искомые данные.

Возможны разные варианты хэш-функции. В простейшем случае ее зна­чение определяется как остаток деления числового значения ключа на чис­ло сегментов. Например, если значение ключа в некоторой записи эквива­лентно десятичному числу 1000, а число сегментов БД равно 30, то значение хэш-функции для такого ключа будет равно остатку от деления 1000 на 30, т.е. будет равно 10. Следовательно, искомая запись располагается в 10-м сег­менте БД.

Современные СУБД имеют средства автоматического построения индексов по определениям ключей. Так, в СУБД MS SQL Server 7.0 индексный файл мож­но создать с помощью программного средства Enterprise Manager или команды CREATE INDEX языка запросов T-SQL.

Языки запросов QBE и SQL

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

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

Для подготовки запросов в реляционных СУБД, как правило, используются два основных языка описания запросов [8, 46, 63, 64, 71]:

QBE (Query By Example) - язык запросов по образцу;

SQL (Structured Query Language) - структурированный язык запросов.

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

298

из современных реляционных СУБД имеет свой вариант языка QBE, который позволяет:

- формировать запросы с помощью шаблонов в виде таблиц и задавать фор­му вывода результатов;

- добавлять новые строки, изменять или удалять данные в реляционной БД. С помощью языка QBE можно задавать запросы для выбора данных из одной

или нескольких таблиц реляционной БД. Результатом выполнения запроса может быть новая или обновленная исходная таблица.

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

В ряде современных СУБД, например в Access и Visual FoxPro, многие дейст­вия по подготовке запросов с помощью языка QBE выполняются визуально с помощью манипулятора типа «мышь». В частности, «связывание» таблиц при подготовке запроса выполняется «протаскиванием» мышью поля одной табли­цы к полю другой. Такой язык используется в СУБД PARADOX for WINDOWS, Lotus 1-2-3 и др.

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

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

что и отражено в таблице, полученной Таблица 5.16

в результате запроса (табл. 5.16). Результат выполнения запроса

Дата оформления

Наименование фирмы

03.10.02

Флагман

07.10.02

Петрович

Пользователь может задать в строке несколько независимых условий поиска (потребовать выбрать данные, удовлет­воряющие каждому из таких условий), которые должны выполняться одновре­менно. В таком случае каждое из усло­вий обычно указывается в отдельной строке запросной формы.

Если атрибут исходного отношения характеризуется числовыми значе­ниями, то можно задать поиск кортежей или отдельных атрибутов, имею-

299

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

Язык QBE может поддерживать встроенные функции для нахождения наибольшего или наименьшего значения в столбце, подсчета среднего значения или суммы столбца и др.

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

Язык постоянно развивается, и в разных СУБД применяются свои особен­ности. Так, в широко используемой СУБД Microsoft SQL Server 7.0 употребля­ется диалект, получивший название Transact-SQL (Т- SQL) [63].

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

В составе SQL может быть выделено не менее трех групп инструкций (команд):

  • описание данных (DDL - Data Definition Language);

  • манипулирование данными (DML - Data Manipulation Language);

  • управление транзакциями.

Создание, удаление, изменение объектов БД осуществляется с помощью инструкций DDL, к которым относятся:

CREATE TABLE - создание таблицы;

DROP TABLE - удаление таблицы;

CREATE INDEX - создание индекса;

DROP INDEX - удаление индекса;

ALTER TABLE - изменение структуры таблицы;

CREATE DATABASE - создание базы данных;

SHOW DATABASE - просмотр базы данных и др.

Инструкции DML применяются для выборки, изменения, вставки и удале­ния отдельных записей таблиц. К ним относят:

SELECT - выбор записей, удовлетворяющих заданным

UPDATE

INSERT

DELETE

критериям;

  • изменение отдельных полей и записей;

  • добавление записей;

  • удаление записей.

300

Инструкция, кроме собственно имени команды, включает ряд операторов, которые определяют конкретные параметры и условия манипуляций с данными. Например, оператор SELECT имеет следующий формат:

SELECT [ALL/DISTINCT] <список данных>;

FROM <список таблиц>;

[WHERE <условие выборки>];

[GROUP BY <имя столбца> [,< имя столбца>]...];

[HAVING < условие поиска>];

[ORDER BY <спецификация сортировки> [< спецификация сортировки>]....].

Инструкция SELECT позволяет выбирать и вычислять данные одной или нескольких таблиц. Результатом ее выполнения является таблица, которая может иметь (ALL) или не иметь (DISTINCT) повторяющиеся строки.

В списке данных можно задавать имена столбцов и выражения над ними (арифметические и логические). Если записи отбираются из нескольких таблиц, то используют составные имена <имя таблицы>, <имя столбца>. При описании полей таблиц указываются типы данных (формат данных), которые будут хра­ниться в этом поле.

Рассмотрим два примера формирования запросов на языке Т- SQL.

1. Создать в БД с именем bazal таблицу Gtd с полями Number, Goods, Code и Cost. В поля Number и Goods будут заноситься данные символьного типа длиной 20 байт, в поля Code и Cost - числа с плавающей точкой.

USE bazal

CREATE TABLE Gtd

Number char (20),

Goods char (20),

Code real,

Cost real GO

2. В БД с именем bazal находится таблица Gtd с полями: Number (номер ГТД), Goods (товар), Code (код товара), Cost (стоимость товара). Требуется выбрать группы (строки) полей Number, Goods и Cost, в которых поле Goods имеет значение Land Cruiser.

Такой запрос на языке SQL с использованием инструкции SELECT будет записан:

USE bazal

SELECT Number, Goods и Cost FROM Gtd

WHERE Goods = "Land Cruiser" GO

301

Инструкции третьей группы призваны управлять обработкой данных. Объектом управления являются транзакции, т.е. логически завершенные едини­цы работы с данными. К их числу относят, в частности, инструкции:

COMMIT - фиксация изменений при выполнении текущей транзакции;

SAVEPOINT - установка точки сохранения данных;

ROLLBACK - отмена изменений, сделанных в прошедшей транзакции, и др.

Следует отметить, что языковые и программные средства современных СУБД позволяют организовывать запросы по принципам обоих из вышерас-смотренных языков - QBE и SQL. Так, СУБД Microsoft SQL Server 7.0 позво­ляет создавать на основе языка Т- SQL сценарии. Каждый сценарий - это файл с набором инструкций языка по выполнению некоторой типовой процедуры работы с БД. Для выполнения сценария достаточно запустить файл на выполне­ние (полная аналогия с командным файлом MS - DOS).

Кроме QBE и SQL, существуют и другие языки запросов. В частности, к чис­лу относительно новых относится XQuery - язык запросов для поиска докумен­тов в файлах и базах данных с тегами XML.

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

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

Организация запросов в СУБД Microsoft Access

В настоящее время СУБД является неотъемлемой составляющей информационных систем. Без использования СУБД невозможно предста­вить функционирование ЕАИС ФТС России. LlMeHHO поэтому уже в начале 2005 г. таможенными органами России наиболее широко применялись СУБД: Oracle - 53%, Access - 11%, MS SQL - 1%, DBF - 27%, Inter Base - 8%,

Рассмотрим организацию запросов на примере реляционной СУБД Microsoft Access, которая имеется на каждой ЭВМ с операционной системой корпорации Microsoft.

В этой СУБД результат обработки запроса представляет собой таблицу, назы­ваемую Dynaset. В эту таблицу включены выбранные из основной таблицы (или нескольких таблиц) блоки данных, которые удовлетворяют критериям запроса. Dynaset - динамический, временный набор данных, поэтому при каждом выпол­нении запроса он строится вновь на основе обновленных табличных данных.

Запросы, сформулированные в СУБД Microsoft Access, позволяют:

- выбрать отдельные поля таблиц;

302

- выбрать записи (специфицировать запрос для получения данных опреде­ленного вида);

- отсортировать записи (просматривать записи в определенном порядке);

  • запрашивать данные из нескольких таблиц, которые могут обрабатываться вместе, и просмотреть совмещенные данные;

  • запрашивать данные из других БД, таких как Microsoft Fox Pro, Paradox, dBASE, Betrive и Microsoft или Sybase SQL-серверы;

  • выполнять вычисления и создавать новые поля, содержащие результаты вычислений;

  • использовать запрос в качестве источника данных для формуляров, отче­тов и других запросов;

  • изменять данные в таблицах (обновлять, удалять, добавлять группы запи­сей все сразу);

- создавать новую таблицу на базе существующей или группы таблиц. Запрос можно создавать с помощью «Конструктора запросов» (т.е. по образ­цу), ускоряющего проектирование нескольких специальных типов запросов:

  • запросы кросс-таблиц позволяют представить данные в компактном интегрированном формате;

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

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

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

Можно воспользоваться запросом для проведения вычислений с блоками данных. Этот запрос может задать в каждом поле некоторую функцию, обраба­тывающую содержимое этого поля. Результат обработки выдается в виде таб­лицы Dynaset. При этом функция обработки задается в строке Total, которая появляется после нажатия в пиктографическом меню кнопки с греческой лите­рой «сигма». Функцию выбирают в этой строке, развернув список возможных значений.

С помощью структурированного языка запросов SQL в рамках Microsoft Access пользователь может сформулировать сколь угодно сложные по структуре критериев и вычислений запросы и управлять их обработкой.

Наряду с запросами выбора с помощью MS Access можно реализовать также запросы действий, параметрические запросы и запросы кросс-таблиц.

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

Часто используются запросы, которые представляют собой незначитель­но видоизмененные варианты ранее подготовленного базового запроса. Такие запросы называются параметрическими, они могут видоизменяться, но незна-

303

чительно. Для их реализации предварительно проектируется параметрический запрос, в котором указывается критерий (критерии), изменяемый по заказу пользователя.

Если необходимо объединить данные в формате строк-столбцов (двумерная таблица), то следует формировать запрос типа кросс-таблицы. При его проек­тировании можно указать в качестве заголовков столбцов значения некоторых полей или выражений.

Система управления базами данных Oracle

К концу 2006 г. в таможнях России наиболее широко применялись СУБД Fox Pro, Access, SQL Server, Clipper, dBase. В то же время еще в середи­не 90-х гг. региональные и центральная БД были переведены на СУБД Oracle. Многие новые программные разработки (даже для таможен) также использу­ют СУБД Oracle в качестве основной. Создаваемые программные комплексы для электронного декларирования также ориентированы на использование СУБД Oracle.

Ее ядром является программный сервер базы данных, который поставля­ется в одной из четырех редакций в зависимости от масштаба информаци­онной системы, в рамках которой предполагается его применение. Для сис­тем масштаба крупной организации предлагается продукт Oracle Database Enterprise Edition (корпоративная редакция), который и используется для работы с данными в таможенных органах. Одной из основных характеристик СУБД Oracle является функционирование системы на большинстве плат­форм, в том числе на больших ЭВМ, UNIX-серверах, персональных компью­терах и т.д.

Другой важной характеристикой системы Oracle является поддержка всех возможных вариантов архитектур, в том числе симметричных многопроцессор­ных систем, кластеров, систем с массовым параллелизмом и т.д. Очевидна зна­чимость этих характеристик для крупномасштабных организаций (к которым относится и ФТС России), где эксплуатируется множество компьютеров раз­личных моделей и производителей. Основным средством доступа к базам дан­ных Oracle из программ является (как и для других баз данных) декларативный язык запросов SQL. Этот язык по определению является платформо-независи-мым. На практике при разработке приложений используется процедурное рас­ширение SQL, язык программирования PL/SQL, прототипом которому послу­жил язык Ада. В Oracle поддерживается также и язык Java [80].

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

304

Отказоустойчивость баз данных

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

Отказоустойчивость информационной системы - это способность сохра­нять работоспособность как при отказах некоторых ее элементов, так и при нарушении целостности части данных.

Так, в современных СУБД предусмотрены три специальных технологии вос­становления данных:

  • создание резервного сервера;

  • кластеризация;

  • использование технологии RAID.

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

Использование кластеризации предполагает создание виртуального сервера на основе нескольких ЭВМ. При этом пользователь обращается к серверу как единой ЭВМ. Понятно, что при отказе отдельных (одной из нескольких) ЭВМ остальные продолжают нормально функционировать.

Под технологией RAID понимается совокупность независимых и недоро­гих дисков с избыточным хранением данных (redundant array of inexpensive/ independent disks). Поскольку данные хранятся не на одном, а на нескольких жестких дисках, это, с одной стороны, создает проблемы координации их рабо­ты, а с другой - позволяет создавать отказоустойчивые дисковые системы хра­нения больших объемов данных.

Подключение нескольких дисков через специальный контроллер RAID поз­воляет создать логический (виртуальный) диск, который для ЭВМ и пользова­телей воспринимается как один большой (быстрый и надежный) диск.

Технология RAID основана на применении:

  • дублирования (mirroring) одних и тех же данных на двух разных дисках;

  • распределения (striping) по разным дискам порций данных (в том числе с кодами обнаружения и исправления ошибок), обеспечивающих полное восста­новление данных при их частичной потере из-за отказа отдельных дисков.

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

20 Ю. В. MiL'ibiiueiiKO

305

одновременная запись на разные диски, что ускоряет запись данных. Считывание выполняется в обратном порядке - путем сбора порций данных с разных дисков.

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

Возможно аппаратное или программное управление RAID-дисками.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]