Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Базы данных

ФИЗИЧЕСКАЯ СТРУКТУРА БАЗЫ ДАННЫХ INTERBASE

InterBase является продуктом Borland и появилась в России в 1993 г., она проста в управлении и настройках, а также в администрировании, обладает хорошими функциональными возможностями. Borland InterBase является промышленной системой управления базами данных и предназначена для создания и управления большими базами данных, построенных в архитектуре «клиент—сервер». База данных InterBase предполагает возможность одновременной работы более 100 клиентов.

Система управления базами данных (СУБД), и InterBase в частности, предназначена для хранения данных и управления этими данными. По запросу пользователя СУБД размешает данные в базе данных, преобразуя их в свой внутренний формат. Понятно, что каждая СУБД имеет свой собственный формат представления данных. Также по запросу пользователя СУБД извлекает данные, преобразует их к виду, удобному для пользователя, и предъявляет их на экран.

В этой главе будет рассмотрен формат представления данных в InterBase, его особенности, состав и способ хранения на диске.

Файл базы данных

В InterBase база данных может состоять как из одного, так и из нескольких файлов. Имя файлу базы данных присваивает программист, а расширение у файла — gdb. В ранних версиях InterBase размер файла базы данных не превышал 2—4 Гбайт, начиная с версии 6.5 размер файла не должен превышать 32 Гбайт.

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

InterBase. Все страницы имеют одинаковый размер. Размер страницы определяется один раз при создании базы данных. В процессе эксплуатации базы данных размер страницы изменить нельзя. Единственная возможность изменить размер страницы базы данных — восстановление базы данных из резервной копии (подробнее см. гл. 12). Размер страницы фиксированный — 1024, 2048, 4096 и 8192 байта. Начиная с версии InterBase 6.5 и выше допускается размер страницы 16 384 байта. За одно обращение к базе данных сервер InterBase читает одну страницу целиком. Во время сеанса связи пользователя базы данных с базой банных обмен данными выполняется через буфер (Database cache). Размер буфера определяется при создании базы данных, по умолчанию размер буфера установлен в 75 страниц.

Всего предусмотрено 11 типов страниц (табл. 3.1). Каждый тип имеет свой идентификатор (порядковый номер).

Таблица 3.1. Назначение страниц

Иденти

фикатор

Определение в ods. h

Обозначение

Назначение

0

pagundefined

VP

Неопределенный тип

1

pagheader

HP

Заголовок (общие сведения) базы данных

2

pagjpages

SIP

Учет распределения страниц базы данных

3

pagtransactions

TIP

Учет транзакций

4

pag_pointer

PP

Учет указателей на другие страницы

5

pag_data

DP

Записи таблицы

6

pag_root

IRP

Учет вершин индексов

7

pagjndex

IP

Страница индексов

8

pag_blob

BP

Массивы данных в двоичном коде

9

pagids

GP

Учет генераторов

10

pagjog

LP

Не используется

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

Страница заголовка базы данных

Эта страница всегда открывает базу данных и имеет порядковый номер 0. Здесь размещена информация общего плана о базе данных в целом. В начале страницы содержатся сведения о размере страниц базы данных, номере версии ODS (One-Disk-Structure), дате создания базы данных, версии операционной системы, под управлением которой была создана база данных, о количестве генераторов, о количестве выполненных транзакций, контрольной сумме базы данных и т. д.

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

Страница указателей

Страница указателей содержит ссылки на страницы с данными. Как правило, номер первой страницы указателей — 2. При необходимости сервер InterBase добавляет новые страницы указателей и присваивает им текущие (следующие по порядку) номера. Каждой таблице базы данных поставлена в соответствие одна или несколько страниц указателей. Страница указателей содержит список номеров страниц данных одной таблицы. Поэтому при поиске требуемых данных сервер InterBase последовательно просматривает страницы указателей, принадлежащих одной таблице, и, соответственно, страницы данных до тех пор, пока не будет обнаружена нужная запись (или записи).

Страница учета транзакций

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

  • • 0 — транзакция активна или потеряна (подтверждения или отката не было);
  • • 1 — транзакция завершилась подтверждением изменений в базе данных;
  • • 2 — транзакция завершилась откатом (отказом от подтверждения изменений);
  • • 3 — транзакция находится в неопределенном состоянии (limbo).

Подробнее о состояниях транзакции см. гл. 10.

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

Каждая стартующая транзакция прочитывает все листы учета транзакций и получает очередной порядковый номер (указатель) и ей присваивается состояние 0 (активная транзакция). Затем эта транзакция на соответствующем листе учета записей пытается создать версию нужной записи. Для этого просматриваются все предыдущие версии требуемой записи и анализируются состояния транзакций, создавшие предыдущие версии записи. Если предыдущие транзакции имеют состояние 1 или 2, то транзакция создает собственную версию записи. Если предыдущие транзакции имеют другое состояние, то подключается механизм разрешения конфликтных ситуаций.

Страница учета страниц

Страница учета страниц всегда располагается после страницы заголовка базы данных и имеет порядковый номер 1. Далее страницы учета страниц располагаются со строго определенным интервалом. Размер интервала зависит от размера страниц базы данных.

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

Страницы учета страниц содержат информацию о назначении всех остальных страниц базы данных и о состоянии каждой страницы. Любая страница базы данных может находиться в одном из трех состояний:

  • • 0 — нераспределенная (not allocated). Когда требуется страница любого типа, сервер InterBase проверяет, есть ли в наличии свободная (нераспределенная страница). Если «да», то сервер InterBase определяет тип страницы и присваивает ей очередной номер. Затем новая страница присоединяется к соответствующему множеству страниц и на листе указателей добавляется новая запись с указателем на добавленную страницу, а на последней странице множества страниц устанавливается ссылка на эту страницу. Если «нет», то сервер InterBase добавляет новый блок пустых страниц и первой из них присваивает тип и порядковый номер (распределяет), выполняя соответствующие записи на листе указателей, и т. д. Остальные страницы пока остаются свободными;
  • • 1 — распределенная и незаполненная (allocated with space). Сервер InterBase присваивает ей тип и порядковый номер. Затем делает соответствующую пометку на листе учета страниц и листе указателей и т. д.;
  • • 2 — распределенная и заполненная (allocated and full). Сервер InterBase ищет свободную страницу и распределяет ее. Если свободных страниц нет, то добавляет новый блок страниц, увеличивая общий объем базы данных.

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

Удалить (или перераспределить) потерянную страницу можно только специальными методами, например с помощью команды gfix.

Страница записей таблицы

Страницы записей группируются по принадлежности к таблице. На странице указателей имеется ссылка на первый лист коллекции страниц записей выбранной таблицы. Каждая страница записей, кроме последней, имеет ссылку на следующий лист коллекции. Заголовочная часть каждой страницы записей содержит общую информацию: имя таблицы, которой принадлежит страница, порядковый номер страницы, ссылку на следующую страницу и пр. Далее располагаются сами записи таблицы. Примерный внешний вид записей представлен на рис. 10.1.

Заполнение страницы начинается от конца к началу. Если размер страницы большой, то на одной странице может располагаться несколько версий одной записи. Удаление старых версий записи (уборка «мусора») выполняется специальными процедурами (см. гл. 10). При малых размерах страницы и длинных записях одна версия записи может размещаться на нескольких страницах, при этом скорость обработки данных снижается. Каждая запись может иметь ссылку на ВТ 05-поле, в котором хранится (в двоичном коде) большой объем информации.

Страница учета ВТОВ-полей (двоичных массивов)

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

Страница индексов

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

Страница вершин индексов

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

Страница генераторов

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

Примерная структура файла базы данных (.#с!Ь) показана на рис. 3.1.

Примерная структура файла базы данных

Рис. 3.1. Примерная структура файла базы данных

Добавление новых страниц в базу данных выполняется блоками. Количество страниц в блоке фиксированное и зависит от выбранной версии InterBase (как правило, 16 страниц). Свободные страницы (UP#n) распределяются сервером автоматически, тип страницы также определяется сервером.

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

Содержимое страниц — записей таблицы, индексов, BL OB-полей, генераторов — в том или ином виде предъявляется пользователю базы данных.

Для управления всеми перечисленными страницами сервер InterBase создает системные таблицы, имена которых начинаются с символов RDB%. Например, RDB%Pages — системная таблица ссылок на страницы базы данных.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 

Популярные страницы