[Openmcl-devel] [ANN] Common Lisp Prevalence

Sven Van Caekenberghe sven at beta9.be
Tue Jun 10 13:30:54 PDT 2003


Today, I released the first version of 'Common Lisp Prevalence', a 
proof of concept implementation of Object Prevalence for Common Lisp.

See http://homepage.mac.com/svc/prevalence/readme.html

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 
fast.
   - Let's agree to only change our object model using transaction 
objects that combine the data and the functionality to execute the 
transaction.
   - 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.

Sven


_______________________________________________
Openmcl-devel mailing list
Openmcl-devel at clozure.com
http://clozure.com/cgi-bin/mailman/listinfo/openmcl-devel



More information about the Openmcl-devel mailing list