web-dev-qa-db-fra.com

Comment Version Control Schema PostgreSQL avec des commentaires?

Je contrôle la plupart de mes travaux avec GIT : code, documentation, configuration du système. Je suis capable de le faire car tout mon travail précieux est stocké sous forme de fichiers texte.

J'ai également écrit et j'ai affaire à beaucoup de schéma SQL pour notre base de données Postgres. Le schéma comprend des vues, des fonctions SQL et nous allons écrire des fonctions Postgres dans [~ # ~] r [~ # ~ ~] Langue de programmation (VIA PL/R ).

J'essayais de copier et de passer le schéma des morceaux que moi et mes collaborateurs écrivent mais j'oublie de le faire. La copie et l'action passée sont répétitives et évacuées.

La méthode pg_dump/pg_restore ne fonctionnera pas car elle perd ses commentaires.

Idéalement, j'aimerais avoir un moyen d'extraire mon schéma actuel dans un fichier ou des fichiers et préserver les commentaires afin que je puisse faire le contrôle de la version.

Quelle est la meilleure pratique du schéma de contrôle de la version avec des commentaires?

9
Aleksandr Levchuk

Pourquoi ne-tu pas COMMENT ON les différents SCHEMA Composants, de cette façon vos commentaires sont dans le schéma et seront déversés.

Commentaire stocke un commentaire sur un objet de base de données.
Pour modifier un commentaire, émettez une nouvelle commande de commentaire pour le même objet. Une seule chaîne de commentaire est stockée pour chaque objet. Pour supprimer un commentaire, écrivez null à la place de la chaîne de texte. Les commentaires sont automatiquement supprimés lorsque l'objet est supprimé.
9
xenoterracide

La version contrôlant les schémas a toujours été problématique pour moi. En général, la version contrôle le schéma généré par l'outil de modélisation de données que j'utilise. Le modèle est également contrôlé par la version. J'utilise des diffs entre le schéma actuel et précédent pour créer le patch requis pour mettre à jour le schéma. Certains outils de modélisation créent des scripts de mise à jour de schéma utilisables. Les scripts de mise à jour sont également contrôlés de version.

Je vois parfois des scripts destinés à vider le schéma dans un format approprié pour régénérer le schéma. L'un d'entre eux peut être ce que vous recherchez. Certains des outils de modélisation et de requête sont capables de créer des scripts de régénération de schéma forment un schéma existant. Si vous pouvez script, cela peut vous donner un fichier adapté au contrôle de la version.

2
BillThor

Une alternative (ou vous pouvez les combiner) à ma proposition précédente consiste à écrire votre code SQL dans votre éditeur (IDE) et à enregistrer les fichiers et à les engager à votre VCS, après cela exécutez le code de la base de données à l'aide de psql -1f. De cette façon, le code est contrôlé par la version avant d'être exécuté.

2
xenoterracide

Je travaille dans un projet similaire. C'est ma proposition de conception:

  1. Commentaire Les objets DB sur une base régulière permettent de dire toutes les deux semaines ou deux fois par mois.
  2. faire pg_dump tout (oui obtenez tout pour vous assurer d'avoir tous les petits détails et relations). Nommez-les par yyyymmdd-version.dump
  3. Si vous utilisez GIT, utilisez A Plugin pour les fichiers volumineux
  4. Si vous n'utilisez pas un repo, créez une table simple dans le format texte .csv comme le tableau ci-dessous:

    version | file name | date | description | 1.0 | yyyymmdd-v10.dump | yyyymmdd | new version of user table | 1.1 | backupDB-v11.dump | yyyymmdd | normalized reports tables |

  5. en gardant une relation dans le fichier CSV des décharges générés par le nom de fichier, vous pouvez les suivre facilement et vous assurer que la restauration fonctionnera parce que vous avez absolument largué tout.

De nos jours, tout stockage en nuage ou sur place ne devrait pas être si cher, même si vous parlez de TBS de données. Il y a des 700 à 1000 USD avec jusqu'à - 16 To .

Vous pouvez même économiser $$$ beaucoup plus si vous vous déplacez dans un nuage de stockage comme le genre le plus populaire AWS S

Si une bonne conception et des normes de l'organisation sont définies pour garder une trace de toute l'infrastructure informatique et des actifs, cela ne devrait pas être douloureux une fois mis en œuvre, il peut être relativement simple et vous permettra de sauvegarder vos douleurs de configuration et le plus important encore ...

0
Andres Leon Rangel