General-purpose databases that never delete or update data in-place [closed]
Solution 1:
There is an approach to designing systems with an idea of never deleting or mutating data called Event Sourcing. Basically, the idea is to store events (or facts) that change the system state, instead of snapshots of the state. The history of events can be replayed later on to produce a certain purpose-specific projection of what the state at any point in time looked like. Multiple projections built for different purposes can coexist in the system. More information can found on the following web sites:
- http://martinfowler.com/eaaDev/EventSourcing.html
- http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/
It's in line with what you are describing, but rather than being just a database model, Event Sourcing and Command Query Responsibility Segregation (CQRS) prescribe a special way of designing the whole system including the database and business logic layers.
There are a few frameworks that follow this approach, such as:
- http://www.axonframework.org/
- http://qi4j.org/
- http://en.jdon.com/
While this does not directly answer your question, it may provide a different perspective on the problem.
Solution 2:
Irmin is a distributed database that follows the same design principles as Git.