Como inserir 20 milhões de registros em um banco de dados NoSQL

Publicados: 2022-11-24

Existem várias maneiras de inserir 20 milhões de registros em um banco de dados NoSQL. Uma maneira seria usar o recurso de carregamento em massa do banco de dados. Isso exigiria que os dados estivessem em um formato específico que o banco de dados pudesse entender e seria a maneira mais eficiente de carregar os dados. Outra forma seria usar um script ou aplicativo para inserir os dados um registro por vez. Este seria um processo mais lento, mas não exigiria que os dados estivessem em um formato específico.

O Mongodb pode lidar com milhões de registros?

Crédito: freecodecamp.org

Para processar milhões de registros em tempo real, você deve usar MongoDB e ElasticSearch. Também seria vantajoso usar essas estruturas e conceitos em um grande conjunto de dados .

Ao otimizar inserções massivas do MongoDB, podemos carregar 50 milhões de registros mais rapidamente em 33%! A página Github Setup é onde você encontrará o código para todos esses programas. Testei meu Macbook Pro com uma velocidade de uplink de 25–35 Mbps e uma velocidade de conexão de 25–35 Mbps. Neste experimento, é possível que os resultados sejam diferentes daqueles obtidos em um EC2 pronto para prod. Uma plataforma de teste de dados Kaggle é uma excelente escolha para testar dados porque preparou conjuntos de dados. yelp_academic_dataset_review.json, um arquivo de 5 GB, contém 6,9 milhões de registros. Depois que os nós leram o arquivo, o Mongo levou 2,5 horas para gravar 1 milhão de registros.

Esta ferramenta é recomendada para gerar no máximo 2 milhões de pontos de dados. Uma entidade de buffer Node.js não pode conter mais de 2 GB de arquivos. Faz todo o sentido que Streams seja usado aqui. Podemos inserir 100k sequenciais neste exemplo com um pequeno atraso. Demorou 29 minutos para inserir o inserto. Como EventEmitter é usado em todos os fluxos, esse é o caso. Esse uso da CPU aumentou para 40%, 10% a mais do que uma inserção sequenciada de 100k.

O IOPS quase dobrou de 50 para 100 e as conexões aumentaram de 40 para 60. Ele deve iterar em cada pasta, ler o arquivo e salvar o contador do tamanho da matriz de revisões lá. Se essa abordagem funcionar bem no futuro, ela poderá ser aplicada a inserções posteriores; tome seu tempo para ver como funciona. Nesta seção, analisamos quanto tempo levaria para ler 51.936 pastas e inserir 63 milhões de registros. Devemos saber quantas pastas foram lidas para atingir o próximo milhão de registros, pois a inserção de dados pode ser paralelizada posteriormente. O sistema leva cerca de uma hora e meia para inserir 63 milhões de registros. Previmos anteriormente que seria 33% mais rápido do que isso!

Carregamos quase 45 GB de dados em uma hora e meia. O IOPS foi de 125 durante todo o período e as conexões ficaram em torno de 100 na maior parte do tempo. Agora que os resultados chegaram, acho que posso começar a planejar o futuro. InsertMany permite inserir 1 milhão de registros em menos de um minuto. Para carregar entre 1 e 10 metros, a API Stream provavelmente seria necessária para paralelizar as inserções. Como a CPU e as IOPS do cluster são muito pesadas, o desempenho do aplicativo pode sofrer bastante. Execute um script de agendamento para determinar quantas operações/processos podem ser executados simultaneamente.

O MongoDB tem várias vantagens em relação a outros sistemas de armazenamento de arquivos, além de ser uma excelente opção para arquivos grandes. Para começar, arquivos grandes podem ser facilmente armazenados no banco de dados. Além disso, o banco de dados tem a capacidade de processar um grande número de objetos. Por fim, o banco de dados é escalável horizontalmente, permitindo que ele lide com uma quantidade maior de dados sem ficar sobrecarregado. Se você deseja armazenar arquivos enormes em um banco de dados, o MongoDB é uma excelente escolha. Existem inúmeras vantagens em usá-lo em relação a outras opções de armazenamento e escalabilidade.

Qual é o tamanho máximo do documento Mongodb?

Crédito: brain-mentors.com

O tamanho máximo de um documento MongoDB é de 16 megabytes.

Como inserir milhões de registros no Mongodb

Supondo que você tenha um servidor MongoDB em execução e tenha um banco de dados e uma coleção criados, você pode inserir registros usando o método insert(). Esse método pode usar uma matriz de documentos ou um único documento.
Para inserir um único documento, use a seguinte sintaxe:
db.collection.insert(
{
nome: “John Doe”
}
)
Para inserir vários documentos, use a seguinte sintaxe:
db.collection.insert([
{
nome: “John Doe”
},
{
nome: "Jane Doe"
}
])

Você tem poucas opções. É possível criar uma coleção separada para cada ID de dispositivo e, em seguida, consultar esse ID separadamente. Se você tiver muitos dispositivos, isso pode ser caro. Se você deseja pesquisar todos os documentos em uma coleção, pode fazer o mesmo com a mesma coleção para todos os dispositivos. O custo desse serviço pode ser proibitivo se você tiver um grande número de dispositivos. A terceira opção é criar uma coleção fragmentada. A carga será distribuída pelo Mongo, resultando em um processamento de consulta mais rápido . Se você deseja criar a coleção usando a opção de coleção fragmentada, certifique-se de definir a opção fragmentos como true.

Mongodb: um sistema de gerenciamento de banco de dados Nosql

MongoDB é um sistema de gerenciamento de banco de dados NoSQL criado para lidar com documentos. Ele pode lidar com uma ampla variedade de arquivos de dados, com um limite padrão de 100.000 chaves de índice por documento. A plataforma MongoDB é, portanto, capaz de armazenar uma grande quantidade de dados sem ficar sobrecarregada. A inserção em massa é um recurso conveniente no MongoDB. Pode ser útil se você tiver muitos dados para adicionar, pois pode inserir vários documentos de uma só vez.

Limite de inserção em massa do Mongodb

A versão MongoDB 3.6 rende atualmente 100.000.

Um método de inserção em massa permite que vários documentos sejam inseridos de uma só vez no MongoDB. Como parâmetro, o método insert gera um array de documentos. Os usuários não são obrigados a incluir todos os campos em sua consulta. Neste exemplo, vamos usar a linha de comando para inserir vários documentos usando a inserção em massa do MongoDB. A inserção de um número em massa é realizada usando o método Bulk.insert(). Este método, que foi introduzido após a versão 2.6, é semelhante à inserção em massa não ordenada. Primeiro criamos uma lista ordenada de carros com um nome carbulk1 e, em seguida, inserimos os documentos executando o método execute neles. Este programa Java demonstra como executar uma variedade de operações em massa usando comandos shell pela primeira vez.

O Mongodb tem um limite?

O MongoDB suporta uma profundidade aninhada de 100 níveis, portanto, os documentos podem ter até 16 MB de tamanho. O banco de dados MongoDB pode conter no máximo 20 GB de dados.