Bonnes pratiques pour le chargement groupé de données

Ne concerne que l'édition Cloud Firestore Enterprise.

Cette page décrit les bonnes pratiques à suivre lorsque vous chargez des données par lot dans Cloud Firestore compatible avec MongoDB à l'aide d'outils tels que mongoimport.

Cloud Firestore est un système hautement distribué qui offre un scaling automatique pour répondre aux besoins de votre entreprise. Cloud Firestore divise et combine dynamiquement vos données en fonction de la charge reçue par le système.

La répartition basée sur la charge se fait automatiquement, sans préconfiguration requise. Le système de fractionnement basé sur la charge Cloud Firestore présente des caractéristiques uniques et importantes par rapport aux autres bases de données de documents. Il est important de les garder à l'esprit lorsque vous modélisez vos données.

La nature distribuée de Cloud Firestore peut nécessiter la modification de certains choix de conception, en particulier pour les charges de travail optimisées pour les bases de données où le réplica principal est le goulot d'étranglement pour le débit d'écriture.

Bonnes pratiques

Les charges de travail qui traitent de grandes quantités de données dans un client à thread unique peuvent créer un goulot d'étranglement. Les clients peuvent utiliser le monothreading pour charger des données de manière groupée, car le débit du client et du serveur sont similaires. Une base de données Cloud Firestore peut gérer beaucoup plus de parallélisme, mais vous devez configurer les clients pour qu'ils envoient des requêtes en parallèle.

mongoimport

Lorsque vous utilisez l'outil mongoimport, les requêtes sont effectuées de manière séquentielle par défaut. Pour améliorer le temps de chargement dans Cloud Firestore, définissez le nombre de nœuds de calcul avec l'indicateur --numInsertionWorkers. Le paramètre approprié peut nécessiter un ajustement en fonction de la taille de votre client, mais nous vous recommandons généralement de commencer avec au moins 32.

programmation asynchrone

Lorsque vous développez votre propre logiciel à l'aide d'API compatibles avec MongoDB, vous pouvez améliorer le parallélisme des manières suivantes :

  • Frameworks asynchrones : ils vous permettent de traiter les requêtes et d'y répondre en parallèle. Il n'est pas nécessaire de développer un pool ou une file d'attente complexes lorsque vous appelez votre base de données. Chaque flux de requête peut utiliser des connexions indépendantes et effectuer ses appels de base de données en parallèle.
  • Utilisez des offres de calcul parallélisées : en utilisant des services tels que Cloud Run, votre système peut adapter le nombre de nœuds de calcul nécessaires au traitement des données.

Échecs temporaires

Lorsque vous travaillez avec un grand système distribué tel que Cloud Firestore, vous pouvez rencontrer des échecs temporaires tels que des problèmes de réseau ou des conflits sur un document.

Lorsque vous chargez de grandes quantités d'informations de manière groupée, il est important de maintenir une stratégie de réessai pour les écritures ayant échoué sans que l'opération de chargement groupé plus importante échoue.