PerDag is a utility package that implements a persistent verions of a DAG.
The key design point is to have the entire DAG in RAM when using it, and the textual data
associated with the DAG and each of it's nodes in disk-based storage that can be brought in quicky.
This is accomplished using two off the shelf open source java tools, Prevayler and JISP.
Prevayler is used for the DAG piece. It basically uses the command pattern to
provide a transaction capability for updates on Java objects. Serialized command objects are
written out as the log files. The DAG itself is the "Prevalent" system. The text data is serialized out
to a random access file using JISP. It also allows B-Tree indices to be built on the files.
Nodes in the Dag maintain weak references to the text data in the JISP store. This enables the garbage
collector to manage how much can reside in RAM at one time.