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 internal 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.