Relevante apenas para a edição Enterprise do Cloud Firestore. |
Nesta página, descrevemos as práticas recomendadas para o carregamento em massa de dados no Cloud Firestore com compatibilidade com o MongoDB
usando ferramentas como o mongoimport
.
O Cloud Firestore é um sistema altamente distribuído que oferece escalonamento automático para atender às necessidades da sua empresa. O Cloud Firestore divide e combina seus dados de forma dinâmica com base na carga recebida pelo sistema.
A divisão com base na carga acontece automaticamente, sem necessidade de pré-configuração. O sistema de divisão baseada em carga Cloud Firestore tem algumas características importantes e exclusivas em comparação com outros bancos de dados de documentos que são importantes para ter em mente ao modelar seus dados.
A natureza distribuída do Cloud Firestore pode exigir a mudança de algumas opções de design, principalmente para cargas de trabalho otimizadas para bancos de dados em que a réplica principal é o gargalo para a capacidade de gravação.
Práticas recomendadas
As cargas de trabalho que processam grandes quantidades de dados em um cliente de uma única linha de execução podem criar um gargalo. Os clientes podem usar o encadeamento único para carregar dados em massa, já que a capacidade do cliente e do servidor são semelhantes. Um banco de dados Cloud Firestore pode processar muito mais paralelismo, mas isso exige que você configure os clientes para enviar solicitações em paralelo.
mongoimport
Ao usar a ferramenta mongoimport
, as solicitações são feitas em sequência por padrão.
Para melhorar o tempo de carregamento em Cloud Firestore,
defina o número de workers com a flag --numInsertionWorkers
.
A configuração correta pode exigir ajustes com base no tamanho do cliente, mas geralmente recomendamos começar com pelo menos 32
.
programação assíncrona
Ao desenvolver seu próprio software usando APIs compatíveis com o MongoDB, é possível melhorar o paralelismo das seguintes maneiras:
- Frameworks assíncronos: com eles, é possível processar e responder a solicitações em paralelo. Não é necessário desenvolver nenhum agrupamento ou enfileiramento complexo ao fazer chamadas para o banco de dados. Cada fluxo de solicitação pode usar conexões independentes e fazer chamadas de banco de dados em paralelo.
- Use ofertas de computação paralelizada: usando serviços como Cloud Run, seu sistema pode escalonar o número de workers de computação necessários para processar dados.
Falhas temporárias
Ao trabalhar com um grande sistema distribuído como o Cloud Firestore, você pode encontrar falhas temporárias, como falhas de rede ou disputa em um documento.
Ao carregar grandes quantidades de informações em massa, é importante manter uma estratégia de novas tentativas para gravações com falha sem falhar na operação de carga em massa maior.