Esta página descreve como criar e gerenciar posicionamentos de dados no Spanner.
Para mais informações sobre como o geoparticionamento funciona, consulte a visão geral do geoparticionamento.
Criar um posicionamento de dados
Depois de criar as partições da instância do Spanner e os bancos de dados, crie o posicionamento.
Console
Acesse a página Instâncias no Google Cloud console.
Selecione a instância com partições de instância criadas pelo usuário.
Selecione o banco de dados que você quer particionar.
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
europeplacementna partição de instânciaeurope-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 os objetos de posicionamento. Para mais informações, consulte Explorar seus dados.
Clique em Executar.
gcloud
Para criar um posicionamento com o comando da Google Cloud CLI, use
gcloud spanner databases ddl update.
Por exemplo, crie um posicionamento 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 um posicionamento
É possível definir a região líder padrão de um posicionamento se o local estiver 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 de região dupla ou multirregional. Para mais informações, consulte as tabelas Configurações disponíveis de região dupla e Configurações disponíveis multirregionais.
Se você não definir uma região líder, o posicionamento vai usar a região líder padrão especificada pelo local. Para uma lista da região líder de cada
local de região dupla ou multirregional, consulte as
tabelas Configurações disponíveis de região dupla
e Configurações disponíveis multirregionais. A região líder padrão é indicada com um L. Por exemplo, a região líder padrão de nam8 está em Los Angeles(us-west2). As instruções a seguir explicam como defini-la como Oregon(us-west1).
Console
Acesse a página Instâncias no Google Cloud console.
Selecione a instância com partições de instância criadas pelo usuário.
Selecione o banco de dados que você quer particionar.
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âncianam8-partitioncom o local líder padrão definido comous-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 os objetos de posicionamento. Para mais informações, consulte Explorar 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 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 um posicionamento de dados
Antes de remover um posicionamento, é necessário remover todos os dados de linha dele. Depois de fazer isso, use o Google Cloud console ou a CLI gcloud para remover o 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
DROP PLACEMENT(GoogleSQL, PostgreSQL).Por exemplo, execute o comando a seguir para remover a tabela de posicionamento
europeplacement:GoogleSQL
DROP PLACEMENT europeplacement;PostgreSQL
DROP PLACEMENT europeplacement;
gcloud
Para remover um posicionamento com o comando da CLI gcloud, use gcloud spanner databases ddl update.
Por exemplo, remova o posicionamento europeplacement:
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="DROP PLACEMENT europeplacement"
Erros de remoção de posicionamento
Se o posicionamento estiver em uso, a operação DROP PLACEMENT vai falhar 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.". Se você encontrar
esse erro, faça o seguinte:
- Modifique o aplicativo para interromper a inserção ou atualização de linhas com o posicionamento que você quer remover.
Siga uma destas instruções:
Mova as linhas de posicionamento atuais que usam o posicionamento que você quer excluir para um posicionamento diferente com uma instrução DML particionada como a seguinte:
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 do posicionamento anterior só funcionam com DML particionada. Elas vão falhar como instruções DML normais. Saiba mais em Limitações. Também é possível usar a API Mutation para mover ou remover linhas de posicionamento.
Cancelar uma operação DROP PLACEMENT
É possível cancelar uma operação DROP PLACEMENT a qualquer momento antes que a operação de longa duração exclua completamente o posicionamento do esquema do banco de dados. Para detalhes
sobre como receber 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 posicionamento 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 posicionamento 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 posicionamento
Não é possível remover uma chave de posicionamento de uma tabela. Também não é possível adicionar uma chave de posicionamento a uma tabela depois que ela for criada. No entanto, é possível usar a
ALTER TABLE (GoogleSQL,
PostgreSQL) instrução DDL para mudar outros campos em
tabela, por exemplo, adicionando e removendo colunas de chave não posicionadas.
Excluir uma tabela com uma chave de posicionamento
Antes de excluir uma tabela com uma chave de posicionamento, é necessário:
- Excluir todas as linhas na tabela de posicionamento.
- Aguardar a passagem do
version_retention_periodpara o banco de dados. Para mais informações, consulte Recuperação pontual. Em seguida, 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, remova a tabela
Singers:DROP TABLE Singers;
gcloud
Para remover uma tabela, use
gcloud spanner databases ddl update.
Por exemplo, remova a tabela Singers:
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="DROP TABLE Singers"
Inserir 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.
Insira a instrução DDL
INSERT INTO(GoogleSQL, PostgreSQL).Por exemplo, adicione um cantor, Marc Richards, à tabela
Singerse particione-o emeuropeplacement: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-o 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 tabelaSingersparaCatalina Smith:UPDATE Singers s SET s.name='Catalina Smith' WHERE s.id=1;
gcloud
Para atualizar dados em uma tabela de posicionamento,
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 posicionamento
Console
- Crie uma nova partição de instância e um posicionamento, se ainda não tiver 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 tabelaSingersparaasiaplacement:UPDATE Singers s SET s.location='asiaplacement' WHERE s.id=1;
gcloud
Depois de criar a partição de instância e o posicionamento para onde 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 posicionamento
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 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.
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 geoparticionamento.
Saiba como criar e gerenciar partições de instância.