Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pis_lect.docx
Скачиваний:
24
Добавлен:
28.10.2018
Размер:
2.55 Mб
Скачать

2.3. Внутренняя схема баз данных. (вопросы 9-14)

2.3.1. Состав внутренней схемы базы данных. (вопрос 9)

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

В общем плане внутренняя схема базы данных включает три основных компонента, представленные на рис 2.8.

Рис. 2.8. Состав внутренней схемы базы данных.

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

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

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

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

Как уже отмечалось в состав банка данных АИС помимо самой базы данных входит и прикладной компонент.

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

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

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

2.3.2. Физические структуры организации файлов данных. (вопрос 10, 11)

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

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

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

Аналогично осуществляется размещение и доступ к индексным массивам.

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

Физические структуры организации файлов данных подразделяются на линейные и нелинейные структуры.

Линейные структуры организации файлов данных.

Линейные структуры предполагают, что на одной странице файла базы данных объединяются записи одной таблицы (отображение одного информационного объекта).

Рис. 2.9. Общий принцип организации внутренней схемы базы данных.

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

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

При заполнении одной страницы целиком выделяется дополнительная страница

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

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

Это позволяет обеспечить эффективное использование дискового пространства, однако вызывает существенные расходы при таких операциях.

Второй способ. Удаление записи выполняется простым «вычеркиванием», без перезаписывания всех записей, расположенных после удалённой записи. На месте вычеркнутых записей остается пустое место.

При превышении общего объема пустых мест на странице более определенного значения (например, больше 25-30 %) специальный компонент СУБД автоматически проводит устранение пустых мест по удаленным записям.

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

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

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

Строки имеют различную длину и отделяются друг от друга символом возврата каретки. В данном случае строка является физической записью, а доступ к ней осуществляется по её номеру «k» путем последовательного считывания (продвижения) k-1 предшествующих строк-записей (рис. 2.10.).

Рис. 2.10. Линейная структура текстового файла.

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

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

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

Подобная организация применяется для создания «настольных информационных систем» («системы рабочего стола») СУБД куста dBase (dBase, FoxPro, Clipper), которые создают и оперируют базами данных в формате так называемых dbf-файлов. Структура dbf-файла состоит из 3 частей: заголовка, блока описания структуры базы и информационной части (рис. 2.11.).

Рис. 2.11. Линейная структура dbf-файла.

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

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

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

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

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

Нелинейные структуры организации файлов данных.

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

Рис. 2.12. Нелинейная структура данных на примере односвязного списка (поля указателей выделены жирными рамками).

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

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

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

Одной из таких стратегий является стратегия минимизации расходов на доступ к записям, связанным на логическом уровне отношением «Один — ко многим», что обусловлено широкой распространенностью таких отношений в предметных областях АИС.

Данная стратегия основывается на использовании иерархических древовидных структур.

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

Рис. 2.13. Пример нелинейной древовидной иерархической структуры данных.

Если в процессе ведения базы данных какая-либо страница переполняется, то для нее образуется связанная страница-продолжение на основе техники односвязного списка. А именно, в конце каждой страницы выделяется специальное поле – указатель на возможное продолжение страницы, так называемый цепной список. Это в добавление к тому, что каждая запись страницы сама содержит поле-указатель на страницу подчиненных записей.

При таком подходе обеспечивается эффективная обработка связанных записей, так как осуществляется не единичное, а сразу страничное их считывание в буферы оперативной памяти.

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

Во многих предметных областях АИС отношения между информационными объектами могут порождать ситуации, когда у определенных записей на стороне «Многие» имеется несколько разных предков на стороне «Один». Такие случаи не вписываются в рамки описанных иерархических структур. И решение в этих случаях достигается через введение избыточности (дублирования) данных по связанным записям или иными способами.

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

Деревом называется неориентированный связный ациклический граф. Граф, любая пара вершин которого связана, называется связным графом.

Отсутствие цикла – ацикличность.

Деревья с ориентированными ребрами (дугами) называют деревьями с корнем. Все ребра имеют направление от корня.

На рис. 2.14 приведено условное изображение корневого дерева, соответствующего иерархической нелинейной структуре данных на рис. 2.13, а также термины и понятия, связанные с ним. Вершины дерева по отношению друг к другу могут быть предками или потомками. Предок может иметь несколько потомков, но каждый потомок только одного предка.

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

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

Рис. 2.14. Нелинейная древовидная, иерархическая структура.

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

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