Basics
The idea is to get a behavior similar to assert/1
,
retract/1
and clause/2
, but the terms are stored on
files instead of in primary memory.
The differences compared with the Prolog database are:
- A database must be opened before any access and closed after the
last access. (There are special predicates for this:
db_open/[4,5]
and db_close/1
.)
- The functors and the indexing specifications of the terms to
be stored have to be given when the database is
created. (see The DB-Spec).
- The indexing is specified when the database is created. It is
possible to index on other parts of the term than just the
functor and first argument.
- Changes affect the database immediately.
- The database will store variables with blocked
goals as ordinary variables.
Some commercial databases can't store non-ground terms
or more than one instance of a term. This library module
can however store terms of either kind.