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.

Creare un posizionamento dei dati

Dopo aver creato le partizioni dell'istanza di Spanner e i database, crea il posizionamento.

Console

  1. Vai alla pagina Istanze nella Google Cloud console.

    Istanze

  2. Seleziona l'istanza con le partizioni dell'istanza create dall'utente.

  3. Seleziona il database di 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 CREATE PLACEMENT (GoogleSQL, PostgreSQL) DDL.

    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 di posizionamento. Per saperne di più, consulta Esplorare i dati.

  7. Fai clic su Esegui.

gcloud

Per creare un posizionamento con il comando Google Cloud 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 a due regioni o multiregionale. La nuova regione leader deve essere una delle due regioni di lettura/scrittura all'interno della località di posizionamento a due regioni o multiregionale. Per saperne di più, consulta le tabelle Configurazioni disponibili a due regioni e Configurazioni disponibili multiregionali.

Se non imposti una regione leader, il posizionamento utilizza la regione leader predefinita specificata dalla sua località. Per un elenco delle regione leader per ogni località a due regioni o multiregionale, consulta le tabelle Configurazioni disponibili a due regioni e Configurazioni disponibili multiregionali. La regione leader predefinita è indicata con una L. Ad esempio, la regione leader predefinita di nam8 si trova a Los Angeles(us-west2). Le seguenti istruzioni spiegano come impostarla su Oregon(us-west1).

Console

  1. Vai alla pagina Istanze nella Google Cloud console.

    Istanze

  2. Seleziona l'istanza con le partizioni dell'istanza create dall'utente.

  3. Seleziona il database di 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 CREATE PLACEMENT (GoogleSQL, PostgreSQL) DDL.

    Ad esempio, puoi eseguire il seguente comando per creare una tabella di posizionamento nam8placement nella partizione dell'istanza nam8-partition con la località leader predefinita 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 di posizionamento. Per saperne di più, 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 di posizionamento 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 Google Cloud console 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 di posizionamento 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, elimina il posizionamento europeplacement:

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP PLACEMENT europeplacement"

Errori di eliminazione del posizionamento

Se il posizionamento è in uso, l'operazione DROP PLACEMENT non riesce e viene visualizzato un messaggio di errore simile al seguente: "Statement failed: Placement PLACEMENT_NAME cannot be dropped because it is in use by placement table 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. Esegui una delle seguenti operazioni:

    • 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 istruzioni DML specifiche per il posizionamento precedenti funzionano solo con DML partizionato. Non funzioneranno come istruzioni DML regolari. Per ulteriori informazioni, vedi Limiti. Puoi anche utilizzare l'API Mutation per spostare o eliminare 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 dell'operazione a lunga esecuzione per controllare lo stato o annullare l'operazione, vedi Gestire e osservare le operazioni a lunga esecuzione.

Creare 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 in 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:

  1. Eliminare tutte le righe nella tabella di posizionamento.
  2. Attendere il completamento del version_retention_period per il database. Per saperne di più, consulta Recupero point-in-time. Quindi, 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 partizionalo 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 partizionalo in europeplacement:

gcloud spanner rows insert --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'

Aggiornare 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 a 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 a 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 già 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 dell'istanza e il posizionamento 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 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. 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