Questa pagina descrive come creare e gestire i posizionamenti dei dati in Spanner.
Per saperne di più sul funzionamento del partizionamento geografico, consulta la Panoramica del partizionamento geografico.
Crea un posizionamento dei dati
Dopo aver creato le partizioni dell'istanza Spanner e i database, crea il posizionamento.
Console
Vai alla pagina Istanze nella console Google Cloud .
Seleziona l'istanza con le partizioni dell'istanza create dagli utenti.
Seleziona il database in cui vuoi partizionare i dati.
Nel menu di navigazione, fai clic su Spanner Studio.
Nella pagina Spanner Studio, fai clic su
Nuova scheda o utilizza la scheda dell'editor vuota.Inserisci l'istruzione DDL
CREATE PLACEMENT
(GoogleSQL, PostgreSQL).Ad esempio, puoi eseguire il seguente comando per creare una tabella di posizionamento
europeplacement
nella partizione dell'istanzaeurope-partition
:GoogleSQL
CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");
PostgreSQL
CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
(Facoltativo) Puoi anche utilizzare il riquadro Esplora oggetti per visualizzare, cercare e interagire con gli oggetti Posizionamento. Per ulteriori informazioni, consulta Esplorare i dati.
Fai clic su Esegui.
gcloud
Per creare un posizionamento con il comando gcloud CLI, utilizza
gcloud spanner databases ddl update
.
Ad esempio, crea un posizionamento nella partizione dell'istanza europe-partition
:
GoogleSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT europeplacement OPTIONS (instance_partition='europe-partition')"
PostgreSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition')"
Impostare il leader predefinito per un posizionamento
Puoi impostare la regione leader predefinita di un posizionamento se la sua località si trova in una regione doppia o multiregionale. La nuova regione leader deve essere una delle due regioni di lettura/scrittura all'interno della località di posizionamento con due o più regioni. Per ulteriori informazioni, consulta le tabelle Configurazioni disponibili a due regioni e Configurazioni disponibili multiregionali.
Se non imposti una regione leader, il tuo posizionamento utilizza la regione leader predefinita
come specificato dalla sua posizione. Per un elenco della regione leader per ogni
località a due o più regioni, consulta le tabelle
Configurazioni a due regioni disponibili
e Configurazioni multiregionali disponibili. La regione leader predefinita è indicata con una L. Ad esempio, la regione leaderr predefinita di nam8
si trova a Los Angeles(us-west2
). Le istruzioni
seguenti spiegano come impostarla su Oregon(us-west1
).
Console
Vai alla pagina Istanze nella console Google Cloud .
Seleziona l'istanza con le partizioni dell'istanza create dagli utenti.
Seleziona il database in cui vuoi partizionare i dati.
Nel menu di navigazione, fai clic su Spanner Studio.
Nella pagina Spanner Studio, fai clic su
Nuova scheda o utilizza la scheda dell'editor vuota.Inserisci l'istruzione DDL
CREATE PLACEMENT
(GoogleSQL, PostgreSQL).Ad esempio, puoi eseguire il seguente comando per creare una tabella di posizionamento
nam8placement
nella partizione dell'istanzanam8-partition
con la posizione predefinita del leader impostata suus-west1
:GoogleSQL
CREATE PLACEMENT `nam8placement` OPTIONS (instance_partition="nam8-partition", default_leader="us-west1");
PostgreSQL
CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1');
(Facoltativo) Puoi anche utilizzare il riquadro Esplora oggetti per visualizzare, cercare e interagire con gli oggetti Posizionamento. Per ulteriori informazioni, consulta Esplorare i dati.
Fai clic su Esegui.
gcloud
Per creare un posizionamento con il comando gcloud CLI, utilizza
gcloud spanner databases ddl update
.
Ad esempio, crea una tabella dei posizionamenti nam8placement
nella partizione dell'istanza nam8-partition
con la località leader predefinita impostata su us-west1
:
GoogleSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT nam8placement \
OPTIONS (instance_partition='nam8-partition', default_leader='us-west1')"
PostgreSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1')"
Eliminare un posizionamento dei dati
Prima di eliminare un posizionamento, devi rimuovere tutti i dati delle righe dal posizionamento. Una volta fatto, puoi utilizzare la console Google Cloud o gcloud CLI per eliminare il posizionamento.
Console
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Inserisci l'istruzione DDL
DROP PLACEMENT
(GoogleSQL, PostgreSQL).Ad esempio, puoi eseguire il seguente comando per eliminare la tabella dei posizionamenti
europeplacement
:GoogleSQL
DROP PLACEMENT europeplacement;
PostgreSQL
DROP PLACEMENT europeplacement;
gcloud
Per eliminare un posizionamento con il comando gcloud CLI, utilizza
gcloud spanner databases ddl update
.
Ad esempio, il posizionamento europeplacement
:
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="DROP PLACEMENT europeplacement"
Errori di posizionamento delle gocce
Se il posizionamento è in uso, l'operazione DROP PLACEMENT
non riesce e viene visualizzato un messaggio di errore come: "Istruzione non riuscita: il posizionamento PLACEMENT_NAME non può essere eliminato perché è in uso nella tabella dei posizionamenti PLACEMENT_TABLE_NAME". Se si verifica questo errore, procedi nel seguente modo:
- Modifica l'applicazione per interrompere l'inserimento o l'aggiornamento delle righe con il posizionamento che vuoi eliminare.
Procedi in uno dei seguenti modi:
Sposta le righe di posizionamento esistenti che utilizzano il posizionamento che vuoi eliminare in un posizionamento diverso con un'istruzione DML partizionata come la seguente:
UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
Elimina le righe di posizionamento con un'istruzione DML partizionata come la seguente:
DELETE FROM PLACEMENT_TABLE_NAME WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
Le precedenti istruzioni DML specifiche per il posizionamento funzionano solo con DML partizionato. Avranno esito negativo come le normali istruzioni DML. Per ulteriori informazioni, vedi Limitazioni. Puoi anche utilizzare l'API Mutation per spostare o rilasciare le righe di posizionamento.
Annullare un'operazione DROP PLACEMENT
Puoi annullare un'operazione DROP PLACEMENT
in qualsiasi momento prima che l'operazione a lunga esecuzione elimini completamente il posizionamento dallo schema del database. Per informazioni dettagliate
su come ottenere l'ID operazione a lunga esecuzione per controllare lo stato o annullare
l'operazione, consulta Gestire e osservare le operazioni a lunga esecuzione.
Crea una tabella con una chiave di posizionamento
Console
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Inserisci l'istruzione DDL
CREATE TABLE
(GoogleSQL, PostgreSQL).Ad esempio, puoi creare una tabella
Singers
che utilizza una chiave di posizionamento per partizionare i dati dei cantanti:GoogleSQL
CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, ... Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), ... Location varchar(1024) NOT NULL PLACEMENT KEY );
gcloud
Per creare una tabella, utilizza
gcloud spanner databases ddl update
.
Ad esempio, puoi creare una tabella Singers
che utilizza
una chiave di posizionamento per partizionare i dati dei cantanti:
GoogleSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);"
PostgreSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), Location varchar(1024) NOT NULL PLACEMENT KEY );"
Modificare una tabella con una chiave di posizionamento
Non puoi eliminare una chiave di posizionamento da una tabella. Inoltre, non puoi aggiungere una chiave di posizionamento
a una tabella dopo la sua creazione. Tuttavia, puoi utilizzare l'istruzione DDL
ALTER TABLE
(GoogleSQL,
PostgreSQL) per modificare altri campi nella
tabella, ad esempio aggiungendo ed eliminando colonne di chiavi non di posizionamento.
Eliminare una tabella con una chiave di posizionamento
Prima di eliminare una tabella con una chiave di posizionamento, devi prima:
- Elimina tutte le righe della tabella dei posizionamenti.
- Attendi che il controllo
version_retention_period
del database venga superato. Per saperne di più, consulta Recupero point-in-time. Poi, segui questi passaggi:
Console
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Inserisci l'istruzione DDL
DROP TABLE
(GoogleSQL, PostgreSQL).Ad esempio, elimina la tabella
Singers
:DROP TABLE Singers;
gcloud
Per eliminare una tabella, utilizza
gcloud spanner databases ddl update
.
Ad esempio, elimina la tabella Singers
:
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="DROP TABLE Singers"
Inserire una riga in una tabella di posizionamento
Console
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Inserisci l'istruzione DDL
INSERT INTO
(GoogleSQL, PostgreSQL).Ad esempio, aggiungi un cantante, Marc Richards, alla tabella
Singers
e partizionala ineuropeplacement
:INSERT INTO Singers(SingerId, SingerName, Location) VALUES (1, 'Marc Richards', 'europeplacement')
gcloud
Per scrivere dati in una tabella, utilizza
gcloud spanner rows insert
.
Ad esempio, aggiungi un cantante, Marc Richards, alla tabella Singers
e
partizionala in europeplacement
:
gcloud spanner rows insert --table=Singers --database=example-db \
--instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'
Aggiorna una riga in una tabella di posizionamento
Console
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Utilizza DML o mutazioni per aggiornare i dati in una tabella di posizionamento.
Ad esempio, aggiorna il nome di
singerid=1
nella tabellaSingers
inCatalina Smith
:UPDATE Singers s SET s.name='Catalina Smith' WHERE s.id=1;
gcloud
Per aggiornare i dati in una tabella di posizionamento,
utilizza gcloud spanner rows update
.
Ad esempio, aggiorna il nome di singerid=1
nella tabella Singers
in
Catalina Smith
:
gcloud spanner rows update --table=Singers --database=example-db \
--instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'
Spostare una riga in una tabella di posizionamento
Console
- Crea una nuova partizione dell'istanza e un nuovo posizionamento, se non l'hai ancora fatto.
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Utilizza DML o mutazioni per spostare i dati nella nuova partizione dell'istanza.
Ad esempio, sposta
singerid=1
nella tabellaSingers
inasiaplacement
:UPDATE Singers s SET s.location='asiaplacement' WHERE s.id=1;
gcloud
Dopo aver creato la partizione e il posizionamento dell'istanza in cui vuoi spostare
i dati, utilizza gcloud spanner rows update
.
Ad esempio, sposta singerid=1
nella tabella Singers
in asiaplacement
:
gcloud spanner rows update --table=Singers --database=example-db \
--instance=test-instance --data=SingerId=1,Location='asiaplacement'
Eliminare una riga in una tabella di posizionamento
Console
gcloud
Per eliminare i dati, utilizza gcloud spanner rows delete
.
Ad esempio, elimina singerid=1
nella tabella Singers
:
gcloud spanner rows delete --table=Singers --database=example-db \
--instance=test-instance --keys=1
Eseguire query sui dati in una tabella dei posizionamenti
Console
- Nel menu di navigazione, fai clic su Spanner Studio.
- Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
Esegui la query.
Ad esempio, esegui una query sulla tabella
Singers
:SELECT * FROM Singers s WHERE s.SingerId=1;
gcloud
Per eseguire query sui dati, utilizza gcloud spanner databases execute-sql
.
Ad esempio, esegui una query sulla tabella Singers
:
gcloud spanner databases execute-sql example-db \
--instance=test-instance \
--sql='SELECT * FROM Singers s WHERE s.SingerId=1'
Passaggi successivi
Scopri di più sul partizionamento geografico.
Scopri come creare e gestire le partizioni delle istanze.