title: How would you implement a revision control system for your models in your prefered db paradigm?
body: <p>I found out that RCS for models is an interesting problem to solve in the context of data persistence. They are several solution using the django ORM to achieve this <a href="http://code.google.com/p/django-reversion/" rel="nofollow noreferrer">django-reversion</a> and <a href="http://code.djangoproject.com/wiki/AuditTrail" rel="nofollow noreferrer">AuditTrail</a> each of which propose their own way to do it.</p>
  
  <p>Here is the model (in django-model-like format) which I would like to have revisions :</p>
  
  <pre><code>class Page(Model):
  
      title = CharField()
      content = TextField()
      tags = ManyToMany(Tag)
      authors = ManyToMany(Author)
  </code></pre>
  
  <ul>
  <li>Each revision should be annotated with a <strong>date</strong>, a <strong>revision number</strong>, a <strong>comment</strong> and the <strong>user</strong> that did the modification.</li>
  </ul>
  
  <p>How would you do it in you preferred db (Mongo, neo4j, CouchDb, GAE Datastore) ?</p>
  
  <p><strong>Please post only one example of RCS models per post.</strong></p>
  
  <p>I'm not asking for a complete code (maybe an explanation is enough?) but enough to see how this problem can be tackled in each db type.</p>