Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
La mise à l’échelle automatique Lakebase est en version bêta dans les régions suivantes : eastus2, westeurope, westus.
La version Autoscaling de Lakebase est la dernière de Lakebase, offrant l'autoscaling, la mise à l'échelle à zéro, la bifurcation et la restauration instantanée. Pour la comparaison des fonctionnalités avec Lakebase Provisioned, consultez le choix entre les versions.
Le branchement dans Lakebase vous permet de versionner, tester et faire évoluer votre environnement de données en toute sécurité, comme lorsque vous créez des branches de votre code dans Git. Vous pouvez créer instantanément des branches isolées et entièrement fonctionnelles pour le développement, l’expérimentation ou le test des modifications de schéma, sans avoir d’impact sur les charges de travail de production.
Par défaut, Lakebase crée une branche unique production lorsque vous créez un projet. Il s’agit de votre branche par défaut, destinée à héberger les données de production de votre application.
Vous pouvez créer des branches supplémentaires en fonction des besoins de votre flux de travail. Par exemple, ajoutez une development branche pour la création et le test, une staging branche pour les tests de préproduction ou créez des branches par développeur pour une isolation complète. Chaque branche fonctionne indépendamment : les modifications apportées à un enfant n’affectent jamais son parent. Avec la réinitialisation de branche, vous pouvez actualiser n'importe quelle branche enfant à partir de sa branche parente pour obtenir le schéma et les données les plus récents, sans initialisation des données ni scripts de démantèlement.
Fonctionnement des branches
Relations parent-enfant
Chaque branche (à l’exception de la branche racine) a un parent. Cela crée une hiérarchie :
production (root branch)
├── staging (child of production)
│ └── feature-test (child of staging)
└── development (child of production)
└── bugfix-branch (child of development)
Cette hiérarchie vous offre une isolation importante : les modifications apportées à une branche enfant n’affectent pas son parent et les modifications apportées à un parent n’apparaissent pas automatiquement dans les enfants. Lorsque vous avez besoin de données mises à jour depuis l'élément parent, vous pouvez réinitialiser la branche enfant. Vous pouvez également créer des branches à partir de n’importe quel point de l’historique du parent, ce qui est utile pour la récupération dans le temps, les tests sur les données historiques ou les scénarios de conformité.
Lorsque vous créez une branche, vous choisissez de l’initialiser à partir de données actuelles ou à partir d’un point spécifique dans le temps. Consultez Créer une branche pour obtenir des instructions pas à pas et des détails sur chaque option.
Stockage de copie en écriture
Lakebase utilise la technologie de copie en écriture pour rendre le branchement parent-enfant efficace. Lorsque vous créez une branche, elle hérite à la fois du schéma et des données de son parent, mais partage le stockage sous-jacent via des pointeurs vers les mêmes données. Uniquement lorsque vous modifiez des données, Lakebase écrit de nouvelles données. En d’autres termes :
- Vos branches apparaissent instantanément ; la taille de votre base de données n’a aucun impact sur l’heure de création de branche
- Vous payez uniquement les données qui changent réellement entre les branches
- La création de branches n’a aucun impact sur les performances de votre charge de travail de production
production branch child branch (at creation)
┌─────────────────┐ ┌─────────────────┐
│ [Data A] │◄──────│ → Data A │ (shared)
│ [Data B] │◄──────│ → Data B │ (shared)
│ [Data C] │◄──────│ → Data C │ (shared)
└─────────────────┘ └─────────────────┘
After modifying data in child branch:
┌─────────────────┐ ┌─────────────────┐
│ [Data A] │◄──────│ → Data A │ (shared)
│ [Data B] │ │ [Data B'] │ (changed)
│ [Data C] │◄──────│ → Data C │ (shared)
└─────────────────┘ └─────────────────┘
Only changed data is stored separately
Travailler avec les branches
Réinitialisation de branche
La réinitialisation de branche met instantanément à jour une branche enfant pour qu’elle corresponde à l’état actuel de son parent. Cela est utile lorsque vous souhaitez actualiser votre branche de développement ou de pré-production avec les données les plus récentes de son parent. L’opération se termine instantanément à l’aide de la technologie de copie en écriture, et vos détails de connexion restent les mêmes.
La réinitialisation de branche ne fonctionne que dans une direction (parent → enfant). Pour déplacer les modifications de l’enfant au parent, utilisez vos outils de migration standard pour appliquer des modifications de schéma. Consultez Réinitialiser une branche pour connaître les étapes détaillées et les scénarios.
Récupération jusqu'à une date et heure
Vous pouvez créer une branche à partir d’un point spécifique dans le temps dans votre fenêtre de restauration, ce qui est utile pour récupérer des erreurs de données telles que des suppressions accidentelles, examiner les problèmes passés ou accéder aux données historiques à des fins d’audit et de conformité. Par exemple, si une table critique a été supprimée hier à 10h23, vous pouvez créer une branche définie sur 10:22 pour extraire les données manquantes. De même, vous pouvez créer des branches reflétant l’état de votre base de données à des dates spécifiques pour les rapprochements financiers, les audits réglementaires ou l’analyse légale. Contrairement à la réinitialisation de branche (qui met à jour une branche existante sur place), la récupération à un point dans le temps crée une branche racine à partir de données historiques tout en laissant votre branche d’origine inchangée et opérationnelle. Voir la restauration à un point dans le temps pour plus de détails.
Types de branches spéciales
Branche par défaut
Lorsque vous créez un projet Lakebase, vous obtenez automatiquement une branche unique production comme branche par défaut. Il commence vide, prêt à accueillir vos données. Vous pouvez créer des branches enfants pour le développement et les tests : testez vos modifications de schéma dans une branche enfant, puis exécutez les mêmes migrations production lorsque vous êtes certain qu'elles fonctionnent.
Votre branchement par défaut n’est jamais réduit à zéro, ce qui garantit qu’il reste disponible même lorsque d’autres branches réduisent leur calcul pendant les périodes d’inactivité.
Branches protégées
Les branches protégées ont des protections pour empêcher les modifications accidentelles. Ils ne peuvent pas être supprimés ou réinitialisés de leur entité parent, et ils sont exemptés de l'archivage automatique pour cause d'inactivité. Les branches protégées bloquent également la suppression du projet lorsqu’elles existent, ce qui vous garantit que vous ne pouvez pas supprimer accidentellement l’infrastructure critique. Utilisez des branches protégées pour les données critiques telles que la production. Pour plus d’informations, consultez les branches protégées .
Impact du branching sur la consommation des ressources
Avec les branches, vous payez uniquement pour ce que vous utilisez réellement.
Stockage : vous payez uniquement pour les données qui changent. Si vous créez une branche de développement et modifiez 1 Go de données dans une base de données de 100 Go, vous payez environ 1 Go de stockage, et non 200 Go. Les 99 Go restants sont partagés entre les différentes branches.
Capacité de calcul : chaque branche a sa propre capacité de calcul que vous pouvez redimensionner indépendamment. Vous payez uniquement pour les heures de calcul actives. Calcule la mise à l’échelle à zéro en cas d’inactivité. Cela signifie qu’une branche de développement que vous utilisez coûte parfois beaucoup moins cher que l’exécution d’un serveur de développement dédié 24/7.
Branche par défaut : votre capacité de traitement de la branche par défaut ne descend jamais à zéro, garantissant ainsi la disponibilité de votre charge de travail de production.
Stratégies de branche
Voici quelques méthodes courantes pour les équipes organiser leurs branches :
Simple (individus et petites équipes)
Utilisez votre branche par défaut avec une branche de développement unique :
production
└── development
Votre branche development est l’endroit où vous créez de nouvelles fonctionnalités en toute sécurité. Vous pouvez apporter des modifications de schéma, ajouter des données de test et expérimenter sans risque pour votre branche de production. Lorsque vous êtes prêt, exécutez vos migrations de schéma testées sur production à l’aide de votre outil de migration, puis réinitialisez development pour commencer avec de nouvelles données.
Avec la préproduction
Ajoutez une branche intermédiaire pour les tests de préproduction :
production
├── staging
└── development
Si vous avez besoin de tests de préproduction, gérez une staging branche qui reflète vos données de branche de production. Déployez votre application là-bas, exécutez des tests d’intégration et de performances sur des données réalistes et gagnez en confiance avant de passer en temps réel. Réinitialisez périodiquement staging à partir de production pour actualiser vos données de test.
Branches par développeur
Chaque développeur fonctionne de manière isolée :
production
└── development
├── dev-alice
├── dev-bob
└── dev-charlie
Ce modèle empêche les développeurs d’interférer avec le travail des autres et permet à tout le monde de tester les modifications de schéma indépendamment. Chaque développeur peut expérimenter ses propres modifications de schéma et de données sans affecter les autres, puis appliquer des migrations testées à la branche partagée development ou production lorsqu'il est prêt.
Étapes suivantes
- Gérer les branches pour apprendre à créer, réinitialiser et supprimer des branches
- Branches protégées pour protéger les branches critiques