10 mars

Deux approches du contrôle de version de la base de données : basée sur l'état ou basée sur la migration

Suivre les demandes commerciales dynamiques est un défi important pour les bases de données modernes. L'exigence la plus cruciale est d'assurer une mise à jour régulière de la base de données tout en préservant l'ensemble de ses données. Une approche bien planifiée du développement et du déploiement de la base de données via des techniques basées sur l'état ou la migration peut fournir une solution. Cependant, il est essentiel de bien comprendre les deux approches pour déterminer celle qui convient le mieux à vos besoins spécifiques.

L'importance de traiter la mise à jour de la base de données comme un défi distinct

La gestion des bases de données nécessite une connaissance constante des deux éléments distincts qui composent une base de données : les données qu'elle stocke et la structure utilisée pour organiser ces données. La mise à jour d'une base de données nécessite un examen attentif de plusieurs facteurs.

Une base de données comprend la structure des tables, le code des procédures stockées, les données stockées dans ces tables et les interrelations entre les objets de la base de données. Cela présente des défis plus complexes lors de la mise en œuvre des changements. La synchronisation est également cruciale, en particulier lorsque plusieurs développeurs travaillent sur le même objet au sein de la base de données. Il est essentiel de préserver toutes les données de l'entreprise et l'intégralité du code de la base de données et de s'assurer que les données restent sécurisées après les mises à jour.

Contrairement au code d'application, la base de données ne peut pas être mise à jour simplement en supprimant et en remplaçant l'ancienne version par une nouvelle. Heureusement, il existe déjà des méthodes testées et approuvées pour relever ces défis : les modèles de livraison de bases de données basés sur l'état et basés sur la migration. En tant que développeur de base de données, vous utiliserez probablement les deux méthodes en fonction des besoins de votre projet.

Comprendre le déploiement de base de données basé sur l'état

Dans le déploiement de base de données basé sur l'état, le schéma de base de données est stocké dans un état final idéal dans le référentiel de code. Cette approche a été popularisée par Microsoft et implémentée dans sa solution Visual Studio.

L'idée derrière le déploiement basé sur l'état est simple : un instantané de la structure de base de données idéale est conservé et le projet de base de données réel est travaillé pour correspondre à cet idéal. Tous les objets de base de données tels que les tables, les vues, les procédures stockées, les fonctions, les déclencheurs et autres sont stockés sous forme de scripts basés sur l'état dans des fichiers SQL séparés dans leur forme finale.

Lorsque les développeurs de bases de données doivent mettre à jour le schéma de la base de données, ils le déploient sur le serveur local et apportent les modifications nécessaires. L'outil de comparaison génère ensuite des scripts pour synchroniser la base de données réelle avec la base de données idéale. Enfin, le système de contrôle de version télécharge ces modifications sur le serveur.

Les modifications apportées à la livraison de la base de données basée sur l'état sont mises en œuvre de manière séquentielle, des environnements inférieurs aux environnements supérieurs, tels que du développement aux tests, puis à la production.

La livraison de base de données basée sur l'état présente plusieurs avantages, notamment la possibilité de stocker le schéma de la base de données dans le contrôle de source pour une surveillance facile de l'état de la base de données, la détection immédiate des erreurs de compilation dans les fichiers SQL et l'évitement de la nécessité de créer plusieurs scripts pour la même entité. . De plus, toutes les modifications déployées dans la base de données peuvent être surveillées et gérées facilement, et des outils dédiés peuvent générer et exécuter automatiquement des scripts ALTER.

Cependant, l'approche basée sur l'état présente également certains inconvénients, tels que la nécessité de générer un nouveau script pour chaque nouvel environnement et l'impossibilité d'annuler automatiquement les modifications, ce qui peut entraîner des problèmes pour les processus automatisés.

L'approche basée sur l'état est le choix par défaut pour le développement de nouveaux projets, depuis les étapes initiales jusqu'à l'étape finale de la publication de l'application dans la zone de production.

Présentation du déploiement de base de données basé sur la migration

Le déploiement de base de données basé sur la migration fonctionne différemment de l'approche basée sur l'état. Plutôt que d'avoir un instantané unique d'une base de données idéale, le déploiement basé sur la migration utilise une collection de scripts de migration qui transfèrent la base de données réelle d'une version à une autre.

Chaque script de migration est créé avec une instruction DDL spécialisée et un numéro de version incrémentiel, et tous les scripts de migration sont stockés dans le référentiel. Pour mettre à jour une base de données, les scripts de migration doivent être exécutés dans le bon ordre.

L'approche basée sur la migration est couramment utilisée pour les tests de base de données, la mise à jour des bases de données avec de nouvelles fonctionnalités et améliorations, ou la création d'une base de données à partir de scripts utilisés dans l'approche basée sur l'état. De nombreux développeurs préfèrent l'approche basée sur la migration car elle permet une exécution plus rapide des tâches et un déploiement plus rapide des scripts. Cependant, la création manuelle de scripts de migration peut prendre du temps.

Les avantages du déploiement basé sur la migration incluent la possibilité de modifier simultanément le schéma de la base de données et les données, un meilleur alignement avec les meilleures pratiques DevOps, l'exécution du même code dans tous les environnements, de meilleurs tests et contrôles des fonctionnalités et la possibilité d'écrire des scripts de migration dans la programmation. langages autres que SQL.

Cependant, l'approche basée sur la migration présente également certains inconvénients, notamment la nécessité pour les développeurs d'écrire tout le code de migration manuellement, les risques que le code soit remplacé par les modifications d'autres développeurs en cas d'échecs de synchronisation et l'inefficacité lors de l'utilisation de procédures et de fonctions stockées.

Dans l'ensemble, l'approche basée sur la migration est généralement utilisée pour les bases de données existantes qui nécessitent des mises à jour et des améliorations au fil du temps, les modifications étant fournies via des scripts de migration.

Comparaison du déploiement de base de données basé sur l'état et basé sur la migration

La principale différence entre le déploiement de base de données basé sur l'état et basé sur la migration est la source de vérité : la base de données idéale ou les scripts utilisés pour mettre à niveau la base de données. Le choix entre ces approches dépend des exigences et des considérations spécifiques du projet.

Certains développeurs préfèrent l'approche basée sur l'état pour ses tests fiables et son immuabilité, tandis que d'autres optent pour l'approche basée sur la migration pour son adéquation aux défis de déploiement. Cependant, l'écriture manuelle de scripts de mise à niveau peut être une tâche compliquée et chronophage.

Le déploiement basé sur l'état peut utiliser des scripts de mise à niveau générés par ordinateur 95 % du temps, tandis que le déploiement basé sur la migration nécessite des instructions personnalisées dans la plupart des cas. De plus, la livraison basée sur l'état peut faciliter le travail des équipes sur des bases de données complexes avec des dépendances sophistiquées.

Voir le tableau de comparaison ci-dessous pour d'autres différences clés entre ces deux approches :

Les développeurs de bases de données doivent généralement utiliser à la fois des approches basées sur l'état et basées sur la migration. Basé sur l'état est bon pour les systèmes évolutifs au cours des premières étapes d'un projet, tandis que basé sur la migration est meilleur pour les systèmes lancés qui nécessitent des mises à jour et des améliorations. La technologie basée sur l'état est idéale pour les nouveaux projets ou la maintenance de systèmes avec des modifications peu fréquentes, tandis que la technologie basée sur la migration offre un meilleur contrôle sur les modifications et les opportunités de collaboration. Le choix dépend des exigences du projet et les développeurs doivent maîtriser les deux approches.

Mise à jour de la base de données avec Devart Outils SQL dbForge

Devart fournit une gamme d'outils dédiés pour aider les développeurs à effectuer diverses tâches liées aux bases de données, y compris la gestion des modifications de base de données. L'utilisation d'outils spécialisés est cruciale pour automatiser et simplifier la mise à jour des bases de données, à mesure que le nombre de versions et de mises à jour augmente.

Devart's Source Control for SQL Server, un complément populaire pour SSMS, est un composant précieux de l'automatisation DevOps qui fournit une fonctionnalité de contrôle de version de base de données aux développeurs SQL Server. Cet outil fonctionne en mode basé sur l'état et permet aux utilisateurs de suivre et de comparer facilement les modifications, de synchroniser les versions de la base de données et d'annuler les modifications si nécessaire. Il fournit également de nombreuses autres options utiles.

Si votre projet nécessite une livraison basée sur la migration, la comparaison de schémas de Devart pour SQL Server est un autre outil qui peut vous aider. Il permet aux développeurs de comparer et de synchroniser les schémas de base de données entre différentes bases de données et scripts SQL Server. Cet outil peut générer des scripts de mise à niveau, éliminant ainsi le besoin d'écrire des scripts de migration manuellement.

Quel que soit votre modèle de livraison de base de données, l'automatisation des tâches de routine peut vous faire économiser du temps et des efforts. Heureusement, les outils SQL dbForge de Devart sont disponibles pour vous fournir toutes les fonctionnalités nécessaires pour automatiser les tâches liées à la base de données. Que vous ayez besoin d'effectuer une livraison basée sur l'état ou la migration, les outils de Devart peuvent vous aider à automatiser des tâches telles que le contrôle de version, la comparaison de schémas et la synchronisation, vous permettant de rationaliser le processus de mise à jour de la base de données et de travailler plus efficacement.

Conclusion

En conclusion, les approches basées sur l'état et sur la migration sont essentielles pour le déploiement de la base de données, et leur sélection dépend des exigences spécifiques du projet. Alors que la base de données d'état convient au développement de nouveaux projets, la base de migration est préférable pour les mises à jour et les améliorations de bases de données existantes.

Quelle que soit l'approche, l'automatisation des tâches de routine avec des outils spécialisés tels que dbForge SQL Tools peut faire gagner du temps et des efforts aux développeurs de bases de données. Ces outils fournissent les fonctionnalités nécessaires pour la gestion des modifications de la base de données, le contrôle des versions, la comparaison des schémas et la synchronisation.

Avec un essai gratuit entièrement fonctionnel de dbForge SQL Tools, les développeurs peuvent évaluer les pouvoirs des outils et sélectionner celui qui convient le mieux à leurs besoins de déploiement de base de données.

A propos de l'auteure 

Pierre Hatch


{"email": "Adresse e-mail non valide", "url": "Adresse de site Web non valide", "obligatoire": "Champ obligatoire manquant"}