Práticas recomendadas para o carregamento de dados em massa
Esta página descreve as práticas recomendadas ao carregar dados em massa para o Firestore com compatibilidade com o MongoDB
com ferramentas como o mongoimport
.
O Firestore é um sistema altamente distribuído que oferece escalabilidade automática para satisfazer as necessidades da sua empresa. O Firestore divide e combina dinamicamente os seus dados com base na carga recebida pelo sistema.
A divisão baseada no carregamento ocorre automaticamente sem qualquer pré-configuração necessária. O sistema de divisão baseado na carga do Firestore tem algumas características importantes e únicas em comparação com outras bases de dados de documentos que é importante ter em atenção ao modelar os seus dados.
A natureza distribuída do Firestore pode exigir a alteração de algumas opções de design, especialmente para cargas de trabalho que foram otimizadas para bases de dados onde a réplica principal é o gargalo para a taxa de transferência de gravação.
Práticas recomendadas
As cargas de trabalho que processam grandes quantidades de dados num cliente de thread único podem criar um gargalo. Os clientes podem usar o processamento de fluxo único para carregar dados em massa, uma vez que o débito do cliente e do servidor são semelhantes. Uma base de dados do Firestore pode processar significativamente mais paralelismo, mas isto requer que configure os clientes para enviar pedidos em paralelo.
mongoimport
Quando usa a ferramenta mongoimport
, os pedidos são feitos sequencialmente por predefinição.
Para melhorar o tempo de carregamento no Firestore,
defina o número de trabalhadores com a flag --numInsertionWorkers
.
A definição correta pode exigir um ajuste com base no tamanho do seu cliente, mas geralmente recomendamos começar com, pelo menos, 32
.
programação assíncrona
Ao desenvolver o seu próprio software com APIs compatíveis com o MongoDB, pode melhorar o paralelismo das seguintes formas:
- Estruturas assíncronas: a utilização de estruturas assíncronas permite-lhe processar e responder a pedidos em paralelo. Não é necessário desenvolver nenhum agrupamento ou colocação em fila complexo quando faz chamadas para a sua base de dados. Cada fluxo de pedidos pode usar ligações independentes e fazer as respetivas chamadas de base de dados em paralelo.
- Use ofertas de computação paralelizada: através de serviços como o Cloud Run, o seu sistema pode dimensionar o número de trabalhadores de computação necessários para processar dados.
Falhas temporárias
Quando trabalha com um sistema distribuído grande como o Firestore, pode encontrar falhas transitórias, como falhas de rede ou contenção num documento.
Quando carrega em massa grandes quantidades de informações, é importante manter uma estratégia de repetição para escritas com falhas sem falhar a operação de carregamento em massa maior.