Liquibase mit Cloud Spanner

Auf dieser Seite wird beschrieben, wie Sie mit der Open-Source-Liquibase-Erweiterung für Cloud Spanner Änderungen am Datenbankschema mit Liquibase verwalten.

Liquibase ist eine datenbankunabhängige Open-Source-Bibliothek zum Verfolgen, Verwalten und Anwenden von Änderungen des Datenbankschemas. Er unterstützt SQL sowie deklarative Formate wie XML, YAML und JSON. Mit der Cloud Spanner Liquibase-Erweiterung können Sie Liquibase für das Targeting auf Cloud Spanner aktivieren. Alle Cloud Spanner-Features werden mit Ausnahme einiger Einschränkungen unterstützt.

Liquibase installieren

Folgen Sie der Anleitung in der Liquibase-Dokumentation, um Liquibase zu installieren und zu konfigurieren.

Vorschauerweiterung installieren

  1. Rufen Sie auf GitHub die Releaseseite für die Liquibase-Erweiterung für Cloud Spanner auf und wählen Sie neuesten Release aus.

  2. Wählen Sie die JAR-Datei mit dem Namen liquibase-spanner-x.y.z-all.jar aus und laden Sie sie herunter, wobei xyz die Versionsnummer der Erweiterung darstellt. Beispiel: liquibase-spanner-1.0.2-all.jar

  3. Legen Sie die heruntergeladene JAR-Datei im Liquibase lib-Verzeichnis ab. Die JAR-Datei enthält die Erweiterung, das Cloud Spanner SDK und den Cloud Spanner JDBC-Treiber.

  4. Konfigurieren Sie die URL für Liquibase im Format jdbc:cloudspanner:/projects/<project>/instances/<instance>/databases/<database>.

Erweiterung verwenden

Die Beispieldatei changelog.yaml, die in der Liquibase-Erweiterung für Cloud Spanner enthalten ist, zeigt viele Funktionen von Liquibase und deren Verwendung mit Cloud Spanner.

Hinweis

  • Prüfen Sie, ob Sie die vorherigen Schritte zur Installation der Erweiterung ausgeführt haben.

  • Vergewissern Sie sich, ob Sie eine Cloud Spanner-Instanz erstellt haben.

  • Prüfen Sie, ob Sie eine Cloud Spanner-Datenbank erstellt haben.

  • Weisen Sie der Erweiterung vorübergehend Ihre eigenen Cloud Spanner-Nutzeranmeldedaten für den API-Zugriff zu, indem Sie den folgenden gcloud-Befehl ausführen:

    gcloud auth application-default login

changelog.yaml erstellen

  1. Geben Sie die folgende YAML-Datei in Ihren bevorzugten Editor ein.

    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
                -  column:
                    name:    Name
                    type:    STRING(255)
    

    Diese YAML-Datei definiert eine Tabelle mit dem Namen Singers und dem Primärschlüssel SingerId sowie eine Spalte mit dem Namen Name, in der der Name des Sängers gespeichert wird.

  2. Speichern Sie die Änderungen als changelog.yaml.

Liquibase ausführen

Führen Sie diese Befehle für Liquibase mit dem folgenden Befehl aus. Ersetzen Sie dabei <URL> durch den JDBC-Verbindungsstring im Format jdbc:cloudspanner:/projects/<project>/instances/<instance>/databases/<database>.

  liquibase --changeLogFile changelog.yaml --url <URL> update

Änderungen prüfen

Durch die Aktualisierungen im vorherigen Schritt wurden Ihrer Datenbank drei neue Tabellen hinzugefügt: Singer, DATABASECHANGELOG und DATABASECHANGELOGLOCK.

Mit der Cloud Console oder dem gcloud-Tool können Sie das Vorhandensein dieser Tabellen prüfen. Wenn Sie beispielsweise die SQL-Abfrage SELECT * FROM INFORMATION_SCHEMA.TABLES ausführen, wird eine Liste aller Tabellen in Ihrer Datenbank zurückgegeben.

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

Sie können einen Datensatz der Änderungen abrufen, die angewendet wurden, indem Sie den Inhalt von DATABASECHANGELOG abfragen.

Nächste Schritte