Práticas recomendadas para carregamento de dados em massa

Nesta página, descrevemos as práticas recomendadas para fazer o carregamento em massa de dados no Firestore com compatibilidade com o MongoDB usando ferramentas como o mongoimport.

O Firestore é um sistema altamente distribuído que oferece escalonamento automático para atender às necessidades da sua empresa. O Firestore divide e combina seus dados de forma dinâmica com base na carga recebida pelo sistema.

A divisão com base em carga acontece automaticamente, sem necessidade de pré-configuração. O sistema de divisão baseada em carga do Firestore tem algumas características importantes e exclusivas em comparação com outros bancos de dados de documentos. É importante ter isso em mente ao modelar seus dados.

A natureza distribuída do 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 do 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 sequencialmente por padrão. Para melhorar o tempo de carregamento no 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 paralela: usando serviços como o 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 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.