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
Aceda à página Instâncias na Google Cloud consola.
Selecione a instância com partições de instâncias criadas pelo utilizador.
Selecione a base de dados na qual quer particionar os dados.
No menu de navegação, clique em Spanner Studio.
Na página Spanner Studio, clique em
Novo separador ou use o separador do editor vazio.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ânciaseurope-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.
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
Aceda à página Instâncias na Google Cloud consola.
Selecione a instância com partições de instâncias criadas pelo utilizador.
Selecione a base de dados na qual quer particionar os dados.
No menu de navegação, clique em Spanner Studio.
Na página Spanner Studio, clique em
Novo separador ou use o separador do editor vazio.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âncianam8-partition
com a localização principal predefinida definida 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 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.
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
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
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:
- Modifique a sua aplicação para parar de inserir ou atualizar linhas com o posicionamento que quer remover.
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
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
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:
- Elimine todas as linhas na tabela de posicionamentos.
- 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
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
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
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
Introduza a declaração DDL
INSERT INTO
(GoogleSQL, PostgreSQL).Por exemplo, adicione um cantor, Marc Richards, à tabela
Singers
e particione-a emeuropeplacement
: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
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
Use DML ou alterações para atualizar dados numa tabela de posicionamentos.
Por exemplo, atualize o nome de
singerid=1
na tabelaSingers
paraCatalina 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
- Crie uma nova partição de instâncias e posicionamento, se ainda não o fez.
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
Use DML ou mutações para mover dados para a partição de instância nova.
Por exemplo, mova
singerid=1
na tabelaSingers
paraasiaplacement
: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
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
- No menu de navegação, clique em Spanner Studio.
- Na página Spanner Studio, clique em Novo separador ou use o separador do editor vazio.
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?
Saiba mais sobre a partição geográfica.
Saiba como criar e gerir partições de instâncias.