Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700276.doc
Скачиваний:
11
Добавлен:
01.05.2022
Размер:
1.94 Mб
Скачать

7. Технология физического хранения и доступа к данным

7.1. Основные этапы доступа к базе данных

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

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

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

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

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

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

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

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

• извлечь страницу s из набора страниц n;

• заменить страницу s из набора страниц n;

• добавить новую страницу в набор страниц n;

• удалить страницу s из набора страниц n.

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

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

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

- извлечь хранимую запись z из хранимого файла f;

- заменить хранимую запись z в хранимом файле f;

- добавить новую хранимую запись z в хранимый файл f;

- удалить хранимую запись z из хранимого файла f;

- создать новый хранимый файл f;

- удалить хранимый файл f.

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

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

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

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