Cette page explique comment gérer les modifications du schéma de base de données Spanner avec Liquibase pour les bases de données utilisant le dialecte GoogleSQL et celles utilisant le dialecte PostgreSQL.
Liquibase est une bibliothèque Open Source indépendante de la base de données pour le suivi, la gestion et l'application des modifications de schéma de base de données. Elle est compatible avec le langage SQL ainsi qu'avec les formats déclaratifs tels que XML, YAML et JSON.
Liquibase peut cibler les bases de données Spanner. Il est compatible avec toutes les fonctionnalités Spanner, avec quelques limites.
- Pour connaître les limites générales, consultez la section Limites.
- Pour en savoir plus sur les bases de données avec dialecte PostgreSQL, comme les exigences Liquibase, les types de modifications acceptés et les limites, consultez PGAdapter et Liquibase.
Installer Liquibase
Pour utiliser Liquibase avec des bases de données utilisant le dialecte GoogleSQL, vous devez installer l'extension Spanner Liquibase. Pour les bases de données utilisant le dialecte PostgreSQL, Liquibase peut utiliser sa compatibilité PostgreSQL intégrée avec PGAdapter.
GoogleSQL
Suivez les instructions de la documentation Liquibase pour installer et configurer Liquibase, et pour prendre un instantané de votre base de données.
Accédez à la page des versions de l'extension Spanner Liquibase sur GitHub et sélectionnez la dernière version.
Sélectionnez et téléchargez le fichier JAR nommé
liquibase-spanner-x.y.z-all.jar
, où xyz représente le numéro de version de l'extension. Exemple :liquibase-spanner-4.17.0-all.jar
Placez le fichier JAR téléchargé dans le répertoire lib de Liquibase. Le fichier JAR inclut l'extension, le SDK Spanner et le pilote JDBC Spanner.
Dans le fichier de configuration liquibase.properties
, définissez la propriété url
comme suit.
jdbc:cloudspanner:/projects/PROJECT/instances/INSTANCE/databases/DATABASE
Votre fichier de configuration liquibase.properties
ne peut contenir que cette propriété. Les autres propriétés sont facultatives.
PostgreSQL
Assurez-vous que PGAdapter est démarré et en cours d'exécution sur la machine sur laquelle vous installez Liquibase. Pour en savoir plus, consultez Démarrer PGAdapter.
Suivez les instructions de la documentation Liquibase pour installer et configurer Liquibase, et pour prendre un instantané de votre base de données.
Dans le fichier de configuration liquibase.properties
, définissez la propriété url
comme suit.
jdbc:postgresql://localhost:5432/DATABASE_NAME?options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
Votre fichier de configuration liquibase.properties
ne peut contenir que cette propriété. Les autres propriétés sont facultatives.
La chaîne url
doit inclure options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
, car Spanner n'est pas compatible avec les transactions DDL. Cela permet de s'assurer que les transactions DDL sont converties en lots DDL. Pour en savoir plus, consultez Options DDL pour PGAdapter.
Examiner les exemples Liquibase
GoogleSQL
L'exemple de fichier journal des modifications changelog.yaml inclus avec l'extension Liquibase GoogleSQL illustre de nombreuses fonctionnalités de Liquibase et explique comment les utiliser avec Spanner.
PostgreSQL
L'exemple de fichier journal des modifications dbchangelog.xml
disponible dans le dépôt GitHub PGAdapter et Liquibase illustre de nombreuses fonctionnalités de Liquibase et explique comment les utiliser avec Spanner.
Guide de démarrage rapide de Liquibase
Ce guide de démarrage rapide vous explique comment utiliser Liquibase pour ajouter une table Singers
à une base de données.
Avant de commencer
Assurez-vous d'avoir effectué les étapes précédentes pour installer Liquibase.
Créez une instance Spanner.
Créez une base de données avec le dialecte GoogleSQL ou PostgreSQL.
Pour les bases de données utilisant le dialecte PostgreSQL uniquement, assurez-vous que PGAdapter est démarré et en cours d'exécution sur la même machine que votre installation Liquibase. Pour en savoir plus, consultez Démarrer PGAdapter.
Pour les bases de données utilisant le dialecte PostgreSQL uniquement, utilisez le script create_database_change_log.sql pour créer les tables de métadonnées
databasechangeloglock
etdatabasechangelog
. Vous devez créer ces tables pour remplacer celles que Liquibase crée automatiquement dans votre base de données. Cela permet de s'assurer que les types de données PostgreSQL appropriés pour Spanner sont utilisés dans ces tables.Vous pouvez exécuter le script avec la commande suivante :
psql -h localhost -d DATABASE_NAME -f create_database_change_log.sql
Accordez à l'extension Spanner Liquibase l'utilisation temporaire de vos identifiants utilisateur Spanner pour l'accès à l'API en exécutant la commande
gcloud
suivante :gcloud auth application-default login
Créer un fichier changelog.yaml
Saisissez le code YAML suivant dans votre éditeur favori.
databaseChangeLog: - preConditions: onFail: HALT onError: HALT - changeSet: id: create-singers-table author: spanner-examples changes: - createTable: tableName: Singers columns: - column: name: SingerId type: BIGINT constraints: primaryKey: true primaryKeyName: pk_Singers - column: name: Name type: VARCHAR(255)
Ce code YAML définit une table
Singers
avec une clé primaireSingerId
et une colonne appeléeName
pour stocker le nom du chanteur.Pour les bases de données utilisant le dialecte PostgreSQL, nous vous recommandons d'utiliser des noms de tables et de colonnes entièrement en minuscules. Pour en savoir plus, consultez la section Sensibilité à la casse dans PostgreSQL.
Notez que l'ensemble de modifications
createTable
doit inclure une contrainte de clé primaire, et que le nom de la contrainte de clé primaire doit être pk_table_name.Enregistrez vos modifications sous le nom
changelog.yaml
.
Exécuter Liquibase
Appliquez le changeset dans changelog.yaml
en exécutant la commande suivante :
liquibase --changeLogFile changelog.yaml update
Liquibase utilise l'URL que vous avez définie dans le fichier liquibase.properties
. Vous pouvez remplacer la valeur du fichier en ajoutant l'argument suivant à la commande précédente :
--url URL
Vérifier vos modifications
Les mises à jour de l'étape précédente ont entraîné l'ajout de la table Singer
à votre base de données. De plus, les tables DATABASECHANGELOG
et DATABASECHANGELOGLOCK
ont été ajoutées (base de données avec dialecte GoogleSQL) ou mises à jour (base de données avec dialecte PostgreSQL).
Vous pouvez vérifier l'existence de ces tables via la console Google Cloud ou gcloud CLI. Par exemple, l'exécution de la requête SQL SELECT * FROM
INFORMATION_SCHEMA.TABLES
renvoie la liste de toutes les tables de votre base de données.
gcloud spanner databases execute-sql DATABASE_NAME --instance=INSTANCE \ --sql='SELECT * FROM INFORMATION_SCHEMA.TABLES'
Vous pouvez consulter un enregistrement des modifications appliquées en interrogeant le contenu de DATABASECHANGELOG
.
Étapes suivantes
Pour plus d'informations, consultez le dépôt GitHub Spanner Liquibase Extension.
Pour en savoir plus sur Liquibase, consultez la page Premiers pas avec Liquibase.