Prevayler

Cool idea. Forget databases. With massive cheap RAM just keep business objects in RAM and persist snapshots of them once in a while. In-between snapshots, record all incoming commands in a log file. If you crash just, rehydrate the last snapshot, apply commands in the log file and keep running. Read the FAQ for details.

Key issues with the approach:

  1. Data must never grow larger than memory (massive swap file?)
  2. No query language for object pool (solvable)
  3. Impact of object schema changes on production systems
  4. Possible data inconsistency if exception thrown
  5. Loss of declarative specifiers for data types and relationships

Benefits:

  1. ACID all taken care of; no explicit transactions
  2. Simple technique; less code than O/R mapping approaches
  3. Very high performance possible
  4. No database license costs

Many years ago I ran into the idea of putting the transaction semantics above the object layer. That's what this essential does. Not sure how they can claim that rollback is no longer needed. What happens if one object rejects a state change? How do previous objects changed in the same transaction get reverse?

What intrigues me most is how this could dovetail beautifully with code generation. Need to chew on it some more. Seems like a great approach to systems with very complex business logic but not too much data. 

Print | posted on Tuesday, February 10, 2004 1:45 PM

Feedback

No comments posted yet.

Your comment:





 
Please add 1 and 3 and type the answer here:

Copyright © Ian Wijesinghe

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski