logo search
TurboProlog / Документация / TOM_1

Db_copy/3

Независимо от того, где помещена база данных, ее можно переместить в

другое место расположения, используя предикат db_copy.

db_copy(Dbase, Name, Place) /* (i,i,i) */

Например, при обработке предиката:

db_copy(my_base, "ntw_EMSbase", in_ems)

Турбо Пролог копирует базу данных, связанную с селектором my_base, в но-

вый файл базы данных new_EMSbase, который размещается в расширенной памя-

ти.

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

две идентичные базы данных до тех пор, пока явным способом не удалите од-

ну из них.

После перемещения базы обработка ее может проводится как если бы ни-

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

правильными. То есть, если вы работаете с базой данных в оперативной па-

мяти, и освобождение памяти не занимает большого времени, вы можете ско-

пировать базу данных в файл и продолжать обработку там. Указатель, уста-

новленный для базы данных в оперативной памяти, остается верным после ко-

пирования базы данных в файл.

db_copy используется в нескольких случаях, например:

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

ее в файле после обработки, вместо использования предиката save

и cousuit;

- для копирования баз данных среднего объема с диска в EMS-па-

мять для ускорения доступа;

- для сжатия базы данных, содержащей слишком много свободных

мест, т.к. при копировании базы данных пустые места устраняются.