Creare e gestire i posizionamenti dei dati

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

  1. Vai alla pagina Istanze nella console Google Cloud .

    Istanze

  2. Seleziona l'istanza con le partizioni dell'istanza create dagli utenti.

  3. Seleziona il database in cui vuoi partizionare i dati.

  4. Nel menu di navigazione, fai clic su Spanner Studio.

  5. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.

  6. 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'istanza europe-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.

  7. 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

  1. Vai alla pagina Istanze nella console Google Cloud .

    Istanze

  2. Seleziona l'istanza con le partizioni dell'istanza create dagli utenti.

  3. Seleziona il database in cui vuoi partizionare i dati.

  4. Nel menu di navigazione, fai clic su Spanner Studio.

  5. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.

  6. 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'istanza nam8-partition con la posizione predefinita del leader impostata su us-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.

  7. 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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. 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:

  1. Modifica l'applicazione per interrompere l'inserimento o l'aggiornamento delle righe con il posizionamento che vuoi eliminare.
  2. 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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. 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:

  1. Elimina tutte le righe della tabella dei posizionamenti.
  2. 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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. 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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. Inserisci l'istruzione DDL INSERT INTO (GoogleSQL, PostgreSQL).

    Ad esempio, aggiungi un cantante, Marc Richards, alla tabella Singers e partizionala in europeplacement:

    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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. Utilizza DML o mutazioni per aggiornare i dati in una tabella di posizionamento.

    Ad esempio, aggiorna il nome di singerid=1 nella tabella Singers in Catalina 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

  1. Crea una nuova partizione dell'istanza e un nuovo posizionamento, se non l'hai ancora fatto.
  2. Nel menu di navigazione, fai clic su Spanner Studio.
  3. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  4. Utilizza DML o mutazioni per spostare i dati nella nuova partizione dell'istanza.

    Ad esempio, sposta singerid=1 nella tabella Singers in asiaplacement:

    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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. Utilizza DML o mutazioni per eliminare i dati.

    Ad esempio, elimina singerid=1 nella tabella Singers:

    DELETE FROM Singers s
    WHERE s.id=1;
    

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

  1. Nel menu di navigazione, fai clic su Spanner Studio.
  2. Nella pagina Spanner Studio, fai clic su Nuova scheda o utilizza la scheda dell'editor vuota.
  3. 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