Con oltre 500 snap disponibili sulla piattaforma SnapLogic, strutturare una pipeline data-intensive per ottenere le migliori prestazioni può essere un'arte. Come si legge nelle note di rilascio delle ultime release, abbiamo lavorato internamente per ottimizzare le prestazioni. Nel farlo, abbiamo scoperto come migliorare le prestazioni della pipeline.
In questo post del blog, ci concentriamo sui suggerimenti per eseguire il minor numero possibile di operazioni per raggiungere i vostri obiettivi. Ridurre al minimo le operazioni eseguite può sembrare ovvio, ma anche gli esperti costruttori di pipeline di SnapLogic sono noti per aver commesso degli errori.
Di seguito sono riportati alcuni dei consigli per ottimizzare le prestazioni della pipeline, disposti in ordine crescente di sofisticazione:
- Se possibile, filtrare prima del join e non dopo. Meno dati da unire (una delle operazioni più costose) significa unioni più veloci.
- Utilizzate uno snap di ordinamento immediatamente prima di uno snap di unione: questo aiuterà l'utilizzo della memoria e le prestazioni.
- Se dovete eliminare dei campi dai documenti, fatelo il prima possibile: risparmierete memoria da quel momento in poi.
- Per le espressioni, privilegiare quelle più semplici rispetto a quelle più complesse (per esempio, se si può scegliere tra una semplice stringa split() o una regex, scegliere la split).
- Se possibile, utilizzare Snaps invece del linguaggio di espressione. Ad esempio, se si sta ramificando la gestione dei documenti, provare a usare un router invece di un mapper con una serie di ternari. Sarà più facile seguire il flusso e si potrà risparmiare un po' di codice ripetuto.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.
- Alcuni utenti avanzati utilizzano una tecnica popolare in JavaScript per scegliere i valori:expr1 || expr2 || ... || exprn
Si tratta semplicemente dell'OR di un gruppo di espressioni. In genere, lo si vede con una funzione, come Date.parse(). Poiché una data può essere rappresentata in più modi, potrebbe essere necessario provare diverse stringhe di rappresentazione per ottenere quella giusta. Il linguaggio di espressione di SnapLogic, come JavaScript, ha un OR a corto circuito (||). Ciò significa che verrà presa la prima espressione che dà esito positivo (leggendo da sinistra a destra) e non verranno eseguite altre espressioni. Quindi, se si utilizza questo schema, cercare di mettere le espressioni in ordine decrescente di frequenza di esecuzione.
Unitevi al forum della forum della Comunità SnapLogic poiché gli utenti e i dipendenti di SnapLogic forniscono regolarmente consigli e suggerimenti. È molto probabile che qualcuno della comunità SnapLogic abbia già risolto il problema che state affrontando. Inoltre, i team di prodotto e di progettazione sono sempre interessati a capire cosa stanno affrontando i nostri clienti e sono lieti di fornire assistenza tramite la comunità SnapLogic.