[Openmcl-devel] [ANN] Common Lisp Prevalence
Sven Van Caekenberghe
sven at beta9.be
Tue Jun 10 16:30:54 EDT 2003
Today, I released the first version of 'Common Lisp Prevalence', a
proof of concept implementation of Object Prevalence for Common Lisp.
Object Prevalence ( http://www.advogato.org/article/398.html ) is a
simple but interesting concept first proposed by Klaus Wuestefeld in
2001. Basically, the idea is this:
- Most databases are only a couple of hundreds of megabytes big,
often even less.
- Most computers can easily take a couple of hundreds of megabytes of
data in RAM, big servers can hold many gigabytes.
- Mapping objects to databases is at least tedious and time
consuming, but often also complex and error prone.
- Let's throw away the database and just consider the domain model
objects as the database.
- Let's make sure we can serialize and deserialize our objects to and
from a some presistent medium such as a file system.
- If we store our complete set of domain model objects to a
persistent medium we create a snapshot.
- We query by using the data structure manipulation functionality of
our programming language, running from RAM, queries will be extremely
- Let's agree to only change our object model using transaction
objects that combine the data and the functionality to execute the
- In order to preserve the ACID properties of our system, we log each
transaction to some persistent medium by serializing it after we
execute it. The is called the transaction log.
- When the system goes down (intentionally or unintentionally) we
restore its latest state by first reading in the latest snapshot and by
re-executing each transaction from the transaction log.
- Transactions must be deterministic and re-entrant (so they also
need to record the current time if necessary).
- In a multi-threaded system, transactions are globally serialized.
Openmcl-devel mailing list
Openmcl-devel at clozure.com
More information about the Openmcl-devel