# Information über Änderungen



## miketech (24. Jan 2013)

Hallo zusammen,

weiß jemand, ob es eine Möglichkeit gibt, sich über Änderungen in der Datenbank informieren zu lassen? Ich möchte bspw. eine bestimmte Java-Methode aufrufen, wenn ein neuer Datensatz hinzugefügt wurde oder ein bestimmter Datensatz geändert wurde.

Viele Grüße

Mike


----------



## SlaterB (24. Jan 2013)

ein großer Standard ist
Datenbanktrigger ? Wikipedia
aber ob man damit externe Programme informieren kann?

allgemein sollte die Datenbank eine Senke sein, 
falls mehrere Programme unabhängig zugreifen, dann ein Programm als Vorstufe schalten,
aller Zugriffe gehen über dieses Programm, dort kann gemerkt, informiert werden usw.

es ist bisschen viel verlangt, dies direkt in jede der zahlreichen DB einzubauen, die ja auch programmiersprachenunabhängig sind,
eine eigene Stufe davor würde für alle Datenbanken gleich funktionieren


----------



## VfL_Freak (24. Jan 2013)

Moin,



miketech hat gesagt.:


> weiß jemand, ob es eine Möglichkeit gibt, sich über Änderungen in der Datenbank informieren zu lassen? Ich möchte bspw. eine bestimmte Java-Methode aufrufen, wenn ein neuer Datensatz hinzugefügt wurde oder ein bestimmter Datensatz geändert wurde.


Meinst Du, dass die DB automatisch Deine Anwendung informieren soll?
Gibt es IMHO nicht ....

natürlich könntest Du zyklisch die DB abfragen, aber der entsprechende Vergleich würde wohl (je nach Größe der Tabelle) seeehr heftig !

Gruß
Klaus


----------



## SlaterB (24. Jan 2013)

ein Tick effektiver geht es beim zyklischen Zugriff schon, wenn alle Änderer mitspielen bzw. in der DB Trigger angelegt sind,
Änderungen protokollieren, nur einzelne Zustandsdaten prüfen


----------



## miketech (24. Jan 2013)

Hi,

DB Trigger sind mir natürlich ein Begriff, aber mir ist keine Möglichkeit bekannt, wie ich darauf in einer Java Anwendung reagieren kann. 

Dann gehen wir einen Schritt zurück und ich erkläre einmal, was ich vorhabe. Vielleicht habt ihr eine Idee, wie ich das eleganter lösen kann.

Ich habe eine Webanwendung (Java), in der ein Anwender Aufgaben für komplexe Berechnungen hinterlegen kann. Nun sollen diese Berechnungen ausgeführt werden. Bisher läuft es so, dass bei jedem Hinterlegen einer Aufgabe die zuständige Java-Methode gestartet wird. Da hier aber mehrere Berechnungen parallel ablaufen können, die wirklich viel Hauptspeicher benötigen, zerlegt es mir häufig den Webserver. 

Daher möchte ich das auslagern. D.h. meine Idee war: Die Webanwendung hinterlegt die Aufgabe zur Berechnung in der Datenbank und nun wird ein Daemon getriggert und beginnt mit der Auswertung. Somit entzerre ich auch etwas die ohnehin schon komplexe Webanwendung von der ebenso komplexen Berechnungsanwendung. 

D.h. was ich suche ist im Grunde eine Möglichkeit, aus einer Java-Anwendung eine andere Java-Anwendung darüber zu informieren, dass eine neue Aufgabe hinterlegt wurde, die nun berechnet werden soll.

Wie würdet ihr das lösen? Sollte ich die Anwendung über RMI triggern?

Viele Grüße

Mike


----------



## Gast2 (24. Jan 2013)

miketech hat gesagt.:


> Hi,
> 
> DB Trigger sind mir natürlich ein Begriff, aber mir ist keine Möglichkeit bekannt, wie ich darauf in einer Java Anwendung reagieren kann.



Was für eine RDBMS hast du? Bei Oracle z.B. kannst du aus einem Trigger heraus einen Webservice (z.b: deine Java App) aufrufen. Postgres kann das auch, bei Mysql oder SQL Server kenn ich mich nicht so aus.

UTL_HTTP


----------



## miketech (24. Jan 2013)

Hi,

danke, habe ich auch vorhin gesehen. Leider muss ich es möglichst unabhängig von einem bestimmten DBMS gestalten.

Viele Grüße

Mike


----------



## Gast2 (24. Jan 2013)

Dann definier lieber ein interface zwischen den beiden Programmen und lass die miteinander kommunizieren. Übergib dann z.B. eine Referenz auf die entsprechenden Einträge in der Datenbank. 

Applikation A -> Datenbank 
Applikation A -> Applikation B -> Es liegt was in der Datenbank
Applikation B <- Datenbank 
...
..
.


----------



## miketech (24. Jan 2013)

Hi kaffesf,

so hätte ich mir das dann auch vorgestellt. Gefällt mir ganz gut.

Viele Grüße

Mike


----------

