На этом шаге мы рассмотрим внешние базы данных в Visual Prolog.
Система внутренних баз данных Visual Prolog, использующая предикаты asserta, assertz, retract и retrctall, является простой и удобной. Однако она уступает и скорости работы с большими базами данных, отчасти из-за этих соображений была создана система внешних баз данных, с помощью которой можно, например, создать:
Система внешних баз данных Visual Prolog поддерживает различные типы приложений, и при этом удовлетворяет следующему требованию: недопустима потеря данных при операции обновления (даже в случае прекращения подачи электропитании).
Предикаты внешних баз данных Visual Prolog обеспечивают следующие возможности:
Внешняя база данных Visual Prolog состоит из двух компонентов: единиц данных, т. е. термов Visual Prolog, сгруппированных в цепочки, и соответствующих B+ деревьев, которые используются для быстрого доступа к данным.
Внешние базы данных запоминают данные и цепочках (chain), а не по отдельности, т. е. взаимосвязанные данные запоминаются совместно. Например, одна цепочка может содержать номера частей списков запросов, в то время как другая содержит имена покупателей. Простые операции с базами данных, такие как добавлении новых велечин и замена или обновление данных, не требуют применения В+ деревьев, становятся важными при сортировке базы и поиске конкретного элемента. Структура внешней базы их изображена на рис. 1.
Рис. 1. Структура внешней базы данных Visual Prolog
Имена всех стандартных предикатов управления базами данных подчиняются следующим соглашениям:
Например, с помощью db_delete удаляется база данных, посредством chain_delete - цепочка, a term_delete удаляет терм.
Есть возможность поддерживать несколько баз данных открытыми одновременно в памяти и на диске. Используя такую гибкость, можно помещать внешние базы дан ных там, где достигается наилучший компромисс между быстродействием и затрата ми памяти.
Для указания одной из нескольких открытых баз данных при каждом вызове стан дартных предикатов используются селекторы, которые определяются доменом db_selector. Он работает аналогично домену file в системе файлов.
Например, следующее объявление декларирует customers и parts селекторами внешних баз данных:
domains db_selector=customers; parts
На следующем шаге мы рассмотрим цепочки.