Crie e faça a gestão de posicionamentos de dados

Esta página descreve como criar e gerir posicionamentos de dados no Spanner.

Para mais informações sobre o funcionamento da partição geográfica, consulte a Vista geral da partição geográfica.

Crie um posicionamento de dados

Depois de criar as partições da instância do Spanner e as bases de dados, crie o posicionamento.

Consola

  1. Aceda à página Instâncias na Google Cloud consola.

    Instâncias

  2. Selecione a instância com partições de instâncias criadas pelo utilizador.

  3. Selecione a base de dados na qual quer particionar os dados.

  4. No menu de navegação, clique em Spanner Studio.

  5. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.

  6. Introduza a declaração DDL CREATE PLACEMENT (GoogleSQL, PostgreSQL) .

    Por exemplo, pode executar o seguinte comando para criar uma tabela de posicionamentos europeplacement na partição de instâncias europe-partition:

    GoogleSQL

    CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");
    

    PostgreSQL

    CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
    

    Opcional: também pode usar o painel Explorador de objetos para ver, pesquisar e interagir com os objetos Placement. Para mais informações, consulte o artigo Explore os seus dados.

  7. Clique em Executar.

gcloud

Para criar um posicionamento com o comando da CLI gcloud, use gcloud spanner databases ddl update.

Por exemplo, crie um posicionamento na partição de instâncias 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')"

Defina o líder predefinido para um posicionamento

Pode definir a região principal predefinida de um posicionamento se a respetiva localização estiver numa região dupla ou em várias regiões. A nova região principal tem de ser uma das duas regiões de leitura/escrita na localização de posicionamento de duas regiões ou multirregional. Para mais informações, consulte as tabelas Configurações disponíveis de dupla região e Configurações disponíveis de várias regiões.

Se não definir uma região principal, o posicionamento usa a região principal predefinida, conforme especificado pela respetiva localização. Para ver uma lista da região principal de cada localização de região dupla ou multirregião, consulte as tabelas Configurações disponíveis de região dupla e Configurações disponíveis de multirregião. A região principal predefinida é indicada com um L. Por exemplo, a região líder predefinida de nam8 está em Los Angeles(us-west2). As instruções seguintes explicam como defini-la para o Oregon(us-west1).

Consola

  1. Aceda à página Instâncias na Google Cloud consola.

    Instâncias

  2. Selecione a instância com partições de instâncias criadas pelo utilizador.

  3. Selecione a base de dados na qual quer particionar os dados.

  4. No menu de navegação, clique em Spanner Studio.

  5. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.

  6. Introduza a declaração DDL CREATE PLACEMENT (GoogleSQL, PostgreSQL) .

    Por exemplo, pode executar o seguinte para criar uma tabela de posicionamentos nam8placement na partição da instância nam8-partition com a localização principal predefinida definida como 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');
    

    Opcional: também pode usar o painel Explorador de objetos para ver, pesquisar e interagir com os objetos Placement. Para mais informações, consulte o artigo Explore os seus dados.

  7. Clique em Executar.

gcloud

Para criar um posicionamento com o comando da CLI gcloud, use gcloud spanner databases ddl update.

Por exemplo, crie uma tabela de posicionamentos nam8placement na partição nam8-partition da instância com a localização principal predefinida definida como 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')"

Coloque um posicionamento de dados

Antes de remover um posicionamento, tem de remover todos os dados das linhas do posicionamento. Depois de o fazer, pode usar a Google Cloud consola ou a CLI gcloud para remover o posicionamento.

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Introduza a declaração DDL DROP PLACEMENT(GoogleSQL, PostgreSQL).

    Por exemplo, pode executar o seguinte comando para eliminar a tabela de posicionamentos europeplacement:

    GoogleSQL

    DROP PLACEMENT europeplacement;
    

    PostgreSQL

    DROP PLACEMENT europeplacement;
    

gcloud

Para rejeitar um posicionamento com o comando da CLI gcloud, use gcloud spanner databases ddl update.

Por exemplo, posicionamento de lançamento europeplacement:

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

Erros de posicionamento de abandono

Se o posicionamento estiver em utilização, a operação DROP PLACEMENT falha com uma mensagem de erro, como: "Statement failed: Placement PLACEMENT_NAME cannot be dropped because it is in use by placement table PLACEMENT_TABLE_NAME." (Falha na declaração: não é possível remover o posicionamento PLACEMENT_NAME porque está a ser usado pela tabela de posicionamentos PLACEMENT_TABLE_NAME). Se encontrar este erro, faça o seguinte:

  1. Modifique a sua aplicação para parar de inserir ou atualizar linhas com o posicionamento que quer remover.
  2. Uma das seguintes opções:

    • Mova as linhas de posicionamento existentes que usam o posicionamento que quer eliminar para um posicionamento diferente com uma declaração DML particionada, como a seguinte:

      UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      
    • Elimine as linhas de posicionamento com uma declaração DML particionada, como a seguinte:

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      As instruções DML específicas do posicionamento anteriores só funcionam com DML particionado. Falham como declarações DML normais. Para mais informações, consulte a secção Limitações. Também pode usar a API Mutation para mover ou eliminar linhas de posicionamento.

Cancele uma operação DROP PLACEMENT

Pode cancelar uma operação DROP PLACEMENT em qualquer altura antes de a operação de longa duração eliminar completamente o posicionamento do esquema da base de dados. Para ver detalhes sobre como obter o ID da operação de longa duração para verificar o estado ou cancelar a operação, consulte o artigo Faça a gestão e observe operações de longa duração.

Crie uma tabela com uma chave de posicionamento

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Introduza a declaração DDL CREATE TABLE (GoogleSQL, PostgreSQL).

    Por exemplo, pode criar uma tabela Singers que use uma chave de posicionamento para fazer a partição dos dados de cantores:

    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

Para criar uma tabela, use gcloud spanner databases ddl update.

Por exemplo, pode criar uma tabela Singers que use uma chave de posicionamento para fazer a partição dos dados de cantores:

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 );"

Edite uma tabela com uma chave de posicionamento

Não pode remover uma chave de posicionamento de uma tabela. Também não pode adicionar uma chave de posicionamento a uma tabela depois de esta ter sido criada. No entanto, pode usar a declaração DDL ALTER TABLE (GoogleSQL, PostgreSQL) para alterar outros campos na tabela, por exemplo, adicionando e eliminando colunas de chaves não relacionadas com o posicionamento.

Elimine uma tabela com uma chave de posicionamento

Antes de eliminar uma tabela com uma chave de posicionamento, tem de:

  1. Elimine todas as linhas na tabela de posicionamentos.
  2. Aguarde que o version_retention_period da base de dados seja aprovado. Para mais informações, consulte o artigo Recuperação num ponto específico no tempo. Depois, seguindo estes passos:

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Introduza a declaração DDL DROP TABLE (GoogleSQL, PostgreSQL).

    Por exemplo, elimine a tabela Singers:

    DROP TABLE Singers;
    

gcloud

Para eliminar uma tabela, use gcloud spanner databases ddl update.

Por exemplo, elimine a tabela Singers:

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP TABLE Singers"

Insira uma linha numa tabela de posicionamentos

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Introduza a declaração DDL INSERT INTO (GoogleSQL, PostgreSQL).

    Por exemplo, adicione um cantor, Marc Richards, à tabela Singers e particione-a em europeplacement:

    INSERT INTO Singers(SingerId, SingerName, Location)
    VALUES (1, 'Marc Richards', 'europeplacement')
    

gcloud

Para escrever dados numa tabela, use gcloud spanner rows insert.

Por exemplo, adicione um cantor, Marc Richards, à tabela Singers e particione-a em europeplacement:

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

Atualize uma linha numa tabela de posicionamentos

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Use DML ou alterações para atualizar dados numa tabela de posicionamentos.

    Por exemplo, atualize o nome de singerid=1 na tabela Singers para Catalina Smith:

    UPDATE Singers s
    SET s.name='Catalina Smith'
    WHERE s.id=1;
    

gcloud

Para atualizar dados numa tabela de posicionamentos, use gcloud spanner rows update.

Por exemplo, atualize o nome de singerid=1 na tabela Singers para Catalina Smith:

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'

Mova uma linha numa tabela de posicionamentos

Consola

  1. Crie uma nova partição de instâncias e posicionamento, se ainda não o fez.
  2. No menu de navegação, clique em Spanner Studio.
  3. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  4. Use DML ou mutações para mover dados para a partição de instância nova.

    Por exemplo, mova singerid=1 na tabela Singers para asiaplacement:

    UPDATE Singers s
    SET s.location='asiaplacement'
    WHERE s.id=1;
    

gcloud

Depois de criar a partição da instância e o posicionamento para onde quer mover os dados, use gcloud spanner rows update.

Por exemplo, mova singerid=1 na tabela Singers para asiaplacement:

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,Location='asiaplacement'

Elimine uma linha numa tabela de posicionamentos

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Use DML ou mutações para eliminar dados.

    Por exemplo, elimine singerid=1 na tabela Singers:

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

Para eliminar dados, use gcloud spanner rows delete.

Por exemplo, elimine singerid=1 na tabela Singers:

gcloud spanner rows delete --table=Singers --database=example-db \
  --instance=test-instance --keys=1

Consulte dados numa tabela de posicionamentos

Consola

  1. No menu de navegação, clique em Spanner Studio.
  2. Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
  3. Execute a consulta.

    Por exemplo, consulte a tabela Singers:

    SELECT * FROM Singers s WHERE s.SingerId=1;
    

gcloud

Para consultar dados, use gcloud spanner databases execute-sql.

Por exemplo, consulte a tabela Singers:

gcloud spanner databases execute-sql example-db \
  --instance=test-instance \
  --sql='SELECT * FROM Singers s WHERE s.SingerId=1'

O que se segue?