Up ] Docs Home ]

(.idx) Simple index file

Back ] Next ]

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

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

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

Запись заголовка индексного файла

Байты Описание
00 - 03 Указатель на корневую вершину
04 - 07 Указатель на свободную в списке вершину (-1, если таковая отсутствует)
08 - 11 Указатель на конец файла (размер файла)
12 - 13 Длина ключа
14 Особенности индекса (любое из нижеследующих числовых значений либо их сумма)
а. 1 уникальный индекс
б. 8 индекс имеет дополнительный оператор FOR
15 Сигнатура индекса (для использования в будущем)
16 - 235 Ключевое выражение (не компилируется; до 220 символов)
236 - 455 Выражение FOR (не компилируется; до 220 символов, оканчивающееся пустым символом)
456 - 511 Не используются

Запись вершины индекса

Байты Описание
00 - 01 Атрибуты вершины (любое из нижеследующих числовых значений либо их сумма)
а. 0 вершина индекса
б. 1 корневая вершина
в. 2 лист
02 - 03 Количество существующих ключей (0, 1 или больше)
04 - 07 Указатель на вершину, расположенную непосредственно слева от данной вершины (на том же уровне; -1, если отсутствует)
08 - 11 Указатель на вершину, расположенную непосредственно справа от данной вершины (на том же уровне; -1, если отсутствует)
12 - 511 До 500 символов, включающих в себя значение ключа для длины ключа с четырехбайтовым шестнадцатеричным числом (хранящемся в обычном формате слева направо):
Если вершина является листом (атрибут = 02 или 03), тогда четыре байта содержат подлинный номер номер в базе данных в шестнадцатеричном формате - иначе 4 байта содержат внутрииндексный указатель.

Примечания по структуре индексного файла.