IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Intégration temps réel


Sujet :

Développement de jobs

  1. #1
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut Intégration temps réel
    Bonjour,

    J'ai aujourd'hui des traitements d'intégration qui traitent des fichiers pour intégrer ces données dans une base. Ces fichiers sont générés à partir d'un flux de données venant de l'appli source.
    Le besoin change, et les utilisateurs me disent qu'il veulent maintenant du quasi temps réel sur l'intégration des données.

    Je réfléchis donc à modifier ma stratégie de chargement, qui ne serait plus un déclenchement toutes les 10 secondes pour traiter les lignes arrivées dans ce laps de temps, mais intégrer les lignes au fur et à mesure qu'elles arrivent.

    Est-ce qu'on a cette possibilité avec Talend ?
    Idéalement, mon job tournerait 24h/24, et intégrerait les lignes au fur et à mesure qu'elles arrivent. (du coup je ne sais pas trop comment elles arrivent (Fichier ? Buffer ?))

    Merci,
    Nicolas

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Oui, c'est possible.

    Je te conseille de regarder le composant tWaitForSqlData, qui me paraît parfaitement adapté à ton besoin.

    Ton job n'est plus lancé toutes les N secondes, mais tourne en permanence, en "surveillant" les arrivées de données et en effectuant les traitements dès leur arrivée (la base est vérifiée jusqu'à chaque seconde).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    salut
    je veux faire une intégration en temps réel en utilisant le composant tWaitForSqlData .
    l'objectif est de remplir la 2eme table a chaque enregistrement dans la première table mais ça ne fonctionne pas
    si qq'un peut me renseigner comment utiliser le composant tWaitForSqlData ça serait géniale.
    j'ai fais le job suivant

    merci
    Images attachées Images attachées  

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Hello,

    Si tu as TIS, utilise le composant CDC (Change Data Capture) dont c'est le rôle.

    Sinon tu doit faire cela manuellement en mémorisant le nombre de ligne et en adaptant ta requete SQl en fonction avec une condition WHERE rownum > last extracted row. (c'est pas le plus rapide, mais ca marche pour capturer uniquement les insert)

    Sinon il faut que tu développes une logique avec des triggers ou que tu te connecte aux logs de la base (log-miner) avec une solution comme Attunity (payant)

    Comme d'hab il n'y a pas de solution gratuite pour détecter les changements de façon industrielle.

    boubsy

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    bonjour a tout le monde
    merci boubsy pour la suggestion mais je ne possède pas le TIS et pour le développement des fonctionnalités qui détecte les insertions ça reste ma dernière option si je ne parviens pas a faire le job avec talend .

    Mais d'après le Guide référentiel de Talend le composant "tWaitForSqlData"
    a pour fonction :
    "Le composant tWaitForSqlData effectue une boucle sur un connexion donnée à la recherche d’un ajout ou d’une suppression de lignes, puis déclenche un sous-Job lorsque la condition est rencontrée."
    et pour objectif :
    " Ce composant permet de déclencher un sous-Job en fonction de la
    présence de données sql."
    alors je veux savoir si j'ai bien compris le composant et si oui comment l'utiliser ?
    merci

  6. #6
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par boubsy Voir le message
    Sinon tu doit faire cela manuellement en mémorisant le nombre de ligne et en adaptant ta requete SQl en fonction avec une condition WHERE rownum > last extracted row. (c'est pas le plus rapide, mais ca marche pour capturer uniquement les insert)
    C'est un peu dangereux ça non ?
    S'il y a une réorganisation de la table, ou une modification du plan d'accès de la requête, les lignes récupérées n'arriveront pas dans le même ordre.

    Une solution simple est d'avoir un timestamp sur chaque ligne alimenté lors des mises à jour sur les données sources qui permet de détecter les lignes qui doivent être récupérées.

    Nicolas

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    salut Nicolas
    mais c'est quoi un timestamp?
    c'est un composant de talend O.S ?
    moi j'utilise la version 3.1.3

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Good point :-)

    Il faudrait effectivement un timestamp de type date_modified.
    Qui serait mis à jour par trigger à l'insert/update
    La contrainte, c'est qu'il faut modifier la structure de la source si cette colonne n'existe pas.

    Boubsy

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    désolé mais je suis perdu
    c'est quoi un timestamp ? times temporaire)?

  10. #10
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par midodido123 Voir le message
    c'est quoi un timestamp ? times temporaire)?
    Non, un "timestamp", c'est la représentation d'une date, tout simplement.

    En informatique, le timestamp le plus standard est le nombre de millisecondes écoulées à partir du "1er janvier 1970 à minuit GMT+0", stocké dans un champ de type "long" (entier sur 64 bit).

    Un timestamp actuel est par exemple 1248252524304 (ce timestamp correspondant à la date d'aujourd'hui vers 10h50).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Ah! ok
    merci CyberChouan pour cette information
    maintenant si tu peux m'expliquer le rôle de "tWaitForSqlData"
    merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2015, 14h42
  2. Réponses: 0
    Dernier message: 19/05/2010, 09h25
  3. Intégration temps réel de données avec TALEND
    Par sat478 dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 04/05/2010, 09h40
  4. cubes temps réel en ROLAP
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/07/2003, 16h36
  5. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo