Avec plus de 500 Snaps disponibles sur SnapLogic plateforme, structurer un pipeline à forte intensité de données pour obtenir les meilleures performances peut être un art. Comme l‘indiquent les notes de mise à jour de nos dernières versions, nous avons travaillé en interne pour optimiser les performances. Ce faisant, nous avons découvert des moyens d‘améliorer les performances des pipelines.
Dans cet article de blog, nous nous concentrons sur les astuces permettant d‘effectuer le moins d‘opérations possible pour atteindre vos objectifs. Minimiser les opérations effectuées peut sembler évident, mais même les constructeurs de pipelines expérimentés de SnapLogic sont connus pour se tromper sur ce point.
Voici quelques-uns de ces conseils pour optimiser les performances des pipelines, classés par ordre croissant de sophistication :
- Filtrez avant la jointure, et non après, si possible. Moins de données à joindre (l‘une des opérations les plus coûteuses) signifie des jointures plus rapides.
- Utilisez un cliché de tri immédiatement avant un cliché de jointure - cela améliorera l‘utilisation de la mémoire et les performances.
- Si vous devez supprimer des champs d‘un document, faites-le dès que possible - vous économiserez ainsi de la mémoire.
- Pour les expressions, privilégiez les expressions simples aux expressions plus complexes (par exemple, si vous avez le choix entre une simple chaîne de caractères split() et une expression rationnelle, optez pour le split).
- Dans la mesure du possible, utilisez les Snaps au lieu du langage d‘expression. Par exemple, si vous ramifiez le traitement des documents, essayez d‘utiliser un routeur au lieu d‘un mappeur avec un tas de ternaires. Il sera plus facile de suivre le flux, et vous pourrez vous épargner un tas de répétitions de code.For example, you could do a transform to handle numbers via a mapper with the expression:$value <= 0 ? Math.abs($value) : ($value % 2 == 0 ? $value * 2 : ($value % 2 == 1 ? $value + 2 : null )) .Or you could use the pipeline below, which most people think is clearer and more maintainable. You also get four threads doing the computation (one per mapper), though you do pick up overhead owing to the Union and Sort. Still, using Snaps instead of the Expression Language is a good rule to follow when possible.
- Certains utilisateurs avancés utilisent une technique populaire en JavaScript pour sélectionner des valeurs :expr1 || expr2 || ... || exprn
Il s‘agit simplement du OU d‘un ensemble d‘expressions. Généralement, vous voyez cela avec une fonction, comme Date.parse(). Comme une date peut être représentée de plusieurs façons, il se peut que vous deviez essayer plusieurs chaînes de représentation différentes pour obtenir la bonne. Le langage d‘expression SnapLogic, comme JavaScript, possède un OU de court-circuit (||). Cela signifie que la première expression évaluée comme vraie sera prise en compte (en lisant de gauche à droite) et qu‘aucune autre exécution n‘aura lieu. Par conséquent, si vous utilisez ce modèle, essayez de placer les expressions dans l‘ordre décroissant de la fréquence d‘exécution.
Rejoignez le forum de la communauté SnapLogic car les utilisateurs et les employés de SnapLogic fournissent régulièrement des conseils et des suggestions. Il y a de fortes chances qu‘un membre de la communauté SnapLogic ait déjà résolu le(s) problème(s) auquel vous êtes confronté. De plus, les équipes Produit et Ingénierie sont toujours intéressées par la compréhension des problèmes rencontrés par nos clients et sont heureuses de les aider via la communauté SnapLogic.