Министерство образования российской федерации московский государственный институт электроники и математики (Технический университет)
Скачать 1.02 Mb.
|
Журнал регистрации изменений (журнал транзакций) – это часть БД, недоступная пользователям СУБД и поддерживаемая особо тщательно (иногда ведутся две копии журнала, хранимые на разных физических носителях). В журнал поступают все сведения обо всех изменениях основной части БД. Фор- ма записи в журнал изменений зависит от СУБД. Это может быть порция дан- ных, измененная в результате выполнения логической операции над данными, или, например, в результате минимальной внутренней операции модификации страницы (блока) внешней памяти. Внесение изменений в журнал всегда носит опережающий характер по отношению к записи изменений в основную часть БД (протокол WAL – Write Ahead Log). Эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем изме- нённый объект попадёт во внешнюю память основной части БД. Если СУБД корректно соблюдает протокол WAL, то с помощью журнала транзакций мож- но решить все проблемы восстановления БД после сбоя, не препятствующего дальнейшему функционированию системы, например, после сбоя приложения или фонового процесса СУБД. Примечание. Существуют сбои, после которых база данных не может быть восстановлена автоматически. Например, сбой записи на диск относится к таким фатальным ошиб- кам. Восстановление БД после фатального сбоя требует использования дополнитель- ных системных средств и участия человека. 4.4. Администрирование БД Основные задачи администрирования БД – обеспечение надежного и эф- фективного функционирования системы БД, адекватности содержания БД ин- формационным потребностям пользователей, отображения в БД актуального состояния ПО. Администрирование БД возлагается на администратора (или персонал администрирования, если система БД велика). В задачи администратора входит выполнение нескольких групп функций: 1. Администрирование предметной области: поддержка представления БД на концептуальном уровне архитектуры СУБД (общем для всех приложений); адекватное отображение в БД изменений, происходящих в ПО. Последнее требование может подразумевать реструктуризацию (изменение схемы) БД и последующее приведение содержимого БД в соответствие с новой схемой. 2. Администрирование БД: поддержка представления БД в среде хранения, эффективная и надежная эксплуатация системы БД. Если на этом уровне проводится реорганизация БД (с целью повышения эффективности работы), то она заключается в следующем: изменения в структуре хранимых данных, например, выведение в отдель- ную таблицу редко используемых данных; изменения способов размещения данных в пространстве памяти, напри- мер: – 40 – – разбиение таблицы на части для распределения её по различным фи- зическим носителям с целью распараллеливания доступа к ней; – построение кластеров; – изменение физических параметров среды хранения, например, размера блока данных. изменения используемых методов доступа к данным, например, построе- ние индексов или введение хеширования. 3. Администрирование приложений: поддержка представлений БД для различ- ных групп пользователей механизмами внешнего уровня СУБД. При изме- нении концептуальной схемы БД или схемы хранения может потребоваться внесение соответствующих изменений в приложения. 4. Администрирование безопасности данных: предоставление пользователям прав на доступ к БД и настройка системных средств защиты от несанкцио- нированного доступа. В состав СУБД обычно включаются вспомогательные средства (различ- ные утилиты), упрощающие администрирование БД. 4.5. Словари-справочники данных Словарь-справочник данных (ССД) – это программная система, пред- назначенная для централизованного хранения и использования описания объек- тов БД (метаданных). Эта система содержит сведения: о владельцах объектов данных, пользователях ресурсов данных и полномо- чиях их доступа; о составе и структуре базы данных; об ограничениях целостности; о вспомогательных объектах и компонентах ИС. ССД обеспечивает непротиворечивость метаданных, единую точку зре- ния на базу данных всего персонала разработчиков, администраторов и пользо- вателей системы. Метаданные в словаре–справочнике реляционной СУБД обычно организованы в виде набора таблиц. Словарь БД содержит сведения об организации БД, её составе и струк- туре, о семантике данных, способах их идентификации, источниках данных и т.п. Словарь предназначен главным образом для документирования разработки БД и справочного обслуживания её пользователей. Информация в словаре представлена в виде, удобном для восприятия человеком. Справочник БД служит для поддержки функционирования компонентов программного обеспечения – СУБД и прикладных программ, работающих с БД. Справочник содержит описания данных: форматы представления, структуру, методы доступа, способы размещения данных в памяти и т.п. Информация в словаре представлена в виде, удобном для программного использования. Множества метаданных словаря и справочника в значительной мере пе- ресекаются. Более того, они могут реализовываться совместно: во многих реля- ционных СУБД справочник состоит из таблиц, содержащих описание объектов БД, а словарь реализуется с помощью представлений над таблицами справоч- ника. – 41 – 5. ФИЗИЧЕСКАЯ ОРГАНИЗАЦИЯ ДАННЫХ 5.1. Механизмы среды хранения и архитектура СУБД Механизмы среды хранения БД служат для управления двумя группами ресурсов – ресурсами хранимых данных и ресурсами пространства памяти. В задачу этого механизма входит отображение структуры хранимых данных в пространство памяти, позволяющее эффективно использовать память и опреде- лить место размещения данных при запоминании и при поиске данных. В большинстве случаев в качестве единицы хранения принимается хра- нимая запись. Механизмы среды хранения выполняют следующие операции: 1. При запоминании нового объекта: определение места размещения нового объекта "физической" БД в про- странстве памяти; выделение необходимого ресурса памяти; запоминание этого объекта; формирование связей с другими объектами. 2. При поиске объекта: поиск места размещения объекта в пространстве памяти по заданным ат- рибутам или "адресу"; выборка объектов для обработки. 3. При удалении объекта: удаление объекта с освобождением памяти (физическое удаление) или без освобождения (логическое удаление); разрушение связей с другими объектами. Примечание: в реляционных СУБД формирование связей осуществляется на логическом уровне (т.е. по значениям атрибутов), а в иерархических и сетевых СУБД – на физи- ческом уровне (по адресам записей). Все операции выполняются по запросам механизмов концептуального уровня СУБД. На этом уровне никаких операций непосредственного обновле- ния пользовательских данных или преобразований представления хранимых данных не происходит, это задача более высоких архитектурных уровней. Управление памятью выполняется операционной системой по запросам СУБД или непосредственно самой СУБД. Несмотря на декларируемую независимость архитектурных уровней, для достижения более высокой производительности на уровне организации среды хранения часто приходится учитывать специфику концептуальной модели. Аналогично, организация файловой системы не может не оказывать влияния на среду хранения. 5.2. Пространство памяти и размещение хранимых данных Ресурсам пространства памяти соответствуют объекты внешней памяти ЭВМ, управляемые средствами операционной системы или СУБД. – 42 – Для обеспечения естественной структуризации хранимых данных, более эффективного управления ресурсами и/или для технологического удобства всё пространство памяти БД обычно разделяется на части (области, разделы и др.). (Во многих системах область соответствует файлу.) Области памяти исполь- зуются для размещения хранимых записей одного или нескольких типов и раз- биваются на пронумерованные страницы фиксированного размера. В боль- шинстве систем обработку данных на уровне страниц ведёт операционная сис- тема (ОС), а обработку записей внутри страницы обеспечивает только СУБД. Страницы представляются в среде ОС блоками внешней памяти, класте- рами или секторами, доступ к которым осуществляется за одно обращение. В системах, которые позволяют управлять размером страницы (блока), приходит- ся искать компромисс между производительностью системы и требуемым объ- ёмом оперативной памяти. Страница имеет заголовок со служебной информацией, вслед за которым располагаются собственно данные. На странице размещается, как правило, не- сколько записей, и есть свободный участок для размещения новых записей. Ес- ли запись не помещается на одной странице, она разбивается на фрагменты, ко- торые хранятся на разных страницах и имеют ссылки друг на друга. Существуют различные механизмы, позволяющие решать проблемы, ко- торые возникают при модификации данных в БД. Рассмотрим их. Удаление записей может быть логическим или физическим. В первом случае запись помечается как удаленная, но фактически она остаётся на преж- нем месте. Фактическое удаление этой записи будет произведено либо при ре- организации БД, либо специальной сервисной программой, которая запускается администратором БД. При физическом удалении ранее занятый участок осво- бождается и становится доступным для повторного использования. Система ав- томатически управляет свободным пространством памяти на страницах. Как правило, это обеспечивается либо ведением списков свободных участков, либо динамической реорганизацией страниц. При динамической реорганизации страниц записи БД плотно разме- щаются вслед за заголовком страницы, а после них расположен свободный уча- сток (рис. 5.1,а). Смещение начала свободного участка хранится в заголовке страницы. При удалении записи оставшиеся записи переписываются подряд в начало страницы и изменяется смещение начала свободного участка. – 43 – а) динамическая реорганизация страниц б) списки свободных участков на странице в) списки свободных участков в виде отдельных структур 4 2 1 3 1 2 3 4 (заголовок) (заголовок) (заголовок) Рис. 5.1. Управление свободным простанством памяти на страницах Если система ведёт список свободных участков, то возможны разные варианты. Ссылка на первый свободный участок на странице может храниться в заголовке страницы, и каждый свободный участок хранит ссылку на следую- щий (или признак конца списка) (рис. 5.1,б). Каждый освобождаемый участок включается в список свободных участков на странице. Другой способ заключается в поддержке списков участков в виде отдель- ных структур (рис. 5.1,в). Список ведется как стек, очередь или упорядочённый список. В последнем случае упорядочение осуществляется по размеру свобод- ного участка, что позволяет при размещении новой записи выбирать для неё наиболее подходящий по размеру участок. Для учёта свободных участков в СУБД могут поддерживаться инвентар- ные страницы. Они создаются для области (или группы страниц) и содержат информацию о свободных участках в этой области. Это существенно ускоряет поиск свободного пространства для размещения новых записей. При запоминании новой записи система через инвентарные страницы ищет свободный участок, достаточный для размещения этой записи. (Обычно выбирается первый подходящий, размер которого не меньше требуемого.) Если выбранный участок больше, чем запись, то остаток оформляется в виде свобод- ного участка. (При динамической реорганизации страниц запись просто запи- сывается вслед за последней на данной странице.) После этого система коррек- тирует содержимое инвентарных страниц (если они есть). При изменении записи, имеющей фиксированный формат, она просто пе- резаписывается на прежнее место. Если же запись имеет плавающий формат, возможны ситуации, когда запись не помещается на прежнее место. Тогда про- цедуры корректировки приводят либо к реорганизации страницы, либо к пере- мещению записи на другой участок памяти, что, в свою очередь, приведёт к об- новлению нескольких страниц. Использование списков свободных участков ведёт к фрагментации про- странства памяти, т.е. появлению разрозненных незаполненных участков памя- ти. Для того чтобы уменьшить фрагментацию, в подобных системах преду- – 44 – смотрены процедуры, которые периодически проводят слияние смежных сво- бодных участков в один. Структура и представление хранимых данных, их размещение в про- странстве памяти и используемые методы доступа определяются схемой хране- ния. Схема хранения оперирует в терминах типов объектов. 5.3. Структура хранимых данных Единицей хранения данных в БД является хранимая запись. Она может представлять как полную запись концептуального уровня, так и некоторую её часть. Если запись разбивается на части, то её фрагменты представляются эк- земплярами хранимых записей каких-либо типов. Все части записи связывают- ся указателями (ссылками) или размещаются по специальному закону так, что- бы механизмы междууровневого отображения могли опознать все компоненты и осуществить сборку полной записи концептуальной БД по запросу механиз- мов концептуального уровня. Хранимые записи одного типа состоят из фиксированной совокупности полей и могут иметь формат фиксированной или переменной длины. Записи переменной длины возникают, если допускается использование повторяющихся групп полей (агрегатов) с переменным числом повторов или полей переменной длины. Работа с хранимыми записями переменной длины существенно усложняет управление пространством памяти, но может быть продиктована желанием уменьшить объём требуемой памяти или характером модели данных концептуального уровня. В последнем случае для повышения производительности системы записи могут разбиваться на фрагменты фиксиро- ванной длины, возможно, различных типов. Хранимая запись состоит из двух частей: 1. Служебная часть. Используется для идентификации записи, задания её ти- па, хранения признака логического удаления, для кодирования значений элементов записи, для установления структурных ассоциаций между запи- сями. Никакие пользовательские программы не имеют доступа к служебной части хранимой записи. 2. Информационная часть. Содержит значения элементов данных. Элементы хранимой записи могут иметь фиксированную или перемен- ную длину. При этом обычно элементы фиксированной длины хранятся в нача- ле записи и размещаются в памяти с заранее определённых позиций, а за ними размещаются элементы переменной длины. Хранение элементов переменной длины осуществляется одним из двух способов: размещение через разделитель или хранение размера элемента данных. Наличие полей переменной длины по- зволяет не хранить незначащие символы и снижает затраты памяти на хранение данных; но при этом увеличивается время на извлечение элементов записи. Каждой записи БД система присваивает внутренний идентификатор, на- зываемый (по стандарту CODASYL) ключом базы данных (КБД). Значение КБД формируется системой при размещении записи и содержит информацию, позволяющую однозначно определить место размещения записи (её адрес). В – 45 – качестве КБД может выступать, например, последовательный номер записи в файле или совокупность адреса страницы и смещения от начала страницы. Конкретные составляющие КБД зависят от операционной системы и от СУБД, точнее, от вида используемой адресации и от структуризации памяти, принятой в данной СУБД. 5.4. Виды адресации хранимых записей Рассмотрим два вида адресации: прямую и косвенную. Прямая адресация предусматривает указание непосредственного место- положения записи в пространстве памяти. Простейший вариант адресации ис- пользуется в том случае, если в памяти хранится один вид записи фиксирован- ной длины. Тогда в качестве адреса записи может использоваться её порядко- вый номер. (Прямая адресация используется, например, в системах ADABAS и dBaseIII PLUS). Прямая адресация не позволяет перемещать записи в памяти без измене- ния ключа базы данных. Такие изменения привели бы к необходимости кор- рекции различных указателей на записи в среде хранения, что было бы чрезвы- чайно трудоемкой процедурой. В связи с отсутствием возможности перемеще- ния при этом возникает фрагментация памяти. Указанные недостатки можно преодолеть, используя косвенную адреса- цию. Существует множество способов косвенной адресации. Один из них со- стоит в том, что часть адресного пространства страницы выделяется под индекс страницы (рис. 5.2). Число статей (слотов) в нем одинаково для всех страниц. ключи записей страница N k индексная часть страницы k+1 0 1 2 область страницы для хранения данных 36 1 4 N, i i Рис.5.2. Косвенная адресация с использованием индексов Ключом БД по-прежнему служит номер этой записи в области. С помо- щью простых арифметических действий можно получить по номеру записи но- мер нужной страницы и номер требуемого слота в индексе этой страницы. Най- денный слот укажет местоположение записи на этой странице, где N, n – это соответственно номер страницы памяти и номер слота на этой странице, в ко- тором хранится адрес записи (смещение от начала страницы). При перемещении записи она остаётся на той же странице, и слот по- прежнему указывает на неё (меняется его содержимое, но не сам слот). Если запись не вмещается на страницу, она помещается на специально отведённые в – 46 – данной области страницы переполнения, и соответствующий слот продолжает указывать место её размещения. Этот подход позволяет перемещать записи на странице, исключать фраг- ментацию, возвращать освободившееся пространство для повторного использо- вания. При этом приложения БД остаются нечувствительными к таким опера- циям. Таким образом, косвенная адресация входит в группу методов, обеспечи- вающих физическую независимость данных. Также с адресацией связана другая функция среды хранения – поддержка связей между хранимыми записями. 5.5. Организация связей между хранимыми записями Для сетевой и иерархической моделей данных эти связи поддерживаются на физическом уровне. Способы представления связей определяются схемой хранения и чаще всего основаны на использовании указателей или на размеще- нии данных в смежных областях памяти. В сетевых и иерархических БД ассоциации между данными поддержива- ются групповыми отношениями. Наиболее распространённый способ поддер- жания групповых отношений – создание цепного списка. Для этого запись- владелец в служебной части содержит адресную ссылку (ключ базы данных) на первую подчинённую запись, а каждая подчинённая запись содержит ссылку на следующую (рис. 5.3,б). Последняя подчинённая запись содержит признак кон- ца списка (разомкнутый список) или ссылку на владельца (замкнутый список). Ссылки могут быть однонаправленными (только на следующую запись) или двунаправленными (на следующую и на предыдущую записи). В послед- нем случае запись владелец кроме ссылки на начало списка подчинённых запи- сей также содержит ссылку на последнюю подчинённую запись (рис. 5.3,в). Двунаправленный список удобен при удалении записи. Для корректности удаления подчинённой записи нужно, чтобы предыдущая запись содержала ссылку на последующую запись (по отношению к удалённой). Например, при удалении записи В2 (рис. 5.3,в) запись В1 должна ссылаться на запись В3. Имея ссылку на предыдущую запись, можно сразу выполнить шаг назад и изменить значение ссылки у записи В1, не проходя заново по всему списку. Кроме ссылок внутри списка подчинённые записи могут содержать ссыл- ку на запись-владельца. В сетевой модели данных обработку можно начать с любой записи, и наличие ссылки на владельца обеспечивает быстрое передви- жение вверх по групповым отношениям. – 47 – С1 С3 А Н В М Е С1 С2 С3 С4 а) А1 Н1 В1 М1 Е1 С1 С2 С3 С4 б) А2 В2 В3 Н2 В4 М2 М3 С2 М4 С2 С3 Е1 Е1 Е1 А1 В1 С1 в) В2 В3 Рис. 5.3. Реализация групповых отношений (а): б) замкнутый цепной список; в) двунаправленный цепной список Дополнительные ссылки увеличивают эффективность выполнения от- дельных операций, но требуют соответствующих затрат внешней памяти и вре- мени на установление и разрыв связей. |