Question

Je cherche un moyen d'automatiser la migration de schéma pour de telles bases de données comme MongoDB ou CouchDB.

De préférence, ce instument doit être écrit en python, mais toute autre langue est ok.

Était-ce utile?

La solution

Depuis une base de données NoSQL peut contenir d'énormes quantités de données que vous ne pouvez pas migrer dans le SGBDR régulière sence. En fait, vous ne pouvez pas le faire pour SGBDR ainsi que dès que vos données passe un certain seuil de taille. Il est impossible de mettre votre site vers le bas pour une journée pour ajouter un champ à une table existante, et donc avec SGBDR vous finissez par faire des taches laids comme l'ajout de nouvelles tables juste pour le terrain et faire joint pour accéder aux données. Dans le monde NoSQL vous pouvez faire plusieurs choses.

  • Comme d'autres ont suggéré que vous pouvez écrire votre code afin qu'il traitera différentes « versions » du schéma possible. ce qui est généralement plus simple alors il semble. De nombreux types de changements de schéma sont trivial à coder autour. par exemple si vous souhaitez ajouter un nouveau champ au schéma, vous ajoutez juste à tous les nouveaux dossiers et il sera vide sur tous les anciens enregistrements (vous ne serez pas « champ n'existe pas » erreurs ou quoi que ce soit;). si vous avez besoin d'une valeur « par défaut » pour le champ dans les anciens enregistrements, il est trop trivialement fait dans le code.
  • Une autre option et en fait la seule option raisonnable aller de l'avant avec les changements de schéma non triviales comme renomme terrain et les changements structurels est de stocker schema_version dans chaque enregistrement, et d'avoir un code pour migrer des données d'une version à l'autre sur LIRE . à savoir si votre version actuelle de schéma est de 10 et que vous lisez un enregistrement de la base de données avec la version 7, votre couche db doit appeler migrate_8, migrate_9 et migrate_10. De cette façon, les données qui est accessible sera migré progressivement vers la nouvelle version. et si ce dernier n'a pas, alors qui prend soin quelle version est-il;)

Autres conseils

L'un des avantages supposés de ces bases de données est qu'ils sont sans schéma, et donc ne pas besoin de schéma outils de migration. , Vous écrivez votre code au lieu de traitement de données pour traiter la variété des données stockées dans la db.

Si vos données sont suffisamment grandes, vous constaterez probablement que vous ne pouvez pas jamais migrer les données, ou qu'il ne soit pas avantageux de le faire. Cela signifie que lorsque vous faites un changement de schéma, le code doit continuer à être rétrocompatible avec les anciens formats pour toujours.

Bien sûr, si vos données « âge » et finira par expirer de toute façon, cela peut faire la migration de schéma pour vous - tout simplement changer le format pour les données nouvellement ajoutées, puis attendez toutes les données de l'ancien format expirer - vous pouvez retirer la Code compatibilité ascendante.

Lorsqu'un projet a besoin d'une migration de schéma en ce qui concerne une base de données NoSQL me fait penser que vous pensez toujours d'une manière de base de données relationnelle, mais en utilisant une base de données NoSQL.

Si quelqu'un va commencer à travailler avec des bases de données NoSQL, vous devez comprendre que la plupart des « règles » pour un SGBDR (à savoir MySQL) ont besoin d'aller trop par la fenêtre. Des choses comme des schémas stricts, la normalisation, à l'aide de nombreuses relations entre les objets. NoSQL existe pour résoudre des problèmes qui ne nécessitent pas toutes les « caractéristiques » supplémentaires fournies par un SGBDR.

Je vous invite à écrire votre code d'une manière qui ne prévoit pas ou besoin d'un schéma difficile pour votre base de données NoSQL - vous devez soutenir un ancien schéma et convertir un enregistrement de document à la volée lorsque vous accédez si si vous avez vraiment veulent plus de champs de schéma sur cet enregistrement.

S'il vous plaît garder à l'esprit que le stockage NoSQL fonctionne mieux lorsque vous pensez et la conception différemment comparé à l'utilisation d'un SGBDR

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top