Comment insérer 20 millions d'enregistrements dans une base de données NoSQL
Publié: 2022-11-24Il existe différentes manières d'insérer 20 millions d'enregistrements dans une base de données NoSQL. Une façon serait d'utiliser la fonction de chargement en masse de la base de données. Cela nécessiterait que les données soient dans un format spécifique que la base de données puisse comprendre et serait le moyen le plus efficace de charger les données. Une autre façon serait d'utiliser un script ou une application pour insérer les données un enregistrement à la fois. Ce serait un processus plus lent mais n'exigerait pas que les données soient dans un format spécifique.
Mongodb peut-il gérer des millions d'enregistrements ?
Pour traiter des millions d'enregistrements en temps réel, vous devez utiliser MongoDB et ElasticSearch. Il serait également avantageux d'utiliser ces structures et concepts dans un grand ensemble de données .
En optimisant les insertions massives de MongoDB, nous pouvons charger 50 millions d'enregistrements plus rapidement de 33 % ! La page de configuration de Github est l'endroit où vous trouverez le code de tous ces programmes. J'ai testé mon Macbook Pro avec une vitesse de liaison montante de 25 à 35 Mbps et une vitesse de connexion de 25 à 35 Mbps. Dans cette expérience, il est possible que les résultats soient différents de ceux obtenus sur un EC2 prod-ready. Une plateforme de test de données Kaggle est un excellent choix pour tester les données car elle a préparé des ensembles de données. yelp_academic_dataset_review.json, un fichier de 5 Go, contient 6,9 millions d'enregistrements. Une fois que les nœuds ont lu le fichier, il a fallu 2,5 heures à Mongo pour écrire 1 million d'enregistrements.
Cet outil est recommandé pour ne pas générer plus de 2 millions de points de données. Une entité tampon Node.js ne peut pas contenir plus de 2 Go de fichiers. Il est parfaitement logique que Streams soit utilisé ici. Nous pouvons insérer 100k séquentiel dans cet exemple avec un léger retard. Il a fallu 29 minutes pour insérer l'insert. Comme EventEmitter est utilisé sur tous les flux, c'est le cas. Cette utilisation du processeur est passée à 40 %, soit 10 % de plus qu'une insertion séquencée de 100 k.
Les IOPS ont presque doublé, passant de 50 à 100, et les connexions sont passées de 40 à 60. Il doit parcourir chaque dossier, lire le fichier et y enregistrer le compteur de la longueur du tableau des révisions. Si cette approche fonctionne bien à l'avenir, elle pourra être appliquée à des insertions ultérieures ; prenez votre temps pour voir comment cela fonctionne. Dans cette section, nous avons examiné combien de temps il faudrait pour lire 51 936 dossiers et insérer 63 millions d'enregistrements. Nous devons savoir combien de dossiers ont été lus afin d'atteindre le prochain million d'enregistrements car l'insertion de données peut être parallélisée ultérieurement. Le système prend environ une heure et demie pour insérer 63 millions d'enregistrements. Nous avions précédemment prédit que ce serait 33% plus rapide que ça !
Nous avons chargé près de 45 Go de données en une heure et demie. L'IOPS était de 125 pour toute la période et les connexions sont restées autour de 100 la plupart du temps. Maintenant que les résultats sont connus, je suppose que je peux commencer à planifier l'avenir. InsertMany vous permet d'insérer 1 million d'enregistrements en moins d'une minute. Pour un chargement entre 1 et 10 mètres, l'API Stream serait très probablement nécessaire pour paralléliser les inserts. Étant donné que le processeur et les IOPS du cluster sont si lourds, les performances des applications peuvent en souffrir considérablement. Exécutez un script de planification pour déterminer le nombre d'opérations/processus pouvant être exécutés simultanément.
MongoDB présente un certain nombre d'avantages par rapport aux autres systèmes de stockage de fichiers en plus d'être un excellent choix pour les fichiers volumineux. Pour commencer, les fichiers volumineux peuvent facilement être stockés dans la base de données. De plus, la base de données a la capacité de traiter un grand nombre d'objets. Enfin, la base de données est évolutive horizontalement, ce qui lui permet de gérer une plus grande quantité de données sans être submergée. Si vous souhaitez stocker des fichiers volumineux dans une base de données, MongoDB est un excellent choix. Il y a de nombreux avantages à l'utiliser par rapport à d'autres options de stockage et d'évolutivité.
Quelle est la taille maximale du document Mongodb ?
La taille maximale d'un document MongoDB est de 16 mégaoctets.
Comment insérer des millions d'enregistrements dans Mongodb
En supposant que vous ayez un serveur MongoDB en cours d'exécution et que vous ayez créé une base de données et une collection, vous pouvez insérer des enregistrements à l'aide de la méthode insert() . Cette méthode peut prendre soit un tableau de documents, soit un seul document.
Pour insérer un seul document, utilisez la syntaxe suivante :
db.collection.insert(
{
nom: "John Doe"
}
)
Pour insérer plusieurs documents, utilisez la syntaxe suivante :
db.collection.insert([
{
nom: "John Doe"
},
{
nom: "Jane Doe"
}
])
Vous avez quelques options. Il est possible de créer une collection distincte pour chaque ID de périphérique, puis d'interroger cet ID séparément. Si vous avez beaucoup d'appareils, cela peut coûter cher. Si vous souhaitez rechercher tous les documents d'une collection, vous pouvez faire la même chose avec la même collection pour tous les appareils. Le coût de ce service peut être prohibitif si vous avez un grand nombre d'appareils. La troisième option consiste à créer une collection fragmentée. La charge sera répartie sur Mongo, ce qui accélérera le traitement des requêtes . Si vous souhaitez créer la collection à l'aide de l'option de collection fragmentée, veillez à définir l'option shards sur true.
Mongodb : un système de gestion de base de données Nosql
MongoDB est un système de gestion de base de données NoSQL conçu pour gérer des documents. Il peut gérer une large gamme de fichiers de données, avec une limite par défaut de 100 000 clés d'index par document. La plateforme MongoDB est ainsi capable de stocker une grande quantité de données sans être surchargée. L'insertion en masse est une fonctionnalité pratique de MongoDB. Il peut être utile si vous avez beaucoup de données à ajouter car il peut insérer plusieurs documents à la fois.
Limite d'insertion en masse Mongodb
La version MongoDB 3.6 en produit actuellement 100 000.
Une méthode d'insertion en masse permet d'insérer plusieurs documents à la fois dans MongoDB. En tant que paramètre, la méthode insert génère un tableau de documents. Les utilisateurs ne sont pas tenus d'inclure tous les champs dans leur requête. Dans cet exemple, utilisons la ligne de commande pour insérer plusieurs documents à l'aide de l'insertion en bloc MongoDB. L'insertion d'un nombre en bloc s'effectue à l'aide de la méthode Bulk.insert(). Cette méthode, qui a été introduite après la version 2.6, est similaire à l'insertion en masse non ordonnée. Nous créons d'abord une liste ordonnée de voitures avec un nom carbulk1, puis insérons les documents en exécutant la méthode d'exécution dessus. Ce programme Java montre comment exécuter diverses opérations en masse à l' aide de commandes shell pour la première fois.
Mongodb a-t-il une limite ?
MongoDB prend en charge une profondeur imbriquée de 100 niveaux, de sorte que les documents peuvent atteindre une taille de 16 Mo. La base de données MongoDB ne peut contenir qu'un maximum de 20 Go de données.