Nesta página, descrevemos como criar e gerenciar posicionamentos de dados no Spanner.
Para mais informações sobre como funciona o particionamento geográfico, consulte a Visão geral do particionamento geográfico.
Criar uma posição de dados
Depois de criar as partições da instância do Spanner e os bancos de dados, crie sua posição.
Console
- Acesse a página Instâncias no Google Cloud console. 
- Selecione a instância com partições criadas pelo usuário. 
- Selecione o banco de dados em que você quer particionar os dados. 
- No menu de navegação, clique em Spanner Studio. 
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia. 
- Insira a instrução DDL - CREATE PLACEMENT(GoogleSQL, PostgreSQL).- Por exemplo, execute o comando a seguir para criar uma tabela de posição - europeplacementna partição de instância- europe-partition:- GoogleSQL- CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");- PostgreSQL- CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');- Opcional: também é possível usar o painel Object Explorer para visualizar, pesquisar e interagir com seus objetos de posição. Para mais informações, consulte Analisar seus dados. 
- Clique em Executar. 
gcloud
Para criar um posicionamento com o comando da CLI gcloud, use
gcloud spanner databases ddl update.
Por exemplo, crie uma posição na partição de instância 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')"
Definir o líder padrão de uma posição
É possível definir a região líder padrão de uma posição se o local dela for em uma região dupla ou multirregional. A nova região líder precisa ser uma das duas regiões de leitura e gravação no local de posicionamento birregional ou multirregional. Para mais informações, consulte as tabelas Configurações birregionais disponíveis e Configurações multirregionais disponíveis.
Se você não definir uma região líder, sua posição usará a região líder padrão
conforme especificado pelo local. Para uma lista da região líder de cada local birregional ou multirregional, consulte as tabelas Configurações birregionais disponíveis e Configurações multirregionais disponíveis. A região líder padrão é indicada com um L. Por exemplo, a região líder padrão de nam8 é Los Angeles(us-west2). As instruções a seguir explicam como definir como Oregon(us-west1).
Console
- Acesse a página Instâncias no Google Cloud console. 
- Selecione a instância com partições criadas pelo usuário. 
- Selecione o banco de dados em que você quer particionar os dados. 
- No menu de navegação, clique em Spanner Studio. 
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia. 
- Insira a instrução DDL - CREATE PLACEMENT(GoogleSQL, PostgreSQL).- Por exemplo, execute o comando a seguir para criar uma tabela de posicionamento - nam8placementna partição de instância- nam8-partitioncom o local principal padrão definido 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 é possível usar o painel Object Explorer para visualizar, pesquisar e interagir com seus objetos de posição. Para mais informações, consulte Analisar seus dados. 
- 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 posicionamento nam8placement na partição
de instância nam8-partition com o local do líder padrão definido 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')"
Remover uma colocação de dados
Antes de descartar um posicionamento, remova todos os dados de linha dele. Depois disso, use o console Google Cloud ou a CLI gcloud para descartar a posição.
Console
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- Insira a instrução DDL - DROP PLACEMENT(GoogleSQL, PostgreSQL).- Por exemplo, execute o comando a seguir para descartar a tabela de posição - europeplacement:- GoogleSQL- DROP PLACEMENT europeplacement;- PostgreSQL- DROP PLACEMENT europeplacement;
gcloud
Para descartar um posicionamento com o comando da CLI gcloud, use
gcloud spanner databases ddl update.
Por exemplo, solte o posicionamento europeplacement:
gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP PLACEMENT europeplacement"
Erros de remoção de canais
Se o posicionamento estiver em uso, a operação DROP PLACEMENT vai falhar com uma mensagem de erro como: "Falha na instrução: não é possível descartar o posicionamento PLACEMENT_NAME porque ele está em uso pela tabela de posicionamento PLACEMENT_TABLE_NAME". Se você encontrar esse erro, faça o seguinte:
- Modifique o aplicativo para parar de inserir ou atualizar linhas com a posição que você quer descartar.
- Siga uma destas instruções: - Mova as linhas de posição existentes que usam a posição que você quer excluir para uma posição diferente com uma instrução DML particionada como esta: - UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
- Exclua as linhas de posicionamento com uma instrução DML particionada como a seguinte: - DELETE FROM PLACEMENT_TABLE_NAME WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;- As instruções DML específicas de canal anteriores só funcionam com DML particionada. Elas vão falhar como instruções DML comuns. Saiba mais em Limitações. Também é possível usar a API Mutation para mover ou soltar linhas de posição. 
 
Cancelar uma operação de DROP PLACEMENT
É possível cancelar uma operação DROP PLACEMENT a qualquer momento antes que a operação de longa duração exclua completamente a posição do esquema do banco de dados. Para mais detalhes
sobre como conseguir o ID da operação de longa duração para verificar o status ou cancelar
a operação, consulte Gerenciar e observar operações de longa duração.
Criar uma tabela com uma chave de posicionamento
Console
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- Insira a instrução DDL - CREATE TABLE(GoogleSQL, PostgreSQL).- Por exemplo, é possível criar uma tabela - Singersque usa uma chave de posição para particionar 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, é possível criar uma tabela Singers que usa uma chave de posição para particionar 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 );"
Editar uma tabela com uma chave de posição
Não é possível descartar uma chave de posicionamento de uma tabela. Também não é possível adicionar uma chave de posição
a uma tabela depois que ela é criada. No entanto, é possível usar a instrução DDL ALTER TABLE (GoogleSQL, PostgreSQL) para mudar outros campos na tabela, por exemplo, adicionando e removendo colunas de chave não posicionais.
Excluir uma tabela com uma chave de posicionamento
Antes de excluir uma tabela com uma chave de posição, faça o seguinte:
- Exclua todas as linhas da tabela de posições.
- Aguarde a conclusão do version_retention_periodpara o banco de dados. Para mais informações, consulte Recuperação pontual. Depois, siga estas etapas:
Console
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- Insira a instrução DDL - DROP TABLE(GoogleSQL, PostgreSQL).- Por exemplo, descarte a tabela - Singers:- DROP TABLE Singers;
gcloud
Para descartar uma tabela, use
gcloud spanner databases ddl update.
Por exemplo, descarte a tabela Singers:
gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP TABLE Singers"
Inserir uma linha em uma tabela de posição
Console
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- Insira a instrução DDL - INSERT INTO(GoogleSQL, PostgreSQL).- Por exemplo, adicione um cantor, Marc Richards, à tabela - Singerse particione-a em- europeplacement:- INSERT INTO Singers(SingerId, SingerName, Location) VALUES (1, 'Marc Richards', 'europeplacement')
gcloud
Para gravar dados em uma 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'
Atualizar uma linha em uma tabela de posicionamento
Console
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- Use DML ou mutações para atualizar dados em uma tabela de posicionamento. - Por exemplo, atualize o nome de - singerid=1na tabela- Singerspara- Catalina Smith:- UPDATE Singers s SET s.name='Catalina Smith' WHERE s.id=1;
gcloud
Para atualizar dados em uma tabela de posição, 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'
Mover uma linha em uma tabela de posição
Console
- Crie uma nova partição e um novo posicionamento de instância, caso ainda não tenha feito isso.
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- Use DML ou mutações para mover dados para a nova partição de instância. - Por exemplo, mova - singerid=1na tabela- Singerspara- asiaplacement:- UPDATE Singers s SET s.location='asiaplacement' WHERE s.id=1;
gcloud
Depois de criar a partição e o posicionamento da instância em que você quer mover
seus 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'
Excluir uma linha em uma tabela de posição
Console
gcloud
Para excluir dados, use gcloud spanner rows delete.
Por exemplo, exclua singerid=1 na tabela Singers:
gcloud spanner rows delete --table=Singers --database=example-db \
  --instance=test-instance --keys=1
Consultar dados em uma tabela de posição
Console
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Nova guia ou use a guia do editor vazia.
- 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'
A seguir
- Saiba mais sobre particionamento geográfico. 
- Saiba como criar e gerenciar partições de instâncias.