Pouvez-vous partager vos réflexions sur la manière d'implémenter le versionnage des données dans MongoDB. (J'ai posé une question similaire à propos de Cassandra . Si vous avez des idées qui db est mieux pour cela, veuillez partager)
Supposons que j'ai besoin de versionner des enregistrements dans un simple carnet d'adresses. (Les enregistrements du carnet d'adresses sont stockés en tant qu'objets json plats). J'attends que l'histoire:
- sera utilisé rarement
- sera utilisé d'un seul coup pour le présenter de façon "machine à remonter le temps"
- il n'y aura pas plus de versions que quelques centaines pour un seul enregistrement. l'histoire n'expirera pas.
J'envisage les approches suivantes:
Créez une nouvelle collection d'objets pour stocker l'historique des enregistrements ou les modifications apportées aux enregistrements. Il stockerait un objet par version avec une référence à l'entrée du carnet d'adresses. Ces enregistrements se présentent comme suit:
{ '_id': 'nouvel identifiant', 'user': user_id, 'timestamp': horodatage, 'address_book_id': 'id de l'enregistrement du carnet d'adresses' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...} }
Cette approche peut être modifiée pour stocker un tableau de versions par document. Mais cela semble être une approche plus lente sans aucun avantage.
Stockez les versions en tant qu'objet sérialisé (JSON) attaché aux entrées du carnet d'adresses. Je ne sais pas comment attacher de tels objets aux documents MongoDB. Peut-être comme un tableau de chaînes. ( Modélisé d'après la version de document simple avec CouchDB )