78 votes

Traiter avec des modifications de schéma dans la Mangouste

Quelle est la meilleure pratique (ou un outil) pour la mise à jour/migration Mangouste schémas que l'application évolue?

43voto

vimdude Points 988

C'est drôle mais, MongoDB est né pour répondre au schéma des problèmes dans les SGBDR. Vous n'avez pas à migrer rien, tout ce que vous avez à faire est de définir la valeur par défaut dans la définition de schéma si le champ est obligatoire.

new Schema({
    name: { type: string }
})

pour:

new Schema({
    name: { type: string },
    birthplace: { type: string, required: true, default: 'neverborn' }
});

6voto

Louis Points 2259

Mise à jour: Testé, cela ne fonctionne pas dans sa forme actuelle, de sa eu la bonne idée d'aller, j'ai eu une migration unique de travailler avec beaucoup de peaufinage du module lui-même. Mais je ne vois pas fonctionner comme prévu sans des changements majeurs et de garder la trace des différents schémas en quelque sorte.


On dirait que vous voulez mangouste-données-migrations

Il est prévu de migrer les anciennes versions de schéma de vos documents que vous utilisez, ce qui est semble être la meilleure façon de gérer les migrations dans mongodb.

Vous n'avez pas vraiment envie de courir ensemble complet des données migrations sur une collection de documents (ala alter table) qu'il met en place une lourde charge sur vos serveurs et pourrait exiger l'application / temps d'arrêt du serveur. Parfois vous pouvez avoir besoin d'écrire un script qui, tout simplement, attrape tous les documents s'applique le nouveau schéma / modifications et enregistrer les appels, mais vous avez besoin de comprendre quand et où le faire. Un exemple pourrait être, l'ajout de migration logique de doc init a plus de performances que de prendre vers le bas le serveur pendant 3 heures pour exécuter des scripts de migration vaut la peine.

J'ai trouvé ce lien très utile, ainsi, fondamentalement, réitère ci-dessus plus en détail et met en œuvre essentiellement au-dessus du nœud concept en php.

N. B. Le module 5 mois vieux, 0 fourches, mais je suis à la recherche autour de et ne pouvez pas trouver quelque chose de mieux / plus utiles que abdelsaid style de réponse..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X