Integra Spanner a Liquibase

En esta página, se describe cómo administrar los cambios del esquema de la base de datos de Spanner. con Liquibase.

Liquibase es una biblioteca independiente de base de datos de código abierto para y aplicar cambios en el esquema de la base de datos. Admite SQL, así como métodos formatos como XML, YAML y JSON.

Liquibase puede orientarse a las bases de datos de Spanner. Es compatible con todas Funciones de Spanner, con algunas limitaciones

  • Para conocer las limitaciones generales, consulta las limitaciones.
  • Para ver información adicional sobre las bases de datos de dialectos de PostgreSQL, como los requisitos de Liquibase, los tipos de cambio admitidos y las limitaciones, consulta PGAdapter y Liquibase.

Instala Liquibase

Para usar Liquibase con bases de datos de dialectos de GoogleSQL, debes instalar el Extensión de Spanner Liquibase. Para las bases de datos de dialectos de PostgreSQL, Liquibase puede usar su compatibilidad integrada con PostgreSQL junto con PGAdapter.

GoogleSQL

  1. Sigue las instrucciones de la Documentación de Liquibase instalar y configurar Liquibase, y tomar una instantánea de tu base de datos. En el archivo de configuración liquibase.properties, establece la propiedad url como sigue.

    jdbc:cloudspanner:/projects/PROJECT/instances/INSTANCE/databases/DATABASE
    

    Tu archivo de configuración liquibase.properties puede contener solo esta propiedad. Otras propiedades son opcionales.

  2. Navega a Spanner Liquibase de Versiones de la extensión en GitHub y selecciona versión más reciente.

  3. Selecciona y descarga el archivo JAR con el nombre liquibase-spanner-x.y.z-all.jar, donde x.y.z representa la versión de la extensión de la fila. Por ejemplo, liquibase-spanner-4.17.0-all.jar

  4. Coloca el archivo JAR descargado en el directorio de lib de Liquibase. El archivo JAR incluye la extensión, el SDK de Spanner y el controlador de JDBC de Spanner controlador.

PostgreSQL

  1. Asegúrate de que PGAdapter esté iniciado y en ejecución. en la máquina en la que instalarás Liquibase. Para obtener más información, consulta Inicia PGAdapter.

  2. Sigue las instrucciones de la Documentación de Liquibase instalar y configurar Liquibase, y tomar una instantánea de tu base de datos. En el archivo de configuración liquibase.properties, establece la propiedad url como sigue.

    jdbc:postgresql://localhost:5432/DATABASE_NAME?options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
    

    Tu archivo de configuración liquibase.properties puede contener solo esta propiedad. Otras propiedades son opcionales.

    La cadena url debe incluir options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction ya que Spanner no admite transacciones de DDL. Esto garantizará Las transacciones de DDL se convierten automáticamente en lotes de DDL. Para ver más información, consulta Opciones de DDL para PGAdapter.

Revisa las muestras de Liquibase

GoogleSQL

El archivo de registro de cambios de muestra changelog.yaml incluido en el La extensión GoogleSQL Liquibase demuestra muchas de las funciones de Liquibase y cómo usarlas con Spanner.

PostgreSQL

El archivo de registro de cambios de muestra dbchangelog.xml disponible en la Repositorio de GitHub de PGAdapter y Liquibase demuestra muchas de las funciones de Liquibase y cómo usarlas con Spanner

Guía de inicio rápido de Liquibase

En esta guía de inicio rápido, se muestra cómo usar Liquibase para agregar una tabla Singers a una en la base de datos.

Antes de comenzar

  • Asegúrate de haber completado los pasos anteriores para la instalación. Liquibase

  • Crear una instancia de Spanner

  • Crea una base de datos de dialectos de GoogleSQL o de PostgreSQL.

  • Solo para bases de datos de dialectos de PostgreSQL, asegúrate de que PGAdapter se haya iniciado y esté en ejecución en la misma máquina que la de Liquibase. Para obtener más información, consulta Inicia PGAdapter.

  • Solo para las bases de datos de dialectos de PostgreSQL, crea databasechangeloglock y databasechangelog con el comando create_database_change_log.sql. Debes crear estas tablas para anular las tablas que Liquibase crea automáticamente en tu base de datos. Esto es para garantizar que los tipos de datos de PostgreSQL correctos Spanner se usan en estas tablas.

    Puedes ejecutar la secuencia de comandos con el siguiente comando:

    psql -h localhost -d DATABASE_NAME -f create_database_change_log.sql
    
  • Permite que la extensión de Spanner Liquibase use por tu cuenta de forma temporal Ejecuta el siguiente comando para ejecutar las siguientes credenciales de usuario de Spanner para el acceso a la API: Comando gcloud:

    gcloud auth application-default login
    

Crea un archivo changelog.yaml

  1. Ingresa el siguiente YAML en tu editor favorito.

    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)
    

    Este YAML define una tabla llamada Singers con una clave primaria SingerId y una llamada Name para almacenar el nombre del cantante.

    Para las bases de datos de dialectos de PostgreSQL, recomendamos usar minúsculas en la tabla y la columna. y nombres de usuario. Para obtener más información, consulta Distinción entre mayúsculas y minúsculas de PostgreSQL.

    Ten en cuenta que el conjunto de cambios createTable debe incluir una restricción de clave primaria. y el nombre de la restricción de la clave primaria debe ser pk_table_name.

  2. Guarda los cambios como changelog.yaml.

Ejecuta Liquibase

Para aplicar el conjunto de cambios en changelog.yaml, ejecuta el siguiente comando:

liquibase --changeLogFile changelog.yaml update

Liquibase usa la URL que definiste en el archivo liquibase.properties. Tú puedes anular el valor del archivo agregando el siguiente argumento al comando anterior:

--url URL

Verifica tus cambios

Las actualizaciones del paso anterior hicieron que se agregara la tabla Singer a tu en la base de datos. Además, las tablas DATABASECHANGELOG y DATABASECHANGELOGLOCK se agregado (base de datos de dialectos de GoogleSQL) o actualizado (base de datos de dialectos de PostgreSQL).

Puedes verificar la existencia de estas tablas con la consola de Google Cloud. o gcloud CLI. Por ejemplo, ejecutar la consulta en SQL SELECT * FROM INFORMATION_SCHEMA.TABLES muestra una lista de todas las tablas en tu base de datos.

gcloud spanner databases execute-sql DATABASE_NAME --instance=INSTANCE \
    --sql='SELECT * FROM INFORMATION_SCHEMA.TABLES'

Puedes ver un registro de los cambios que se aplicaron si consultas el contenido de DATABASECHANGELOG.

¿Qué sigue?