ВВЕДЕНИЕ

 

Как уже указывалось в главе 3, предложения определения данных языка SQL было бы удобно разделить на два класса— Предложения логические и физические. Логические предложения имеют дело с объектами, которые на самом деле представляют интерес для пользователя. В отличие от них физические предложения имеют дело с объектами, которые в большей степени представляют интерес для администраторов—системных администраторов и администраторов баз данных. В этой главе кратко обсуждается последний вид объектов. Соответствующие им предложения определения данных являются, однако, несколько более сложными благодаря тому, что они по необходимости включают множество деталей нижнего уровня. По этой причине указанные предложения (копия здесь подробно не описываются. Мы довольствуемся наблюдением, что они обладают в такой же мере широкими функциями, как и логические предложения, в том смысле, что для каждого вида объектов имеются предложения CREATE (создать), АLTER (изменить) и DROP (уничтожить). Это простое замечание на самом деле не является стопроцентной истиной—не для всех видов объектов допускаются все три вида операций. Оставим, однако, обсуждение всех этих подробностей за руководствами no системе DB2 фирмы IBM.

На рис. 13.1 схематически представлены основные объекты среды хранения и их взаимосвязи. Этот рисунок нужно интерпретировать следующим образом.

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

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

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

Рис. 13.1. Основные объекты среды хранения DB2

 

—Каждое индексное пространство содержит в точности один индекс. Заданный индекс должен полностью содержаться в одном индексном пространстве. Заданная хранимая таблица и связанные с нею индексы должны полностью содержаться в одной базе данных.

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

— С каждым «пространством» (табличным или индексным) связана некоторая группа памяти[22]. Группа памяти—это совокупность томов с прямым доступом на устройствах одного и того же типа. Если требуется расширить данное пространство, то дополнительная память выделяется из соответствующей группы памяти. Не обязательно, чтобы все пространства заданной базы данных относились к одной и той же группе памяти. Точно так же не требуется, чтобы все пространства, составляющие данную группу памяти, относились к одной и той же базе данных. Отметим поэтому, что группы памяти являются в некотором смысле наиболее «физическими» из всего многообразия объектов среды хранения в системе DB2. В то же время базы данных, табличные пространства и др. представляют собой все же нечто «логическое».

Прежде чем перейти к более детальному обсуждению перечисленных выше понятий, сделаем еще одно вводное замечание относительно системных умолчаний. В основу системных умолчаний положено следующее соображение. На первый взгляд все множество объектов среды хранения—базы данных, табличные пространства, группы памяти и т. д.—является в значительной степени сложным, и было бы довольно неудачно, а на самом деле противоречило бы общей цели— обеспечению легкости использования, если бы пользователь должен был в полной мере понять все эти концепции прежде, чем они могли бы стать ему полезными. Например, нет необходимости знать о табличных пространстваx только лишь для того, чтобы иметь возможность создать и использовать новую таблицу. Полное предложение CREATE TABLE включает параметр, специфицирующий табличное пространство, в которое должна войти новая таблица. Однако всегда можно опустить этот параметр (и в действительности именно так мы и поступали до сих пор во всех примерах в этой книге). В этом случае DB2 автоматически создаст табличное пространство по умолчанию и поместит в него новую таблицу. Поэтому для того, чтобы быть способным создать новую таблицу, фактически нет необходимости знать о табличных пространствах. Подобные упрощения относятся к большинству других предложений определения данных и к большинству других объектов среды хранения. Полностью механизм умолчания описывается более подробно в разделе 13.8.