Chargement de segments de jeu de données en parallèle
Lors du chargement complet, vous pouvez accélérer le chargement de grands jeux de données en divisant le jeu de données en segments, qui seront chargés en parallèle. Les tables peuvent être divisées par plages de données, toutes les partitions, toutes les sous-partitions ou des partitions spécifiques.
Chaque segment de jeu de données est chargé à l'aide d'une sous-tâche distincte. Par conséquent, lorsque vous décidez de la manière de diviser un jeu de données, vous devez toujours tenir compte de la disponibilité des ressources de base de données et réseau. La division d'une table en un trop grand nombre de segments peut avoir un impact sur les performances de la base de données et surcharger la capacité du réseau. Si vous choisissez la méthode de segmentation par Plages de données avec un jeu de données partitionné, la meilleure pratique consiste à configurer les plages de sorte que chaque plage couvre une ou plusieurs partitions complètes. Cela permettra d'accélérer la récupération des données et de minimiser l'impact sur les ressources de traitement de la base de données.
Sources et cibles de données supportées
La tâche de données doit être définie avec une combinaison des connecteurs de source et de cible de données suivants.
Connecteurs de source de données supportés
- IBM DB2 pour LUW
-
IBM DB2 pour z/OS
Note InformationsLa segmentation des tables par partitions ou sous-partitions n'est pas supportée avec le connecteur source IBM DB2 pour z/OS.
- Microsoft SQL Server (basé sur le journal)
- MySQL
- Oracle
-
PostgreSQL
Note InformationsLa segmentation des tables par partitions ou sous-partitions n'est pas supportée avec le connecteur source PostgreSQL.
- SAP (Application)Note Informations
Les tables avec le point de terminaison source SAP (Application) dépendent du client par défaut. La colonne MANDT est automatiquement reprise directement du connecteur.
- SAP HANA (Database)
Connecteurs cibles supportés
- Amazon Redshift
- Amazon S3
- Google Cloud BigQuery
- Google Cloud Storage
- Microsoft Fabric Data Warehouse
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- Snowflake
Configuration d'un chargement parallèle
Vous pouvez diviser une table en utilisant l'une des deux méthodes suivantes : Plages de données ou Partitions. La méthode Plages de données divise la table par plages de données, tandis que la méthode Partitions divise la table en fonction de partitions.
Utilisation de la méthode par plages de données
Pour définir les limites de segment par plage de données :
-
Dans l'onglet Jeux de données, cliquez sur le menu
à droite du jeu de données et sélectionnez Paramètres.
La boîte de dialogue Chargement parallèle s'ouvre.
-
Sélectionnez la méthode de segmentation par Plages de données .
-
Cliquez sur Sélectionner des colonnes.
La boîte de dialogue Colonnes de segmentation de la table s'ouvre.
-
Pour toutes les sources de données supportées, la colonne Index unique est automatiquement sélectionnée. Sélectionnez les colonnes supplémentaires contenant des données que vous souhaitez utiliser pour délimiter les plages, puis cliquez sur OK.
Note Informations-
Il est recommandé d'utiliser des colonnes qui n'autorisent pas les valeurs NULL et qui ne sont pas mises à jour lors des opérations normales de la base de données source (par exemple, une colonne de clé primaire ou une colonne de date avec une date fixe). L'utilisation d'une colonne mise à jour lors d'un chargement complet peut entraîner des doublons dans la base de données cible.
-
Il est recommandé d'utiliser des colonnes sources indexées afin d'optimiser les performances de récupération des données.
-
Il est possible de sélectionner jusqu'à dix colonnes.
-
Les enregistrements contenant des valeurs nulles ne seront pas répliqués.
-
Les types de données suivants ne peuvent pas être utilisés pour définir des segments par plages : DOUBLE, FLOAT et LOB (BLOB, CLOB, NCLOB).
-
-
Cliquez sur Ajouter une plage de données pour ajouter un segment de plage de données.
La boîte de dialogue Ajouter une plage de données s'ouvre avec les colonnes sélectionnées.
-
Pour chaque colonne, saisissez la plage de données supérieure du segment.
Note InformationsLes valeurs des colonnes DATE doivent être saisies au format supporté par la source. Par exemple, pour une source Oracle, le format correct est le suivant :
-
ALTER SESSION SET NLS_DATE_FORMAT:
'YYYY-MM-DD HH24:MI:SS' (la mention uniquement de YYYY-MM-DD est également valide)
-
ALTER SESSION SET NLS_TIMESTAMP_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9'
-
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'
-
-
Cliquez sur OK pour enregistrer vos paramètres et fermer la boîte de dialogue.
Chacune des colonnes sélectionnées apparaîtra avec sa plage spécifiée.
- Répétez les étapes 3 à 6, si nécessaire, pour ajouter des colonnes et des plages de données.
- Cliquez sur Valider pour valider le fait que les données que vous avez saisies correspondent au type de données de la colonne source et que tous les segments définis contiennent des valeurs.
Avec la méthode de segmentation par Plages de données, toutes les données de la table sont répliquées, même si des plages de données ne sont pas définies pour toutes les colonnes.
Pour modifier une plage de données :
- Cliquez sur le menu
à la fin de la ligne et sélectionnez Modifier.
- Modifiez la plage de données selon les besoins et cliquez sur OK pour enregistrer vos modifications.
Pour supprimer une plage de données :
- Cliquez sur le menu
à la fin de la ligne et sélectionnez Supprimer.
- À l'invite de confirmation de la suppression, cliquez sur Supprimer.
Exemple d'utilisation
Supposons que les segments suivants soient définis :
Column_1 | Column_2 | Column_3 |
---|---|---|
10 |
30 |
105 |
20 |
20 |
120 |
100 |
12 |
99 |
Dans ce cas, les clauses WHERE suivantes seront créées pour chaque segment de chargement :
- Segment 1 :((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
- Segment 2 :NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
- Segment 3 :NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
- Segment 4 :NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
Utilisation de la méthode par partitions
Vous pouvez définir des limites de segment en fonction de toutes les partitions de la table, de toutes les sous-partitions de la table (si la source de données supporte les sous-partitions) ou de partitions spécifiques.
- Cette méthode ne peut être utilisée que si le jeu de données est déjà partitionné.
- Si vous avez une tâche qui existait avant le lancement de cette fonctionnalité et si vous n'avez pas encore lancé la tâche ou si vous souhaitez charger en parallèle une ou plusieurs des tables à l'aide de cette méthode, vous devez commencer par actualiser les métadonnées, comme décrit à la section Enregistrement de données qui existent déjà sur la plateforme de données (le processus d'actualisation des métadonnées décrit dans cette rubrique est le même pour tous les types de tâche de données).
Utilisation de toutes les partitions
Pour définir les limites de segment en fonction de toutes les partitions ou sous-partitions de la table :
-
Dans l'onglet Jeux de données, cliquez sur le menu
à droite du jeu de données et sélectionnez Paramètres.
La boîte de dialogue Chargement parallèle s'ouvre.
-
Sélectionnez la méthode de segmentation par Partitions.
-
Sélectionnez l'une des options suivantes :
-
Utiliser toutes les partitions principales
-
Utiliser toutes les sous-partitions
Note InformationsCette option sera désactivée si la source de données ne supporte pas les sous-partitions.
-
- Cliquez sur OK.
Utilisation de partitions spécifiques
Pour définir des limites de segment en fonction de partitions spécifiques :
-
Dans l'onglet Jeux de données, cliquez sur le menu
à droite du jeu de données et sélectionnez Paramètres.
La boîte de dialogue Chargement parallèle s'ouvre.
-
Sélectionnez la méthode de segmentation par Partitions.
-
Sélectionnez Spécifier les partitions.
Note InformationsLorsque l'option Spécifier des partitions est sélectionnée, seules les partitions spécifiées sont répliquées.
-
Cliquez sur Ajouter une partition.
La boîte de dialogue Ajouter une partition s'ouvre.
-
Indiquez le nom d'une partition ou d'une sous-partition existante.
Si vous ajoutez une sous-partition, cochez la case Sous-partition .
- Cliquez sur OK pour enregistrer vos paramètres.
- Répétez les étapes 4 à 6, si nécessaire, pour ajouter des partitions ou des sous-partitions.
Pour modifier une partition :
- Cliquez sur le menu
à la fin de la ligne et sélectionnez Modifier.
- Modifiez les informations de partition selon les besoins et cliquez sur OK pour enregistrer vos modifications.
Pour supprimer une partition :
- Cliquez sur le menu
à la fin de la ligne et sélectionnez Supprimer.
- À l'invite de confirmation de la suppression, cliquez sur Supprimer.
Ajustement du nombre de segments pouvant être chargés en parallèle
Vous pouvez augmenter ou diminuer le nombre de segments qui seront chargés en parallèle. La valeur est héritée du champ Chargement complet > Adaptation des performances > Nombre maximal de tables à charger en parallèle des paramètres de la tâche de données. La valeur actuelle est affichée dans la chaîne Jusqu'à <n> segments peuvent être chargés en parallèle de la boîte de dialogue Chargement parallèle. L'augmentation du nombre peut améliorer les performances lorsqu'un jeu de données est divisé en un grand nombre de segments, mais elle sollicitera également davantage les ressources de base de données et la capacité réseau.