Архитектура системы управления базами данных
Под СУБД понимают совокупность языковых и программных средств, обеспечивающих создание, поддержание (редактирование) и доступ к данным как со стороны пользователей, так и со стороны приложений. СУБД предоставляет:
· средства поддержки набора данных и отношений между связанными данными;
· поддержка операций с данными;
· развитый пользовательский интерфейс, который позволяет предоставлять информацию в текстовом и графическом виде;
· средства программирования высокого уровня, с помощью которых можно создавать свои собственные приложения – БД;
· набор средств администрирования, обеспечения секретности и безопасности информации.
Основные операции (функции) СУБД заключаются в определении данных (описание и поддержка структуры данных), обработки данных и управлении данными. Все операции в СУБД можно условно разбить на два класса, на операции изменения данных и на операции, которые изменяют состояние базы данных. К операциям, изменяющим данные, относятся:
· Добавление (вставка) данных;
· Удаление данных;
· Модификация (редактирование) данных.
Все эти операции зачастую заменяются одним термином – обновление данных. К операциям, изменяющим состояние базы данных, относятся:
1. Операции поиска и доступа к информации:
· Выборка (получение данных из БД и обеспечение пользователю доступности к выбранным данным);
· Поиск. Предусматривает установку указателя на запись, удовлетворяющую определенному критерию;
· Сортировка;
· Фильтрация;
2. Операции поддержки функциональности;
3. Операции поддержки целостности и восстановления данных;
4. Операции контроля за доступом;
5. Операции поддержки обмена данными;
6. Администрирование.
А также сюда можно отнести так называемые низкоуровневые операции:
7. Управление данными во внешней памяти;
8. Управление буферами оперативной памяти;
9. Управление параллельностью и транзакциями;
10. Ведение журнала изменений в БД (имеется не во всех СУБД).
Для работы с хранящейся в БД информацией СУБД предоставляет программам и пользователям следующие два вида языков:
· язык описания данных (ЯОД) – это высокоуровневый непроцедурный язык декларативного типа, предназначенный для описания логической структуры данных. Он может дополнительно подразделяться на SDL – storage definition language и VDL – view definition language.
· язык манипулирования данными (ЯМД) – это совокупность инструкций, обеспечивающих выполнение основных операций по работе с данными: ввод, удаление, модификацию и выборку данных. Существует ЯМД высокого и низкого уровней. Первый используется для выборки набора данных, второй работает на уровне отдельных записей. Обычно такие языки указывают, какие данные необходимо извлечь, а не как они должны быть извлечены, и поэтому их называют декларативными.
СУБД представляет собой сложную систему, состоящую из многих компонентов. Структурно архитектуру СУБД можно представить следующей схемой (рис. 4.1).
Рис. 4.1 Структурная схема СУБД
База данных и словарь данных (системный каталог, хранящий мета-данные) обычно хранятся на внешних носителях. Операции доступа к данным на низком уровне (запись-чтение) контролируются операционной системой. Если требуется высокая производительность, то такие операции могут контролироваться самой СУБД. На более высоком уровне операции доступа контролируются ядром БД, которое использует для этого информацию, содержащуюся в словаре данных. Практически всегда операции доступа буферируются в оперативной памяти. Необходимость буферизации обусловлена тем, что объем ОП всегда меньше объема внешней памяти. Такой подход повышает производительность системы и позволяет предоставить доступ к одним и тем же данным разным процессам (в конечном случае пользователям). Ядро БД также ответственно за поддержку безопасности и целостности БД.
Интерпретатор ЯОД обрабатывает инструкции определения/изменения структуры данных и сохраняет результаты в системном каталоге.
Запросы от пользователей интерпретируются интерпретатором ЯМД и обрабатываются затем ядром БД. Так как зачастую запросы формируются через высокоразвитый интерфейс и могут представлять собой нечто достаточно абстрактное, то они проходят предварительную предкомпиляцию в инструкции ЯМД. Операции управления и администрирования выполняются непосредственно ядром БД и промежуточной обработки не требуют.
СУБД различаются по следующим признакам:
1. По типу поддерживаемой модели: реляционная, объектная, объектно-реляционная, иерархическая, сетевая, другие (многомерная, постреляционная).
2. По количеству поддерживаемых пользователей:
· однопользовательские,
· многопользовательские.
3. По количеству компьютеров, на которых располагается СУБД:
· централизованные (один компьютер),
· распределенные (distributed DBMS - DDBMS):
a) однородные
b) клиент-серверные
c) многоплатформенные (multi-tired)
4. По назначению:
· Специальные (обслуживание банков, продажи и резервирования билетов и т.д. Образуют категорию OLTP – on-line transaction processing systems),
· Общецелевые.
Индексация
Индексы предназначены для ускорения доступа к данным и повышения скорости поиска. Основным их назначением является устранение последовательного или пошагового сканирования записей при поиске нужных данных. Помимо этого индексы также позволяют производить проверку значения поля на уникальность и сортировку записей в таблице. Индекс – это внутренняя таблица, имеющая два столбца: упорядоченные значения выражения, содержащего все поля, включенные в индекс, и местоположение каждой записи с данным значением индексного выражения. Поля, на основе которых создается индекс, обычно могут быть упорядочены как по возрастанию своих значений, так и по убыванию, хотя некоторые СУБД поддерживают только сортировку по возрастанию. При выполнении сортировки изменение физического положения записей не происходит. Меняется только визуальное представление очередности следования записей. Таким образом, порядок следования записей в базе данных легко менять, назначая соответствующий индекс в таблице.
В первом поле индекса можно хранить значения индексных полей таблицы либо свертку поля (так называемый хеш-код). Преимущество хранения хеш-кода вместо соответствующих значений состоит в том, что длина свертки независима от длины исходных значений и имеет достаточно малую величину (например, 4 байта), что существенно снижает время поиска. Недостатком хеширования является необходимость выполнения операции свертки, что требует определенных затрат времени, и возможность возникновения коллизий (свертка различных значений может дать одинаковый хеш-код).
Для организации ссылки на запись таблицы зачастую используются абсолютные или относительные адреса дисковой памяти компьютера. Так как таблицы хранятся в виде совокупности блоков данных фиксированного размера, например целого числа кластеров, то преимущественно в качестве адресов записей используются адреса начала этих блоков.
Таким образом, индекс обычно сохраняет каждое значение индексированного поля вместе со списком указателей на все блоки данных физического носителя, которые содержат записи с данным значением индексного поля. Значения всегда хранятся в упорядоченном виде, что позволяет применить быстрые алгоритмы поиска. Индексный файл имеет намного меньший размер, чем файл данных, тем самым еще более повышая эффективность поиска.
Индексы различают на первичные и вторичные в зависимости от того, определяет ли поле, на котором основан индекс, физический порядок записей в таблице, или нет. Первичный (primary) индекс создается на основе первичного ключа таблицы, т.е. поля, которое определяет физический порядок следования записей в таблице и является уникальным. Так как таблица может содержать не более одного поля, определяющего физический порядок записей в таблице, то для нее может быть определен только один первичный индекс. Дополнительно для таблицы можно определить несколько вторичных (secondary) индексов, основанных на неупорядоченных (физически) полях.
Первичные индексы
Первичный индекс состоит из двух полей. Первое поле имеет тот же тип данных, что и поле, на котором основан индекс, а второе содержит указатели на блоки данных физического носителя. Так как в одном блоке данных обычно помещается несколько записей, то первое поле индекса будет содержать не все значения индексированного поля, а только первые для блока данных. Соответственно, в первом поле записывается значение первичного ключа для первой записи в блоке, а во втором – указатель на этот блок данных (смотри Рис. .2).
Рис. 4.2 Структура первичного индекса
Число записей в первичном индексе будет определяться числом блоков данных, отведенных для хранения таблицы. Поиск некоторой записи будет вначале проводиться по первому полю индекса, затем по упорядоченным значениям индексного поля в блоке данных. Скорость поиска данных с использованием первичного индекса будет максимально высокой, так как число записей в индексе намного меньше, чем в таблице и для индекса и для блоков данных можно использовать бинарный поиск.
Вторичные индексы
Структура вторичных индексов отличается от первичного тем, что второе поле индекса содержит указатели на блоки данных с неупорядоченными записями и тем, что для индексных полей с повторяющимися значениями приходится хранить список указателей на все блоки данных физического носителя, которые содержат записи с данным значением индексного поля. Помимо указателей на начала блоков данных применяются также указатели на записи с данным значением индексного поля (смотри 4.3).
Иначе говоря, первое поле вторичного индекса содержит упорядоченные значения индексного поля, а второе – указатели на блоки данных физического носителя, которые содержат записи с данным значением индексного поля.
Рис. 4.3. Структура вторичного индекса
Дата добавления: 2016-10-26; просмотров: 2308;