This is a notice of a few little additions and an invitation to comment if anyone is so inclined.

Persistent Sets (src/elephant/pset.lisp)
----------------------------------------

I added a simple persistent set class, pset, to Elephant. Currently there is a default implementation based on btrees, but a backend could easily override it to implement something more efficient. This API may be tweaked prior to 1.0 so consider it a beta feature.

Snapshot Sets for Standard Classes (src/contrib/eslick/snapshot-db.lisp)
------------------------------------------------------------------------

I wrote a small datastructure the other day called snapshot-set as an example for the scenarios chapter of the new manual. A snapshot-set is a simple mechanism for persisting sets of standard objects and hash tables by adding objects to a set and loading/unloading the objects as a class including reconstructing all the pointers properly.

There are some restrictions that a user would need to keep track of:

- Contamination: any standard object referred to in a hash-table or standard-object is automatically pulled into the set - Supported aggregates: Only hash tables can be members of a set, arrays, lists, etc are not allowed - Maximum set size: Snapshots are currently limited by the maximum size of a transaction

If you have a graph, you can just add the node to the root of a set and the whole graph will get saved. Update it at full in-memory speed and when you're done, just call snapshot on the set object and the persistent store is updated. The set update operation is transaction protected, so other threads can call restore and see the last coherent state.

Ian

_______________________________________________
elephant-devel site list
[EMAIL PROTECTED]
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to