Auf dieser Seite wird beschrieben, wie Sie Änderungen am Spanner-Datenbankschema mit Liquibase für Datenbanken mit Google SQL- und PostgreSQL-Dialekt verwalten.
Liquibase ist eine Open-Source-Datenbank-unabhängige Bibliothek zum Nachverfolgen, Verwalten und Anwenden von Datenbankschemaänderungen. Es unterstützt sowohl SQL als auch deklarative Formate wie XML, YAML und JSON.
Liquibase kann auf Spanner-Datenbanken ausgerichtet werden. Es unterstützt alle Spanner-Funktionen, mit einigen Einschränkungen.
- Allgemeine Einschränkungen finden Sie unter Einschränkungen.
- Weitere Informationen zu Datenbanken mit PostgreSQL-Dialekt, z. B. Liquibase-Anforderungen, unterstützte Änderungstypen und Einschränkungen, finden Sie unter PGAdapter und Liquibase.
Liquibase installieren
Wenn Sie Liquibase mit Datenbanken im GoogleSQL-Dialekt verwenden möchten, müssen Sie die Spanner Liquibase-Erweiterung installieren. Für Datenbanken mit PostgreSQL-Dialekt kann Liquibase die integrierte PostgreSQL-Unterstützung in Verbindung mit PGAdapter verwenden.
- Folgen Sie der Anleitung in der Liquibase-Dokumentation, um Liquibase zu installieren und zu konfigurieren und einen Snapshot Ihrer Datenbank zu erstellen. Legen Sie in der Konfigurationsdatei
liquibase.properties
das Attributurl
so fest:
jdbc:cloudspanner:/projects/PROJECT /instances/INSTANCE /databases/DATABASE
Your `liquibase.properties` configuration file can contain only this
property. Other properties are optional.
Rufen Sie auf GitHub die Releaseseite für die Liquibase-Erweiterung für Spanner auf und wählen Sie neuesten Release aus.
Wählen Sie die JAR-Datei mit dem Namen
liquibase-spanner-x.y.z-all.jar
aus und laden Sie sie herunter. Dabei steht x.y.z für die Versionsnummer der Erweiterung. Beispiel:liquibase-spanner-4.17.0-all.jar
.Platzieren Sie die heruntergeladene JAR-Datei im lib-Verzeichnis von Liquibase. Die JAR-Datei enthält die Erweiterung, das Spanner SDK und den Spanner JDBC-Treiber.
PGAdapter muss auf dem Computer gestartet und ausgeführt werden, auf dem Sie Liquibase installieren. Weitere Informationen finden Sie unter PGAdapter starten.
Folgen Sie der Anleitung in der Liquibase-Dokumentation, um Liquibase zu installieren und zu konfigurieren und einen Snapshot Ihrer Datenbank zu erstellen.
Legen Sie in der Konfigurationsdatei liquibase.properties
das Attribut url
wie unten beschrieben fest.
jdbc:postgresql://localhost:5432/DATABASE_NAME ?options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
Die Konfigurationsdatei liquibase.properties
darf nur dieses Attribut enthalten. Andere Properties sind optional.
Der url
-String muss options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
enthalten, da Spanner keine DDL-Transaktionen unterstützt. So werden DDL-Transaktionen in DDL-Batches umgewandelt. Weitere Informationen finden Sie unter DDL-Optionen für PGAdapter.
Liquibase-Beispiele ansehen
Die Beispieldatei für das Änderungsprotokoll changelog.yaml, die in der Liquibase-Erweiterung für GoogleSQL enthalten ist, zeigt viele Funktionen von Liquibase und deren Verwendung mit Spanner.
Die Beispieldatei für das Änderungsprotokoll dbchangelog.xml
, die im GitHub-Repository von PGAdapter und Liquibase verfügbar ist, zeigt viele Funktionen von Liquibase und deren Verwendung mit Spanner.
Kurzanleitung zu Liquibase
In dieser Kurzanleitung erfahren Sie, wie Sie mit Liquibase einer Datenbank eine Singers
-Tabelle hinzufügen.
Hinweis
Sie müssen die vorherigen Schritte zur Installation von Liquibase ausgeführt haben.
Erstellen Sie eine Spanner-Instanz.
Erstellen Sie eine Datenbank im GoogleSQL- oder PostgreSQL-Dialekt.
Nur für Datenbanken mit PostgreSQL-Dialekt: PGAdapter muss auf demselben Computer wie Ihre Liquibase-Installation gestartet und ausgeführt werden. Weitere Informationen finden Sie unter PGAdapter starten.
Verwenden Sie das Script create_database_change_log.sql nur für PostgreSQL-Datenbanken, um die Metadatentabellen
databasechangeloglock
unddatabasechangelog
zu erstellen. Sie müssen diese Tabellen erstellen, um die Tabellen zu überschreiben, die Liquibase automatisch in Ihrer Datenbank erstellt. So wird sichergestellt, dass in diesen Tabellen die richtigen PostgreSQL-Datentypen für Spanner verwendet werden.Sie können das Script mit dem folgenden Befehl ausführen:
psql -h localhost -d
DATABASE_NAME -f create_database_change_log.sqlGewähren Sie der Spanner Liquibase-Erweiterung die vorübergehende Verwendung Ihrer Spanner-Nutzeranmeldedaten für den API-Zugriff, indem Sie den folgenden
gcloud
-Befehl ausführen:gcloud auth application-default login
changelog.yaml erstellen
Geben Sie den folgenden YAML-Code 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 primaryKeyName: pk_Singers - column: name: Name type: VARCHAR(255)
In dieser YAML-Datei wird eine Tabelle namens
Singers
mit dem PrimärschlüsselSingerId
und der SpalteName
zum Speichern des Namens des Sängers definiert.Bei PostgreSQL-Datenbanken empfehlen wir, Tabellen- und Spaltennamen ausschließlich in Kleinbuchstaben zu verwenden. Weitere Informationen finden Sie unter Berücksichtigung der Groß-/Kleinschreibung in PostgreSQL.
Der
createTable
-Änderungssatz muss eine Primärschlüsseleinschränkung enthalten und der Name der Primärschlüsseleinschränkung muss pk_table_name sein.Speichern Sie die Änderungen als
changelog.yaml
.
Liquibase ausführen
Wenden Sie die Änderungsliste in changelog.yaml
mit dem folgenden Befehl an:
liquibase --changeLogFile changelog.yaml update
Liquibase verwendet die URL, die Sie in der Datei liquibase.properties
definiert haben. Sie können den Wert in der Datei überschreiben, indem Sie dem vorherigen Befehl das folgende Argument hinzufügen:
--urlURL
Änderungen prüfen
Durch die Aktualisierungen im vorherigen Schritt wurde der Tabelle Singer
Ihrer Datenbank hinzugefügt. Außerdem wurden die Tabellen DATABASECHANGELOG
und DATABASECHANGELOGLOCK
hinzugefügt (Datenbank mit GoogleSQL-Dialekt) oder aktualisiert (Datenbank mit PostgreSQL-Dialekt).
Sie können die Existenz dieser Tabellen über die Google Cloud Console oder die gcloud CLI 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-sqlDATABASE_NAME --instance=INSTANCE \ --sql='SELECT * FROM INFORMATION_SCHEMA.TABLES'
Sie können sich eine Liste der angewendeten Änderungen anzeigen lassen, indem Sie den Inhalt von DATABASECHANGELOG
abfragen.
Nächste Schritte
Weitere Dokumentation finden Sie im GitHub-Repository zur Spanner Liquibase-Erweiterung.
Weitere Informationen zu Liquibase finden Sie unter Erste Schritte mit Liquibase.