Comment s’exécute un flux

Le moteur exécute un graphe de dépendances : les blocs indépendants prêts s’exécutent en parallèle, les entrées nécessaires sont attendues et les résultats passent aux étapes suivantes. Les destinations préparent et valident d’abord les données ; les écritures constituent une phase distincte. Les étapes dépendantes reprennent lorsque l’opération précédente a renvoyé son résultat. L’exécution parallèle réduit l’attente entre actions indépendantes tout en respectant les dépendances du graphe.

Parallélisme sans modifier les dépendances

Le coordinateur démarre uniquement les blocs dont les entrées sont prêtes. Un bloc de combinaison attend toutes ses entrées, y compris la notification d’un itinéraire inactif. Plusieurs destinations peuvent également être préparées en parallèle. Si les actions externes exigent un ordre strict, définissez-le par un lien depuis la sortie de résultat de la destination précédente.

Le paramètre GRAPH_PARALLELISM vaut 4 par défaut. Il s’agit du nombre maximal de traitements simultanés dans le graphe, et non de la promesse d’une accélération par quatre. L’API externe, la capacité mémoire et la structure du graphe déterminent l’effet réel.

Préparation, instantané et écriture

Schéma explicatifAgrandir ↗Une phase d’exécution : deux branches indépendantes sont préparées en parallèle. Si les blocs suivants dépendent du résultat d’écriture, le moteur poursuit le graphe après l’écriture de cette phase. Il n’existe pas de transaction globale entre systèmes externes.
Comment le moteur prépare et écrit les données

Une phase d’exécution : deux branches indépendantes sont préparées en parallèle. Si les blocs suivants dépendent du résultat d’écriture, le moteur poursuit le graphe après l’écriture de cette phase. Il n’existe pas de transaction globale entre systèmes externes.

  1. Les sources sont lues et transformées.
  2. Chaque destination vérifie les schémas, les coordonnées et les clés, puis prépare un ensemble immuable d’opérations.
  3. Les conflits entre destinations visant le même objet sont vérifiés.
  4. Les autorisations, la licence et la validité des révisions sont revérifiées avant les lots d’écriture.
  5. Les nombres d’opérations confirmées et non confirmées sont enregistrés.

Limites des ressources

LimiteValeur par défautConséquence pour l’utilisateur
Cellules des tables2 000 000Le résultat d’un bloc trop large ou trop volumineux est refusé.
Budget des instantanés du graphe512 MiBLes résultats de prévisualisation ne peuvent pas occuper le stockage sans limite.
GrapheJusqu’à 256 nœuds et 512 liensDivisez les processus trop volumineux en flux plus faciles à gérer.
Attente interactive12 heuresUne étape de saisie utilisateur n’attend pas indéfiniment.

Améliorer les performances

  • Limitez les plages, les listes de colonnes et le nombre de lignes au plus près de la source.
  • Filtrez les enregistrements inutiles avant les jointures et regroupements coûteux.
  • Vérifiez l’unicité des clés de jointure pour éviter une multiplication inattendue des lignes.
  • Adaptez la taille des lots d’écriture aux capacités de la destination.
  • Mesurez séparément la lecture, la transformation et l’écriture à partir du journal ; ne généralisez pas les résultats d’un jeu de données à tous les scénarios.

Exécutions simultanées et ordre des écritures

Un flux peut avoir plusieurs exécutions simultanées. La limite par défaut est de 4 exécutions par flux ; la capacité en threads de traitement est configurée séparément. Les écritures visant les mêmes cellules, clés de table ou fichiers sont ordonnées, tandis que des objets indépendants peuvent être écrits simultanément. L’effacement d’un cube réserve l’objet entier. « En attente dans la file d’écriture… » signifie qu’une écriture antérieure en conflit doit se terminer.