Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2008, 13h37   #1
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
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
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 14h01   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 14h08   #3
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
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
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 17h56   #4
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 18h44   #5
Inactif
 
Inscription : novembre 2004
Messages : 247
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 247
Points : 217
Points : 217
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.
bustaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web