Шаг 90.
Visual Prolog.
Домены внешних баз данных

    На этом шаге мы рассмотрим домены внешних баз данных.

    Базы данных используют шесть стандартных доменов, приведенных в таблице 1.

Таблица 1. Стандартные домены внешних баз данных
Домен Для чего используется
db_selector Домен для объявления селекторов баз данных
bt_selector Домен для объявления селекторов В+ деревьев
place Домен для объявления местоположения базы данных (в памяти или на диске)
accessmode Домен, решающий, как использовать файл
denymode Домен, определяющий, как остальные пользователи будут открывать файл
ref Ссылка на расположение терма в цепочке

Числа-указатели в базе данных

    Всякий раз при введении нового терма в базу данных Visual Prolog присваивает ему число-указатель. Вы можете использовать число-указатель терма (далее мы будем говорить просто "указатель") для выборки, перемещения или замены терма, a также для доступа к предыдущему или последующему терму. Вы можете также внести затель в В+ дерево, а затем использовать В+ дерево для сортировки или быстрого поиска терма.

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

Домен ref

    Указатель - это особый тип данных: вы можете включать его во внутреннюю базу данных, выводить его операторами write и writef, но не можете внести его с клавиатуры. Можно объявить аргументы предикатом, предназначенных для работы с указателями, как принадлежащие домену ref.

    Если вы удалите терм предикатом term_delete, система сможет вновь использовать указатель удаленного терма при внесении нового терма в базу данных. Это происхот атоматически, однако если указатели в силу каких-то причин были сохранены во внутренней базе данных или в В+ дереве, то нельзя гарантировать, что данный указатель связан именно с тем термом, который вы имеете в виду. Здесь поможет опция проверки ошибок, включаемая стандартным предикатом db_reuserefs.

Предикат db_reuserefs/2

    Предикат db_reuserefs имеет следующую форму:

   db_reuserefs (DBase,ReUse) % (i,i)

    где Dbase - это db_selector, a ReUse - беззнаковое целое число. Оно должно быть установлено в 0 для разрешения проверки на использование освобожденных термов и l для ее запрещения. Расход памяти на проверку очень мал (4 байта на терм), но эти 4 байта никогда не будут освобождены. Если вы постоянно создаете и удаляете термы, ваша база данных будет постоянно разрастаться. Основная цель db_reuserefs - помочь в отслеживании ошибок при разработке программы.

    На следующем шаге мы рассмотрим обработку баз данных.




Предыдущий шаг Содержание Следующий шаг