Comment FME améliore les performances en traitement par lots

En général, les entités qui se déplacent dans un traitement FME sont traitées individuellement, mais des gains de performance sont possibles lorsque plusieurs entités partagent le même schéma et peuvent être traitées ensemble, par lot.

Grâce au traitement en mode bulk, FME améliore les performances de nombreux Readers, Writers et Transformers, ainsi que d'autres mécanismes tels que la mise en cache et la visualisation des entités. Parfois appelé "tables de caractéristiques" (comme dans l'API FME Objects), le mode bulk optimise la façon dont FME stocke et utilise les entités en traitant plus efficacement plusieurs entités similaires qui partagent le même schéma, c'est-à-dire en vrac.

Où le traitement par lots est-il supporté  ?

La prise en charge du mode bulk est spécifique à chaque Reader, Writer et Transformer. Il est possible de lire les entités en vrac, mais de les diviser si les Transformers ou les Writers en aval ne supportent pas encore le mode en vrac.

S'il est pris en charge, FME utilisera toujours le mode bulk (par lots). Dans la plupart des cas, aucune option n'est nécessaire pour activer le mode bulk. Dans d'autres cas, pour bénéficier des avantages du mode groupé, vous devrez peut-être ajouter un nouveau Reader ou un nouveau Writer dans le traitement, ou mettre à niveau un Transformer.

Quand sais-je que le traitement par lots est utilisé ou non ?

Il n'est pas toujours évident de savoir quand le mode bulk est pris en charge. Une indication est que les liens vers les entités seront probablement émis par lots plus importants à la fois au lieu de faire défiler plusieurs entités.

Le fichier journal devrait indiquer quand le mode bulk est désactivé par un message d'avertissement lorsque la table de données sous-jacente est divisée en entités individuelles, ce qui indique que l'on rencontre un Transformer ou un Writer qui ne prend pas en charge le traitement en mode bulk. Dans ces cas, il est parfois possible d'améliorer les performances en utilisant des options ou des Transformers différents qui prennent en charge le mode bulk pour parvenir aux mêmes fins.

Puis-je passer outre le mode par lots ?

Oui, vous pouvez forcer le passage du mode groupé au mode individuel avec un Transformer Decelerator, en utilisant un délai de 0 seconde pour chaque entité. Le tableau des entités sera divisé en entités individuelles.

Quels sont les prérequis au traitement par lots ?

Le support du traitement par lots requiert un schéma consistant pour les entités :

  • Mêmes noms d'attributs et types.
  • Noms d'attributs statiques - c'est-à-dire un nom d'attribut qui ne peut dériver d'un autre attribut.
  • Même système de coordonnées.

Dans certains cas, les formats ou les Transformers ne peuvent lire, traiter ou écrire en mode bulk que si certaines options sont activées et que les données entrantes conviennent au traitement en mode bulk. Par exemple, le Transformer Creator ne traitera en mode groupé que si le nombre d'entités demandées pour la création est supérieur ou égal à 10 000.

Comment le traitement par lots peut-il améliorer les performances ?

Pour que le mode bulk soit le plus efficace possible, les données en vrac doivent être préservées tout au long du flux de travail. Une fois créées par un Reader compatible avec le mode bulk, plus les données en vrac sont conservées longtemps par les Transformers et les scripteurs qui prennent en charge le mode bulk, plus l'amélioration potentielle des performances est importante.

Bien que l'amélioration des performances est possible en utilisant le traitement par lots, cela n'est pas toujours réalisable selon les données et traitements.

Le mode traitement par lots atténue principalement le coût de la création et de la destruction de plusieurs entités en évitant de devoir traiter les entités individuellement. Ainsi, si la création d'entités est coûteuse pour un traitement, ce traitement sera probablement amélioré par le traitement par lots. Cependant, si des facteurs autres que la création et la destruction d'entités consomment la majorité des ressources dans un traitement, les améliorations de performance peuvent être moins notables.

En général, plus le nombre d'entités traitées est élevé et plus leurs schémas sont simples (moins d'attributs de chaîne et moins d'attributs en général), plus l'amélioration potentielle est importante. De même, les données qui contiennent de grandes géométries telles que les rasters, les nuages de points, la 3D ou les très grandes géométries vectorielles bénéficieront moins du support du mode bulk.

Quelles sont les limitations du traitement par lots ?

Pour que le mode de traitement par lots (bulk mode) fonctionne le plus efficacement possible, les Transformers avec des ports de sortie multiples - à l'exception des Transformers qui conservent des entités ("Blocker") - doivent spécifier le paramètre "Par port de sortie" pour le paramètre "Conserver l'ordre des entités". Cependant, dans les traitement qui dépendent de l'ordre des entités dans les ports de sortie joints, ce paramètre produit des résultats inattendus et n'est pas conseillé.

Comment évolue le support du traitement par lots ?

L'ajout du support du traitement par lots pour la majorité des données source, destination et des Transformers est en cours.

En raison de potentiels bénéfices minimaux ou du manque de consistance des schémas, certains formats ou Transformers ne supporteront pas de mode.