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

PostgreSQL Discussion :

programme java qui ecoute la bdd postgre


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut programme java qui ecoute la bdd postgre
    Bonjour
    je suis sur postgre 8.1.8

    J'ai besoin de faire un programme Java qui ecoute les modifications qui surviennent sur ma base
    tout ça peut se faire mais c'est tres long d'une part parce aue je dois creer une JTable qui se rafraichit periodiquement et qui affiche le contenu de ma bdd
    ensuite j'ai un listener sur cette JTable

    j'ai pas trouvé mieux jusqu'a present
    parce que les LISTEN / NOTIFY ne peuvent pas prendre d'arguments donc c'est pour ça que je passe par la JTable

    sinon en langage C,
    http://www.postgresql.org/docs/8.1/i...IBPQ-EXAMPLE-2
    il y a beaucoup plus de possibilités,
    mais comme je dois garder mon programme Java pour le reste du programme
    est ce que vous savez comment creer des listeners entre un programme C et java, surement cette question la n'a pas sa place ici

    La derniere solution qui est sans doute la meilleure c'est de faire un trigger en C pour me notifier des evenements mais je m'y connais pas trop en bdd

    merci bcp de l'aide

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par ____22 Voir le message
    qui ecoute les modifications qui surviennent sur ma base
    La seule solution c'est de faire un trigger sur chaque événement DML (insert, update, delete) de chaque table de ta base, mais bonjour la lourdeur et la complexité ...
    Ou alors au pire tracer toutes les requêtes et parser en permanence le fichier de trace mais ça risque de plomber les performances de tout tracer ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    ma base contient des données et tres important leurs dates d'insertion

    et mon programme Java doit etre averti si il y a un INSERT

    en plus de ça, il y a une fonction du programme Java qui doit simuler ce qu'il s'est passé entre t1 et t2, pour cela, il faudrait que je fasse un TRIGGER en C qui reagissent à SELECT ... WHERE time>t1 and time<t2
    et qui renvoit toutes les secondes les lignes de ce SELECT

    Est ce que c'est possible à faire

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Trigger sur SELECT ce n'est pas possible en Postgresql, tu peux juste faire sur les événements INSERT,UPDATE,DELETE
    Après à toi de vori si tu veux développer ça en C ou autre, mais ça n'est plus du ressort de la base
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 245
    Par défaut
    La seule solution c'est de faire un trigger sur chaque événement DML
    OUI et NON ... Pour rectifier l'unicité mais cela reste une fausse solution
    Vous pouvez faire des sous tables heritières (INHERITS) avec un champ chronologique en plus, et les affecter en saisie primaire
    Vous determinez un espace temporel pour les interpreter (là vous pouvez faire un RULE pour automatiser la tâche), ensuite vous les supprimer, et vous les recreer a votre guise.
    Pour les fonctions UPDATE ou similaires il est imperatif de faire le trigger ou le rule car la table heritière créée n'a pas les données natives de la table mère.
    Aussi avec cette manip vous n'avez pas les utilisateurs auteurs des requètes...
    Un trace sans les identifiants utilisateurs ça ne vaut pas un clou....
    Regardez plutôt vers les fichiers de trace (Apache si vous etes en intranet) ou ceux de PG
    http://kryskool.org/doc/pg-8.1.2/run...-LOGGING-WHERE
    cela me semble plus serieux...
    Cordialement.

Discussions similaires

  1. Programme Java qui se lance au démarrage ?
    Par Dominique49 dans le forum Général Java
    Réponses: 9
    Dernier message: 24/09/2011, 15h48
  2. programme java qui convertit un texte en mode PDU
    Par angel04 dans le forum Général Java
    Réponses: 2
    Dernier message: 22/04/2011, 11h19
  3. Réponses: 1
    Dernier message: 18/06/2009, 22h49
  4. Réponses: 8
    Dernier message: 17/12/2008, 11h10
  5. Réponses: 13
    Dernier message: 27/02/2008, 16h01

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