Obiettivi
Questo tutorial illustra i passaggi seguenti utilizzando lo strumento a riga di comando gcloud.
- Crea un'istanza, un database e uno schema Spanner
- Scrivere dati nel database ed eseguire query SQL sui dati
- Esegui la pulizia eliminando il database e l'istanza
Per il riferimento gcloud spanner
completo, consulta gcloud spanner.
Prezzi
Questo tutorial utilizza Spanner, un componente fatturabile di Google Cloud. Per informazioni sul costo dell'utilizzo di Spanner, consulta la sezione Prezzi.
Prima di iniziare
- Completa i passaggi descritti in Configurazione, che spiegano come creare e impostare un progetto Google Cloud predefinito, abilitare la fatturazione, abilitare l'API Cloud Spanner e configurare OAuth 2.0 per ottenere le credenziali di autenticazione per l'utilizzo dell'API Cloud Spanner.
In particolare, assicurati di eseguiregcloud auth application-default login
per configurare il tuo ambiente di sviluppo locale con credenziali di autenticazione.
Imposta un progetto predefinito
Se non lo hai già fatto, imposta l'ID di un progetto Google Cloud come progetto predefinito per Google Cloud CLI:
gcloud config set project PROJECT_ID
Se non imposti il progetto predefinito, devi passare --project
PROJECT_ID
a ciascuno dei comandi seguenti come primo argomento a gcloud spanner
. Ad esempio:
gcloud spanner --project=PROJECT_ID instance-configs list
Istanze
Quando utilizzi Spanner per la prima volta, devi creare un'istanza, ovvero un'allocazione di risorse utilizzate dai database Spanner. Quando crei un'istanza, puoi scegliere dove sono archiviati i dati e la capacità di calcolo dell'istanza.
Istanze e configurazioni di istanze
Per creare un'istanza, devi selezionare una configurazione dell'istanza, che è come un progetto base per l'istanza, che definisce il posizionamento geografico e la replica dei tuoi dati Spanner.
Elenca configurazioni di istanze
Quando crei un'istanza, specifichi una configurazione dell'istanza, che definisce il posizionamento geografico e la replica dei database nell'istanza. Puoi scegliere una configurazione a livello di regione, che archivia i dati in un'area geografica, o una configurazione a più regioni, che distribuisce i dati in più regioni. Scopri di più in Istanze.
Per visualizzare l'insieme di configurazioni delle istanze disponibili per il tuo progetto:
gcloud spanner instance-configs list
Dovresti vedere un elenco di configurazioni a livello di una o più regioni.
Le configurazioni a livello di regione distribuiscono i dati in un'unica regione, mentre quelle a più regioni distribuiscono i dati in più regioni. Scopri di più in merito alla pagina Istanze.
Crea un'istanza
Per creare un'istanza denominata test-instance
con il nome visualizzato My Instance
utilizzando la configurazione dell'istanza a livello di regione regional-us-central1
con 1 nodi:
gcloud spanner instances create test-instance --config=regional-us-central1 \ --description="My Instance" --nodes=1
Nel comando riportato sopra, il nome dell'istanza è impostato su test-instance
, mentre --description
imposta il nome visualizzato dell'istanza. Entrambi questi valori devono essere univoci all'interno di un progetto della Google Cloud Platform.
Imposta l'istanza predefinita
Puoi impostare l'istanza predefinita utilizzata da Cloud Spanner se non hai specificato un'istanza nel comando. Per impostare l'istanza predefinita:
gcloud config set spanner/instance test-instance
Crea un database
Crea un database denominato example-db
. Il dialetto del database è GoogleSQL per impostazione predefinita.
GoogleSQL
gcloud spanner databases create example-db
PostgreSQL
gcloud spanner databases create example-db --database-dialect=POSTGRESQL
Aggiorna lo schema
Utilizza il Data Definition Language (DDL) di Spanner per creare, modificare o eliminare le tabelle e per creare o eliminare gli indici.
Creiamo due tabelle:
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'
Per verificare l'avanzamento dell'operazione, utilizza
gcloud spanner operations describe
.
Questo comando richiede l'ID operazione.
Recupera l'ID operazione:
gcloud spanner operations list --instance="test-instance" \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Sostituisci DATABASE-NAME con il nome del database.
Esegui gcloud spanner operations describe
:
gcloud spanner operations describe \ --instance="test-instance" \ --database="example-db" \ projects/PROJECT-NAME/instances/test-instance/databases/example-db/operations/OPERATION-ID
Sostituisci quanto segue:
- PROJECT-NAME: il nome del progetto.
- OPERATION-ID: l'ID dell'operazione che vuoi controllare.
L'output è simile al seguente:
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 ...
Scrittura di dati
Aggiungiamo alcuni dati di esempio al nostro database
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"
Per impostazione predefinita, viene utilizzata una virgola per delimitare gli elementi negli elenchi. Nell'ultimo comando di inserimento, abbiamo specificato i due punti (^:^
) come delimitatore, in modo da poter utilizzare una virgola nel titolo dell'album.
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')"
Esegui query sui dati utilizzando SQL
Esegui una query dalla riga di comando:
gcloud spanner databases execute-sql example-db \ --sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'
Per il riferimento SQL di Spanner, consulta Sintassi delle query per GoogleSQL o Sintassi delle query per PostgreSQL.
Per visualizzare un elenco dei flag che puoi utilizzare con il comando execute-sql
, vedi
gcloud spanner credenziali applicazioni-sql.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi aggiuntivi per le risorse utilizzate in questo tutorial, elimina il database ed elimina l'istanza che hai creato.
Elimina un database
Per eliminare un'istanza esistente:
gcloud spanner databases delete example-db
Elimina un'istanza
Per eliminare un'istanza esistente:
gcloud spanner instances delete test-instance
Tieni presente che l'eliminazione di un'istanza comporta anche l'eliminazione di tutti i database al suo interno. L'eliminazione di un'istanza è irreversibile.