Agent d'extraction de données

Un agent à déclenchement temporel est configuré pour le site IBM Sterling® Order Management Système. Cet agent s'exécute à un intervalle configuré pour extraire les données. Vous pouvez configurer cet intervalle, ou cette fréquence, pour que l'agent s'assure que les données sont extraites lorsque vous avez besoin d'obtenir les données.
Vous pouvez également configurer l'agent pour qu'il s'exécute avec plusieurs unités d'exécution et machines virtuelles Java.
  • L'agent peut être configuré pour être déclenché toutes les n minutes. Par défaut, l'agent est déclenché toutes les 10 minutes.
  • L'agent peut également être configuré pour s'exécuter avec plusieurs unités d'exécution parallèles et plusieurs machines virtuelles Java. Par défaut, l'agent s'exécute avec 20 unités d'exécution.

Vous devez exécuter l'extraction de données à l'aide d'un seul critère d'agent supplémentaire de données sur un serveur d'agent dédié à un moment donné. Vous ne devez pas exécuter l'extraction de données avec plusieurs critères d'agent en même temps.

Pour plus d'informations sur la configuration de l'agent d'extraction de données pour qu'il fonctionne dans vos environnements, voir Configuration de l'extraction de données.

Processus d'extraction de données

Lorsque l'agent d'extraction de données est déclenché, les étapes suivantes se produisent:
  1. L'agent d'extraction de données provoque l'exécution de l'outil d'extraction et la lecture des configurations de table d'extraction à partir de la base de données de production. Le statut de chaque configuration de table valide est vérifié pour déterminer les tables qui doivent être extraites. Avant de commencer le processus d'extraction de données, si la base de données de sauvegarde est arrêtée ou configurée de manière incorrecte, l'outil d'extraction affiche un message d'avertissement.
    Remarques :
    • Lorsque vous exécutez l'outil d'extraction pour la première fois et si le message d'avertissement s'affiche, vérifiez la configuration de votre base de données de sauvegarde et exécutez à nouveau l'outil d'extraction. Sinon, attendez que l'outil d'extraction des données établisse une connexion avec la base de données de sauvegarde.
    • L'extraction des données est retardée lorsque la base de données de sauvegarde est en mode maintenance ou relecture.
    Lors de la première exécution de l'agent, la requête inclut tous les enregistrements modifiés depuis les n derniers jours, où n est spécifié par l'attribut FirstRunExtractInDays qui est spécifié. Chaque fois qu'une requête est exécutée après, l'agent d'extraction considère l'heure de début comme l'heure de fin à partir de laquelle l'outil d'extraction a été exécuté pour la dernière fois pour la requête. L'heure de fin est calculée comme l'heure en cours-1 heure. L'intervalle d'une heure garantit que toutes les données extraites sont copiées dans la base de données de sauvegarde. L'intervalle d'une heure garantit également que toutes les données sont chargées dans la base de données de sauvegarde et que cet outil ne charge pas les segments de données récents.
    Remarque: par défaut, l'agent utilise l'intervalle de temps d'une heure, sauf s'il est remplacé par une valeur > 1 dans la propriété yfs.yfs.coc.dataextract.fetch.maxhoursold . Vous pouvez également réduire la valeur de 1 heure à l'aide de la propriété yfs.yfs.coc.dataextract.fetch.maxminsold .
  2. L'outil d'extraction forme ensuite des requêtes en fonction de la configuration de la table.
  3. L'outil d'extraction se connecte à la base de données de production de sauvegarde et exécute la requête SQL sur la base de données pour extraire les données qui correspondent aux résultats de la requête. L'outil d'extraction de données extrait les données uniquement de la base de données de transaction de sauvegarde et non de la base de données de production principale. En extrayant les données de la base de données de sauvegarde, le processus d'extraction n'a pas d'impact sur les performances de la base de données principale.

    L'outil d'extraction extrait les données entre les heures de début et de fin du processus d'extraction. Ces heures sont basées sur l'horodatage de la dernière modification pour le dernier enregistrement extrait à partir de l'heure d'exécution précédente du processus d'extraction.

    Si l'extraction implique trop de données, les données peuvent être extraites dans des travaux distincts avec des intervalles de temps de début et de fin différents. Pour chaque configuration de table, l'outil d'extraction vérifie la quantité correspondante de données à extraire. L'agent crée ensuite le nombre nécessaire de travaux pour extraire les données.

  4. L'outil d'extraction écrit les résultats de la requête dans des fichiers de sortie au format CSV et inclut chaque fichier dans un fichier compressé (.zip). Chaque fichier de sortie porte le même nom que le fichier compressé correspondant pour le transfert des données. Les noms de fichier utilisent la convention de dénomination suivante:
    • taskID__tableName__extractQueryStart_extractQueryEnd_jobNumber_of_totalNumberOfJobs.csv
    taskID
    ID de la tâche.
    tableName
    Nom de la table de base de données.
    extractQueryStart
    Horodatage du démarrage du processus d'extraction.
    extractQueryEnd
    Horodatage de la fin du processus d'extraction.
    jobNumber_of_totalNumberOfJobs
    Numéro de série du travail d'extraction de données par rapport au nombre total de travaux d'extraction de données.
  5. L'outil d'extraction envoie les fichiers compressés d'un flux à votre serveur de transfert de fichiers. Le fichier n'est pas écrit sur le système de fichiers dans un environnement IBM Sterling Order Management System. Lorsque le dernier travail est traité, l'agent vérifie si le transfert de fichiers est terminé pour tous les fichiers de tous les travaux pour chaque configuration de table exécutée. Si les transferts sont terminés, l'agent crée et transfère un fichier .DONE de zéro octet pour chaque configuration de table.

Format du fichier de sortie

La sortie de chaque travail d'extraction de données est formatée dans un fichier au format CSV.
  • Valeurs séparées par des virgules de chaque colonne à extraire dans le même ordre que celui défini dans le service de gestion des configurations
  • Aucune ligne d'en-tête de noms de colonne
  • Chaque valeur est placée entre guillemets. Les guillemets réels d'une valeur sont précédés d'un autre guillemet.
  • Toute valeur incluant un caractère de nouvelle ligne, tel que -remove all, est supprimée.
Les fichiers CSV générés sont ensuite inclus dans un fichier compressé (.zip) pour le transfert vers le serveur de transfert de fichiers configuré.

Exemple de scénario d'exécution

Une extraction est configurée pour s'exécuter pour les conditions suivantes et les paramètres configurés (en supposant que la date actuelle est le 24/6/2016):
  • La fréquence de la tâche OrderExt et de la table de base de données YFS_ORDER_HEADER est de 24 heures. L'extraction des données a lieu tous les jours à environ 8h00 du matin.
  • 24 000 enregistrements existent entre 7:00 du jour précédent et 7:00 du jour en cours.
  • Le calcul de la mémoire interne limite le processus d'extraction à l'extraction de 7000 enregistrements à la fois.
Lorsque l'agent d'extraction de données est déclenché le ou juste après 8h00 du jour, l'outil d'extraction de données crée quatre travaux pour extraire les enregistrements. Chaque travail est traité de manière indépendante. Pour chaque travail, les données requises sont extraites et incluses dans un fichier de sortie généré. Les fichiers sont ensuite transférés vers le serveur de transfert de fichiers configuré.

Les fichiers de sortie générés ressemblent aux fichiers suivants. Chaque fichier inclut l'horodatage du processus d'extraction dans le nom de fichier.

Tableau affichant un exemple de sortie de l'outil d'extraction de données.
# Nom de fichier Lignes
1 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_1_of_4.zip 7000
2 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_2_of_4.zip 7000
3 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_3_of_4.zip 7000
4 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_4_of_4.zip 3000
5 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000.DONE  

Si un ou plusieurs fichiers d'une table particulière ne peuvent pas être extraits ou transférés vers le service de stockage de fichiers configuré alors que d'autres fichiers sont extraits ou transférés avec succès, l'extraction de la table entière est traitée à nouveau. Pour les fichiers qui ont été extraits et transférés avec succès, les fichiers sont extraits et transférés à nouveau.

Par exemple, dans cet exemple de scénario d'extraction, si les travaux 1 et 4 ont échoué et que les travaux 2, 3 et 5 ont abouti, l'ensemble du processus s'exécute à nouveau. Lorsque le processus s'exécute à nouveau, les fichiers des cinq travaux sont extraits et transférés, avec les fichiers des travaux 2, 3 et 5 transférés à nouveau.

Nettoyage des travaux d'extraction de données

Si vous utilisez l'extraction de données de manière intensive, la table des travaux d'extraction de données est remplie rapidement. Les données de cette table sont utiles pour le triage des échecs d'extraction qui se sont produits dans le passé. Par conséquent, la suppression des données du passé immédiat n'est pas recommandée. Toutefois, la masse des données, qui est ancienne, doit être nettoyée de la table principale pour améliorer les performances des requêtes sur cette table.

Pour nettoyer la table avant de démarrer les travaux d'extraction de données, vous pouvez spécifier le nombre de jours pendant lesquels les enregistrements doivent être supprimés de la table en définissant la propriété yfs.yfs.coc.dataextract.jobpurge.leadDays .

Cette propriété n'est pas définie par défaut, c'est-à-dire que les enregistrements de travail ne sont pas nettoyés par défaut. La valeur de cette propriété doit être supérieure à 120 jours.

Si cette propriété est définie sur une valeur inférieure ou égale à 120, une erreur est générée. Les enregistrements de jours jusqu'à 120 jours ne peuvent pas être supprimés. Si le processus de nettoyage échoue pour une raison quelconque, le processus d'extraction des données se poursuit avec sa tâche principale d'extraction des données.