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 Web en Java Discussion :

Détecter le changement de base de données


Sujet :

Développement Web en Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut Détecter le changement de base de données
    Bonjour,
    J'espère que quelqu'un peut m'aider à trouver une méthode pour détecter le changement de base de donnée.(je travaille avec MySQL)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Il faut être plus précis... Qu'est ce que tu entends par "détecter le changement de base de données" ?

    Est-ce que c'est le changement de la base de données en elle même (MySQL, PostgreSQL, Oracle) ?
    Est-ce que c'est un changement du schéma de la base de données ?
    Est-ce que c'est un changement de contenu de la base de données (INSERT, UPDATE, ou DELETE)
    Est-ce que c'est entre deux redéploiement, ou à chaud sans redémarage de l'application ?

    ...

    Romain.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    merci de me répondre,
    je veux que le méthode détecte à chaud sans redémarrage de l'application le changement de la contenu de la base des données par update ou insert.

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par gebtun Voir le message
    Bonjour,
    merci de me répondre,
    je veux que le méthode détecte à chaud sans redémarrage de l'application le changement de la contenu de la base des données par update ou insert.
    Bonjour, peut on connaître l'origine d'un tel besoin fonctionnel? ça nous aiderait mieux à t'apporter une ébauche de solution.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    j'explique,j’entraine de développer un système d'alarme et ma base des données est en relation avec un autre logiciel qui a la main de modifier le contenu de la base alors je dois détecter cette modification.
    merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Tu pourrais démarrer un thread qui tourne en "tache de fond" de ton programme et qui toutes les X secondes effectue un SELECT sur a base de données pour vérifier s'il n'y a pas lieu de déclencher une alarme.

    Romain.

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par gebtun Voir le message
    Bonjour,
    j'explique,j’entraine de développer un système d'alarme et ma base des données est en relation avec un autre logiciel qui a la main de modifier le contenu de la base alors je dois détecter cette modification.
    merci
    Ton problème n'est toujours pas clairement exposé. C'est quoi comme système? c'est un batch, une appli web? une appli Destop? comment est il censé tourner? pourquoi et comment notifier du changement? et quel type de changement doit être détectable.Difficile de t'aider si tu ne fais pas un petit effort d'eclaircissement du besoin.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Ton problème n'est toujours pas clairement exposé. C'est quoi comme système? c'est un batch, une appli web? une appli Destop? comment est il censé tourner? pourquoi et comment notifier du changement? et quel type de changement doit être détectable.Difficile de t'aider si tu ne fais pas un petit effort d'eclaircissement du besoin.
    C'est une application web (j2ee) qui doit détecter le changement au moment de l'insertion d'un nouvel ligne dans la table ou la modification du valeur d'un champ précis et envoyer l'alerte par email ou sms ,donc j'ai besoin d''une méthode qui check ma base pour savoir s'il eu de changement , je pense à une fonction ajax mais je sais pas comment le faire.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Ton problème n'est toujours pas clairement exposé. C'est quoi comme système? c'est un batch, une appli web? une appli Destop? comment est il censé tourner? pourquoi et comment notifier du changement? et quel type de changement doit être détectable.Difficile de t'aider si tu ne fais pas un petit effort d'eclaircissement du besoin.
    C'est une application web (j2ee) qui doit détecter le changement au moment de l'insertion d'un nouvel ligne dans la table ou la modification du valeur d'un champ précis et envoyer l'alerte par email ou sms ,donc j'ai besoin d''une méthode qui check ma base pour savoir s'il eu de changement , je pense à une fonction ajax mais je sais pas comment le faire.

  10. #10
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    OK, si c'est une appli web, et si le changement se fait par une autre application, pour ma part je propose 2 alternatives :
    -Soit faire évoluer l'autre application qui modifie pour qu'au moment d'effectuer l'opération elle notifie elle même par mail les ayants droits
    -Soit déléguer cette tâche à ton SGBD, notamment via des triggers, c'est le seul mécanisme côté SGBD capable de gérer de telles notifications à moindre coût.
    Je n'implémenterai pas cette tâche dans l'appli web (avec des Thread comme certains proposeraient), par principe de séparation de fonctionnalité,de soucis de performance, et en dernier ressort pour la simple raison que le jour que ton appli J2EE ne marche plus, eh bien les utilisateurs manqueront d'être notifiés. Mais c'est en effet une réelle problématique je l'accorde.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Merci pour votre aide,
    mais je n'ai pas le droit de modifier ni l'autre application,ni le SGBD donc je n'ai pas une autre solution que d’utiliser le thread et comme je comprend pour cela j'ai besoin de sauvegarder le temps de dernier changement ou le dernier valeur avez vous une idée pour m'aider s'il vous plait?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par rg77140 Voir le message
    Bonjour,

    Tu pourrais démarrer un thread qui tourne en "tache de fond" de ton programme et qui toutes les X secondes effectue un SELECT sur a base de données pour vérifier s'il n'y a pas lieu de déclencher une alarme.

    Romain.
    Désolé de vous déranger,mais pouvez vous m'expliquer comment je peux savoir s'il y a une changement ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Je trouve ça un peu restrictif, et peu évolutif, d'implémenter cette tache au niveau de la base de données. C'est déjà sous-entendre que toute les données qu'il a besoin pour écrire son mail/sms sont enregistrées dans la base de données.

    Que faire s'il a besoin de données récupérées d'un LDAP, de Webservices, de fichiers textes ?

    Ensuite je trouve que c'est surtout une question de goût, et de compétence. J'imagine que s'il poste ici, il est plutôt développeur Java, et dans ce sens, développer la solution coté applicatif me parait plus simple pour lui !

    Romain.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Pour créer des thread je t'invite à lire un tutoriel : http://alwin.developpez.com/tutorial/JavaThread/

    Pour effectuer des requêtes vers la base de données depuis Java : http://jguillard.developpez.com/JDBC/

    Pour envoyer des mails je te conseil la librairie commons e-mail : http://commons.apache.org/proper/commons-email/

    Pour les SMS aucune idée, je ne l'ai jamais fait.

    Je n'aurai pas le temps de tout te développer, éventuellement si tu bloques sur un point précis, poste ton problème et on pourra t'aider.

    En gros il faut que ton thread effectue des SELECT à intervalles réguliers sur la base de données, tu peux garder en mémoire le nombre de ligne dans une table, puis vérifier si entre deux SELECT le nombre de ligne a changé, s'il a changé tu envoie un mail.

    Romain.

  15. #15
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par gebtun Voir le message
    Merci pour votre aide,
    mais je n'ai pas le droit de modifier ni l'autre application,ni le SGBD donc je n'ai pas une autre solution que d’utiliser le thread et comme je comprend pour cela j'ai besoin de sauvegarder le temps de dernier changement ou le dernier valeur avez vous une idée pour m'aider s'il vous plait?
    Ok soit. Les tables de ta bd possèdent t'elles des colonnes permettant de connaitre quand est ce qu'une ligne a été créee (ou modifiée)? car dans tous nos systèmes d'informations nous traçons pour chaque ligne ces 2 informations.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    DevServlet évoque un point intéressant. Si jamais tu a une colonne "dateCreation" dans ta table par exemple, tu peux garder en mémoire la date à laquelle a été effectué ton dernier SELECT, et chercher tous les enregistrements qui ont eu lieu après celui-ci.

    Mais bon tout ça dépend de ton modèle de données, on ne peut pas le savoir pour toi si tu ne données pas plus de détails.

    Mais à mon avis ce n'est pas ça qui te pose problème. C'est plutôt de savoir comment effectuer des requêtes sur la base de données, et comment créer des thread ?

    ROmain.

  17. #17
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par rg77140 Voir le message
    Je trouve ça un peu restrictif, et peu évolutif, d'implémenter cette tache au niveau de la base de données. C'est déjà sous-entendre que toute les données qu'il a besoin pour écrire son mail/sms sont enregistrées dans la base de données.

    Que faire s'il a besoin de données récupérées d'un LDAP, de Webservices, de fichiers textes ?

    Ensuite je trouve que c'est surtout une question de goût, et de compétence. J'imagine que s'il poste ici, il est plutôt développeur Java, et dans ce sens, développer la solution coté applicatif me parait plus simple pour lui !

    Romain.
    Tes inquiétudes soulevées sur la solution sont hélas bien justifiées, en effet c'est l'inconvénient d'une solution axée sur un SGBD, traçabilité et maintenabilité, mais ceci à l'avantage d'un traitement centralisé et opérationnel indépendamment des applications connectées.En le faisant coté transactionnel, pour le besoin attendu, il faut supposer un seul instant que l'application soit HS. Vu que ce n'est pas elle qui est censée effectuer ces mises à jour, les utilisateurs en attente de ces modifications n'en sauront rien. Pour moi à la limite c'est un batch Java qui devrait le faire. J'ai du mal à comprendre pourquoi c'est à une application J2EE non responsable de la modification des données qui est responsable d'en constater les notifications.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    le problème c'était que je ne possède pas la colonne "dateCreation" dans ma bd et l'autre problème c'est le thread mais votre solution
    En gros il faut que ton thread effectue des SELECT à intervalles réguliers sur la base de données, tu peux garder en mémoire le nombre de ligne dans une table, puis vérifier si entre deux SELECT le nombre de ligne a changé, s'il a changé tu envoie un mail.
    m'aide à trouver la solution de mon 1er problème merci

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Pour moi à la limite c'est un batch Java qui devrait le faire. J'ai du mal à comprendre pourquoi c'est à une application J2EE non responsable de la modification des données qui est responsable d'en constater les notifications.
    Mon application J2ee fait des autres taches que les notification et a son propre bd mais j'ai besoin d'accéder à un autre base juste pour le surveillance.

  20. #20
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Il faut rester lucide et réaliste là , si :
    -S'Il faut exclure les triggers
    -S'il y'a absence de colonnes permettent d'identifier les créations (et les modifications de lignes)
    Comment par miracle vas tu détecter qu'une ligné a été modifiée dans un intervalle de temps?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

Discussions similaires

  1. [Débutant] Détecter des changements côté base de données
    Par barthelv dans le forum ADO.NET
    Réponses: 4
    Dernier message: 07/05/2015, 11h59
  2. Réponses: 6
    Dernier message: 27/04/2009, 10h34
  3. Changement adresse base de données
    Par loig41 dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/07/2007, 17h09
  4. Changement de base de données = vba incompatible
    Par schuitonzo dans le forum Access
    Réponses: 22
    Dernier message: 22/02/2007, 16h46
  5. changement de base de donnée
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 14h37

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