MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Façons d'implémenter la gestion des versions de données dans MongoDB

La première grande question lorsque vous plongez dans ce sujet est "comment voulez-vous stocker les changesets" ?

  1. Différences ?
  2. Des copies complètes ?

Mon approche personnelle serait de stocker les diffs. Parce que l'affichage de ces diffs est vraiment une action spéciale, je mettrais les diffs dans une collection "historique" différente.

J'utiliserais la collection différente pour économiser de l'espace mémoire. Vous ne voulez généralement pas un historique complet pour une requête simple. Ainsi, en gardant l'historique hors de l'objet, vous pouvez également le garder hors de la mémoire couramment consultée lorsque ces données sont interrogées.

Pour me faciliter la vie, je ferais en sorte qu'un document d'historique contienne un dictionnaire de différences horodatées. Quelque chose comme ça :

{
    _id : "id of address book record",
    changes : { 
                1234567 : { "city" : "Omaha", "state" : "Nebraska" },
                1234568 : { "city" : "Kansas City", "state" : "Missouri" }
               }
}

Pour me simplifier la vie, je ferais de cette partie de mes DataObjects (EntityWrapper, peu importe) que j'utilise pour accéder à mes données. Généralement, ces objets ont une certaine forme d'historique, de sorte que vous pouvez facilement remplacer le save() méthode pour effectuer ce changement en même temps.

MISE À JOUR :2015-10

Il semble qu'il existe désormais une spécification pour la gestion des différences JSON. Cela semble être un moyen plus robuste de stocker les différences/changements.