Esta página descreve os pedidos de gravação em lote do Spanner e como pode usá-los para modificar os seus dados do Spanner.
Pode usar a gravação em lote do Spanner para inserir, atualizar ou eliminar várias linhas nas suas tabelas do Spanner. A gravação em lote do Spanner suporta gravações de baixa latência sem uma operação de leitura e devolve respostas à medida que as mutações são aplicadas em lotes. Para usar a gravação em lote, agrupa as mutações relacionadas e todas as mutações num grupo são confirmadas atomicamente. As mutações em vários grupos são aplicadas numa ordem não especificada e são independentes entre si (não atómicas). O Spanner não precisa de esperar que todas as mutações sejam aplicadas antes de enviar uma resposta, o que significa que a gravação em lote permite uma falha parcial. Também pode executar várias gravações em lote de uma vez. Para mais informações, consulte o artigo Como usar a gravação em lote.
Exemplos de utilização
A gravação em lote do Spanner é especialmente útil se quiser confirmar um grande número de gravações sem uma operação de leitura, mas não precisar de uma transação atómica para todas as suas mutações.
Se quiser processar em lote os seus pedidos de DML, use o DML em lote para modificar os seus dados do Spanner. Para mais informações sobre as diferenças entre a DML e as mutações, consulte o artigo Comparar a DML e as mutações.
Para pedidos de mutação única, recomendamos a utilização de uma transação de leitura/escrita de bloqueio.
Limitações
A escrita em lote do Spanner tem as seguintes limitações:
A gravação em lote do Spanner não está disponível através da Google Cloud consola nem da Google Cloud CLI. Só está disponível através das APIs REST e RPC, e das bibliotecas de cliente do Spanner.
A proteção contra repetição não é suportada através da gravação em lote. É possível que as mutações sejam aplicadas mais do que uma vez e que uma mutação aplicada mais do que uma vez possa resultar numa falha. Por exemplo, se uma mutação de inserção for repetida, pode produzir um erro de já existe ou, se usar chaves geradas ou baseadas na data/hora de confirmação na mutação, pode resultar na adição de linhas adicionais à tabela. Recomendamos que estruture as suas gravações de forma idempotente para evitar este problema.
Não pode reverter um pedido de gravação em lote concluído. Pode cancelar um pedido de gravação em lote em curso. Se cancelar uma gravação em lote em curso, as mutações em grupos não concluídos são revertidas. As mutações em grupos concluídos são confirmadas na base de dados.
O tamanho máximo de um pedido de gravação em lote é igual ao limite de um pedido de confirmação. Para mais informações, consulte o artigo Limites para criar, ler, atualizar e eliminar dados.
Como usar a gravação em lote
Para usar a gravação em lote, tem de ter a autorização spanner.databases.write
na base de dados que quer modificar. Pode escrever mutações em lote de forma não atómica numa única chamada através de uma chamada de pedido de API REST ou RPC.
Deve agrupar os seguintes tipos de mutações quando usar a gravação em lote:
- Inserir linhas com o mesmo prefixo de chave principal nas tabelas principal e secundária.
- Inserir linhas em tabelas com uma relação de chave externa entre as tabelas.
- Outros tipos de mutações relacionadas, consoante o esquema da base de dados e a lógica da aplicação.
Também pode escrever em lote através das bibliotecas de cliente do Spanner.
O exemplo de código seguinte atualiza a tabela Singers
com novas linhas.
Bibliotecas cliente
Java
Go
Nó
Python
C++
O que se segue?
- Saiba mais acerca das transações do Spanner.