Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Множественный просмотр.

Для того чтобы иметь более одного внутреннего указателя на одно и то

же B-дерево вы можете открыть это дерево несколько раз. Заметьте однако,

что B-дерево, на которое ссылается несколько указателей, не может быть

обновлено пока не удалены дополнительные указатели; для этого требуется

закрытие B-дерева соответствующие число раз. Например, если вы открыли

B-дерево 3 раза для получения 4 внутренних указателей, то перед обновле-

нием его требуется закрыть так же 3 раза.

Стандартные предикаты для b-деревьев

Турбо Пролог имеет несколько стандартных предикатов для обработки

B-деревьев, эти предикаты работают подобно одноименным предикатам обра-

ботки баз данных.

Bt_create/5

Вы создаете новое B-дерево с помощью предиката bt_create.

bt_create(Dbase,BtreeName,Btree_Sel,

KeyLen,Order) /*(i,i,o,i,i*/

Аргумент BtreeName определяет имя нового дерева. Это имя использует-

ся в дальнейшем в качестве аргумента для bt_open Аргументы KeyLen и Order

задаются в момент создания B-дерева. После этого их изменять нельзя.

Bt_open/3

Этот предикат открывает уже созданное B-дерево:

bt_open(Dbase, BtreeName, Btree_Sel) /*(i,i,o)*/

В момент открытия или создания B-дерева возвращается значение селек-

тора B-дерева tree_Sel Селектор B-дерева принадлежит к предопределенному

домену t_selector и указывает на B-дерево, когда система выполняет опера-

ции поиска или позиционирования. Связь между именем B-дерева и его селек-

тором та же самая, что и связь между физическим именем файла и соответст-

вующим ему символическим именем.

Вы можете открыть данное B-дерево более чем один раз для выполнения

нескольких одновременных просмотров. Каждый раз, когда B-дерево открыто

устанавливается описатель, и каждый описатель соответствует своему внут-

реннему указателю B-дерева. Если B-дерево было открыто более чем один раз

и дополнительные указатели не были закрыты, то обновить его невозможно.

Bt_clost/2 и bt_delete/2

Эти предикаты используются для закрытия B-дерева или его удаления:

bt_close(Dbase,Btree_Sel) /*(i,i)*/

bt_delete(Dbase,BtreeName) /*(i,i)*/

Обращение к bt_close высвобождает внутренние буферы с именем

BtreeName.

Bt_statistics/8

Предикат bt_statistics возвращает статистическую информацию для

B-дерева, на которое указывает Btree_Sel.

bt_statistics(Dbase,Btree_Sel,NumKeys,NumPages,/*(i,i,o,o,*/

Depth,Order,KeyLen,PgSize) /*(o,o,o,o)*/

Аргументы bt_statistics:

Dbase - селектор, определяющий базу данных;

Btree_Sel - селектор B-дерева;

NumKeys - связывается с общим числом ключей в B-дереве;

NumPages - связывается с общим числом страниц в B-дереве;

Depth - связывается с глубиной B-дерева;

Order - связывается с порядком B-дерева;

KeyLen - связывается с длиной ключа;

PgSize - связывается с размером страницы в байтах.

Key_insert/4 и key_delete/4

Предикат используется для обновления B-дерева:

key_insert(Dbase,Btree_Sel,Key,Ref) /*(i,i,i,i)*/

key_delete(Dbase,Btree_Sel,Key,Ref) /*(i,i,i,i)*/

Задавая аргументы key и Ref, можно удалить определенный выход в

B-дереве с двоичными ключами.

Соседние файлы в папке Документация