Ziele
In dieser Anleitung werden Sie durch die folgenden Schritte mit der gcloud CLI geführt:
- Spanner-Instanz, -Datenbank und -Schema erstellen
- Daten in die Datenbank schreiben und SQL-Abfragen ausführen
- Datenbank und Instanz durch Löschen bereinigen
Die Verfahren auf dieser Seite gelten sowohl für Datenbanken im GoogleSQL-Dialekt als auch für Datenbanken im PostgreSQL-Dialekt.
Die vollständige Spanner-gcloud-Referenz finden Sie unter gcloud.
Preise
In dieser Anleitung wird Cloud Spanner verwendet, eine kostenpflichtige Komponente vonGoogle Cloud. Informationen zu den Kosten für die Verwendung von Cloud Spanner finden Sie auf der Seite zu den Preisen.
Hinweis
Führen Sie die Schritte unter gcloud CLI installieren und Cloud Spanner API einrichten aus. Dazu gehören das Erstellen und Festlegen eines Standardprojekts in Google Cloud , das Aktivieren der Abrechnung, das Aktivieren der Cloud Spanner API und das Einrichten von OAuth 2.0, um Authentifizierungsdaten für die Verwendung der Cloud Spanner API zu erhalten.
Achten Sie insbesondere darauf, gcloud auth application-default
login auszuführen, um Ihre lokale Entwicklungsumgebung mit Authentifizierungsdaten einzurichten.
Standardprojekt festlegen
Legen Sie die ID eines Google Cloud -Projekts als Standardprojekt für die Google Cloud CLI fest, falls noch nicht geschehen:
gcloud config set project PROJECT_ID
Wenn Sie das Standardprojekt nicht festlegen, müssen Sie --project
PROJECT_ID an jeden der folgenden Befehle als erstes Argument an gcloud übergeben. Beispiel:
gcloud --project=PROJECT_ID spanner instance-configs list
Instanzen
Bei der ersten Verwendung von Spanner müssen Sie eine Instanz erstellen. Dies ist eine Zuordnung von Ressourcen, die von Spanner-Datenbanken verwendet werden. Wenn Sie eine Instanz erstellen, wählen Sie aus, wo Ihre Daten gespeichert werden und wie viel Rechenkapazität die Instanz hat.
Instanzen und Instanzkonfigurationen
Wenn Sie eine Instanz erstellen möchten, müssen Sie eine Instanzkonfiguration auswählen. Diese ist wie ein Entwurf für Ihre Instanz, der die geografische Platzierung und Replikation Ihrer Spanner-Daten definiert.
Instanzkonfigurationen auflisten
Wenn Sie eine Instanz erstellen, geben Sie eine Instanzkonfiguration an, mit der die geografische Platzierung und Replikation der Datenbanken in der Instanz definiert wird. Sie können eine regionale Konfiguration auswählen, bei der Daten in einer Region gespeichert werden, eine Dual-Region, bei der Daten in zwei Regionen im selben Land gespeichert werden, oder eine multiregionale Konfiguration, bei der Daten über mehrere Regionen verteilt werden. Weitere Informationen finden Sie in der Übersicht über Instanzen.
So zeigen Sie die Instanzkonfigurationen an, die für das Projekt verfügbar sind:
gcloud spanner instance-configs list
Sie sollten eine Liste mit regionalen, Dual-Region- und multiregionalen Konfigurationen sehen.
Instanz erstellen
So erstellen Sie eine Instanz namens test-instance mit dem Anzeigenamen My Instance und der regionalen Instanzkonfiguration regional-us-central1 mit 1 Knoten:
gcloud spanner instances create test-instance --config=regional-us-central1 \ --description="My Instance" --nodes=1
Im obigen Befehl wird der Instanzname auf test-instance und --description auf den Anzeigenamen der Instanz festgelegt. Beide Werte müssen innerhalb eines Projekts in Google Cloud eindeutig sein.
Standardinstanz festlegen
Sie können die Standardinstanz festlegen, die Spanner verwendet, wenn Sie in Ihrem Befehl keine Instanz angegeben haben. So legen Sie die Standardinstanz fest:
gcloud config set spanner/instance test-instance
Datenbank erstellen
Erstellen Sie eine Datenbank mit dem Namen example-db. Der Datenbankdialekt ist standardmäßig GoogleSQL.
GoogleSQL
gcloud spanner databases create example-db
PostgreSQL
gcloud spanner databases create example-db --database-dialect=POSTGRESQL
Schema aktualisieren
Verwenden Sie die Datendefinitionssprache (DDL) von Spanner, um Tabellen zu erstellen, zu ändern oder zu löschen und um Indexe zu erstellen oder zu löschen.
Wir erstellen zwei Tabellen:
GoogleSQL
gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)' gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX)) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
PostgreSQL
gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId bigint NOT NULL, FirstName varchar(1024), LastName varchar(1024), SingerInfo bytea, PRIMARY KEY (SingerId) )' gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId bigint NOT NULL, AlbumId bigint NOT NULL, AlbumTitle varchar, PRIMARY KEY (SingerId, AlbumId) ) INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
Mit gcloud spanner operations describe können Sie den Fortschritt des Vorgangs prüfen.
Für diesen Befehl ist die Vorgangs-ID erforderlich.
Rufen Sie die Vorgangs-ID ab:
gcloud spanner operations list --instance="test-instance" \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ersetzen Sie DATABASE-NAME durch den Namen der Datenbank.
Führen Sie gcloud spanner operations describe aus.
gcloud spanner operations describe \ --instance="test-instance" \ --database="example-db" \ projects/PROJECT-NAME/instances/test-instance/databases/example-db/operations/OPERATION-ID
Ersetzen Sie Folgendes:
- PROJECT-NAME: Der Projektname.
- OPERATION-ID: Die Vorgangs-ID des zu prüfenden Vorgangs.
Die Ausgabe sieht dann ungefähr so aus:
done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
Daten schreiben
Fügen Sie nun einige Beispieldaten zur Datenbank hinzu:
GoogleSQL
gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName=Marc,LastName=Richards gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=2,FirstName=Catalina,LastName=Smith gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=3,FirstName=Alice,LastName=Trentor gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=SingerId=1,AlbumId=1,AlbumTitle="Total Junk" gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=SingerId=2,AlbumId=1,AlbumTitle="Green" gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=^:^SingerId=2:AlbumId=2:AlbumTitle="Go, Go, Go"
Standardmäßig wird ein Komma verwendet, um Elemente in Listen voneinander zu trennen. Im letzten Einfügebefehl haben wir einen Doppelpunkt (^:^) als Trennzeichen angegeben, damit wir im Albumtitel ein Komma verwenden können.
PostgreSQL
gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (2, 'Catalina', 'Smith')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (3, 'Alice', 'Trentor')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (1, 1, 'Total Junk')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 1, 'Green')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 2, 'Go, Go, Go')"
Daten mit SQL abfragen
Führen Sie eine Abfrage in der Befehlszeile aus:
gcloud spanner databases execute-sql example-db \ --sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'
Die Spanner-SQL-Referenz finden Sie unter Abfragesyntax für GoogleSQL oder Abfragesyntax für PostgreSQL.
Eine Liste der Flags, die Sie mit dem Befehl execute-sql verwenden können, finden Sie unter gcloud spanner databases execute-sql.
Bereinigen
Löschen Sie die Datenbank und die Instanz, um zu vermeiden, dass Ihrem Google Cloud -Konto zusätzliche Gebühren in Rechnung gestellt werden. Durch das Deaktivieren der Cloud Billing API werden die Gebühren nicht gestoppt. Wenn Sie eine Instanz löschen, werden alle Datenbanken in der Instanz gelöscht.
Datenbank löschen
So löschen Sie eine vorhandene Instanz:
gcloud spanner databases delete example-db
Instanz löschen
So löschen Sie eine vorhandene Instanz:
gcloud spanner instances delete test-instance
Beachten Sie, dass beim Löschen einer Instanz auch alle Datenbanken in der Instanz gelöscht werden. Das Löschen einer Instanz kann nicht rückgängig gemacht werden.