Optimisation d'un chargement en bloc sur Amazon Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Optimisation d'un chargement en bloc sur Amazon Neptune

Utilisez les stratégies suivantes pour réduire au minimum le temps d'un chargement en bloc Neptune :

  • Nettoyez vos données :

    • Assurez-vous de convertir vos données dans un format de données compatible avant de les charger.

    • Supprimez les doublons ou les erreurs connues.

    • Réduisez le nombre de prédicats uniques (tels que les propriétés des arêtes et des sommets) autant que possible.

  • Optimisez vos fichiers :

    • Si vous chargez des fichiers volumineux tels que des fichiers CSV à partir d'un compartiment Amazon S3, le chargeur gère pour vous la simultanéité en les analysant en fragments qu'il peut charger en parallèle. L'utilisation d'un très grand nombre de petits fichiers peut ralentir ce processus.

    • Si vous chargez plusieurs fichiers à partir d'un dossier Amazon S3, le chargeur charge automatiquement les fichiers de sommet en premier, puis les fichiers d'arête.

    • La compression des fichiers réduit les temps de transfert. Le chargeur prend en charge la compression gzip des fichiers sources.

  • Vérifiez les paramètres du chargeur :

    • Si vous n'avez pas besoin d'effectuer d'autres opérations pendant le chargement, utilisez le paramètre parallelismOVERSUBSCRIBE. Ce paramètre oblige le chargeur en bloc à utiliser toutes les ressources de CPU disponibles lors de son exécution. Il faut généralement 60 % à 70 % de la capacité du CPU pour que l'opération fonctionne aussi rapidement que le permettent les contraintes d'E/S.

      Note

      Lorsque parallelism est défini sur OVERSUBSCRIBE ou HIGH (paramètre par défaut), le chargement des données openCypher risque de provoquer une condition de concurrence et un blocage des threads, ce qui entraîne une erreur LOAD_DATA_DEADLOCK. Dans ce cas, définissez parallelism sur une valeur inférieure et réessayez le chargement.

    • Si la tâche de chargement inclut plusieurs demandes de chargement, utilisez le paramètre queueRequest. Définir queueRequest sur TRUE permet à Neptune de mettre en file d'attente les demandes afin que vous n'ayez pas à attendre que l'une soit terminée avant d'en émettre une autre.

    • Si les demandes de chargement sont mises en file d'attente, vous pouvez définir des niveaux de dépendance à l'aide du paramètre dependencies, de sorte que l'échec d'une tâche entraîne l'échec des tâches dépendantes. Cette approche permet d'éviter toute incohérence des données chargées.

    • Si une tâche de chargement implique la mise à jour de valeurs précédemment chargées, veillez à définir le paramètre updateSingleCardinalityProperties sur TRUE. Dans le cas contraire, le chargeur traitera une tentative de mise à jour d'une valeur de cardinalité unique existante comme une erreur. Pour les données Gremlin, la cardinalité est également spécifiée dans les en-têtes des colonnes de propriétés (voir En-têtes de colonne de propriété).

      Note

      Le paramètre updateSingleCardinalityProperties n’est pas disponible pour les données RDF (Resource Description Framework).

    • Vous pouvez utiliser le paramètre failOnError pour déterminer si les opérations de chargement en bloc doivent échouer ou se poursuivre en cas d'erreur. Vous pouvez également utiliser le paramètre mode pour vous assurer qu'une tâche de chargement reprendra le chargement à partir du point où une tâche précédente a échoué plutôt que de traiter à nouveau des données déjà chargées.

  • Augmentation de la capacité : configurez la taille maximale de l'instance d'enregistreur de votre cluster de bases de données avant le chargement en bloc. Notez que si vous procédez de la sorte, vous devez également augmenter la capacité de toutes les instances de réplica en lecture dans le cluster de bases de données ou les supprimer jusqu'à ce que vous ayez fini de charger les données.

    Lorsque le chargement en bloc est terminé, veillez à réduire à nouveau la taille de l'instance d'enregistreur.

Important

Si vous êtes confronté à un cycle de redémarrages répétés des réplicas en lecture en raison d'un retard de réplication lors d'un chargement en bloc, les réplicas ne parviendront probablement pas à suivre le rythme de l'enregistreur du cluster de bases de données. Vous pouvez soit mettre à l'échelle les lecteurs pour qu'ils soient plus grands que l'enregistreur, soit les supprimer temporairement pendant le chargement en bloc, puis les recréer une fois le chargement terminé.

Consultez Paramètres de demande pour plus d'informations sur la définition des paramètres de demande du chargeur.