Nesta página, descrevemos as solicitações de gravação em lote do Spanner e como usá-las modificar os dados do Spanner.
Use a gravação em lote do Spanner para inserir, atualizar ou excluir várias linhas nas tabelas do Spanner. Spanner A gravação em lote oferece suporte a gravações de baixa latência sem uma operação de leitura e retorna respostas rápidas já que mutações são aplicadas em lotes. Para usar a gravação em lote, agrupe relacionadas, e todas as mutações de um grupo são comprometidas de maneira atômica. As mutações entre grupos são aplicadas em uma ordem não especificada e são independentes umas das outras (não atômicas). O Spanner não precisa de aguardar a aplicação de todas as mutações antes de enviar uma resposta, o que significa gravação em lote permite falha parcial. Também é possível executar diversos gravações de cada vez. Para mais informações, consulte Como usar gravação em lote.
Casos de uso
A gravação em lote do Spanner é especialmente útil se você quiser confirmar um de gravações sem uma operação de leitura, mas sem a necessidade para todas as suas mutações.
Se você quiser agrupar suas solicitações DML, use o DML em lote para modificar os dados do Spanner. Para mais informações sobre diferenças entre DML e mutações, consulte Comparação entre DML e mutações.
Para solicitações de mutação única, recomendamos o uso de um método de bloqueio de leitura e gravação transação.
Limitações
A gravação em lote do Spanner tem as seguintes limitações:
A gravação em lote do Spanner não está disponível usando o console do Google Cloud ou Google Cloud CLI. Ele só está disponível usando REST e RPC e a biblioteca de cliente Java do Spanner.
Proteção contra repetição não oferece suporte ao uso da gravação em lote. É possível que as mutações sejam aplicada mais de uma vez, e uma mutação aplicada mais de uma vez pode em caso de falha. Por exemplo, se uma mutação de inserção for repetida, ela poderá produz um erro já existente ou, se você usar os comandos gerados ou de confirmação com base em carimbo de data/hora na mutação, isso pode resultar em linhas adicionais adicionados à tabela. Recomendamos estruturar suas gravações para que sejam idempotentes evitar esse problema.
Não é possível reverter uma solicitação de gravação em lote concluída. Você pode cancelar uma uma solicitação de gravação em lote em andamento. Se você cancelar uma gravação em lote em andamento, mutações em grupos não concluídos são revertidas. Mutações em grupos concluídos estão confirmados no banco de dados.
O tamanho máximo de uma solicitação de gravação em lote é igual ao limite para uma solicitação de confirmação. Para mais informações, consulte Limites para criar, ler, atualizar e excluir dados.
Como usar gravação em lote
Para usar a gravação em lote, você precisa ter a permissão spanner.databases.write
em
no banco de dados que você quer modificar. É possível gravar mutações em lote
de forma não atômica em uma única chamada usando um REST
ou API RPC
solicitar chamada.
Agrupe os seguintes tipos de mutação ao usar a gravação em lote:
- Inserção de linhas com o mesmo prefixo de chave primária na mãe e na filha tabelas.
- Inserção de linhas em tabelas com um relacionamento de chave externa entre as tabelas.
- Outros tipos de mutações relacionadas, dependendo do esquema do seu banco de dados e lógica do aplicativo.
Também é possível fazer gravações em lote usando a biblioteca de cliente do Spanner Java.
O exemplo de código a seguir atualiza a tabela Singers
com novas linhas.
Java
A seguir
- Saiba mais sobre as transações do Spanner.