![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: libmysql.dll
Wie mehrere Anwendungen bei Änderung einer Tabelle benachrichtigen
Hallo,
ich habe eine grundsätzliche Frage und hätte eure Expertise gewußt. Ich habe eine alte Kassasoftware, die nativ über libmysql.dll direkt auf eine MySQL Datenbank zugreift. Darin gibt es eine Tabelle für Warenkorb, wo die aktuellen Artikeln im Geschäft eingescannt werden. Jetzt möchte ich weitere Instanzen von der Kassaanwendung laufen lassen, die dann mitkriegen, wenn sich der Inhalt der Tabelle ändert, sprich weitere Produkte abgelegt werden, oder gelöscht werden. Eigentlich ist das Problem ja nicht nur auf MySQL bezogen, sondern generell, gibt es von der Datenbankseite Möglichkeiten die Anwendungen zu beachrichtigen, dass sich an der Tabelle was geändert hat, oder muß die Anwendung in periodischen Zeitintervallen in der Datenbank nachschauen, ob sich die Tabelle geändert hat? Wie löst man sowas? :gruebel: Lg, jus |
AW: Wie mehrere Anwendungen bei Änderung einer Tabelle benachrichtigen
MySQL unsterstützt anscheinend Notifications nicht, aber es gibt (Open Source) Implementierungen, die etwas ähnliches bereitstellen. Zum Beispiel diese:
Zitat:
![]() ![]() In dieser UDF wird ein HTTP Server benötigt, der alle Clients benachrichtigt. Einige Gedanken zu diesem Thema habe ich im Artikel ![]() Darin werden auch Einschränkungen (und Workarounds) beschrieben die sich aus periodischen Abfragen des Servers auf neue Einträge ergeben können. |
AW: Wie mehrere Anwendungen bei Änderung einer Tabelle benachrichtigen
Wenn man allerdings eine Lösung wie diese mit der UDF, die einen Server benötigt, der die Clients benachrichtigt, da kann man es auch gleich selbst in den Client einbauen. Gibt es eine Änderung, die andere benachrichtigen sollte, einfach diese vom Client anschubsen und die anderen können bestimmte Nachrichten abbonieren. Der Server Prozess entscheidet dann, welcher Client dan die Nachricht erhält.
EDIT: Da fällt mir ein, dass auch die UDF an diesen Server zusätzlich senden kann und Nachrichten durch Trigger bereit stellen kann, die vllt für den Client schwer zu evaluieren sind. Stock Low im Inventar kommt da in den Kopf, wenn man eine Rechnung speichert. |
AW: Wie mehrere Anwendungen bei Änderung einer Tabelle benachrichtigen
Ich fände es generell ungünstig, wenn man die Vernetzung einer Anwendung auf der Basis von Datenbanktabellen löst. Die Datenhaltung hat mit der Anwendungslogik nicht viel zu tun, wenn man das sauber trennt. Manche packen bewusst sehr viel Logik in die Datenbank, was z.B. bei Warenwirtschaften auch sinnvoll ist, aber da geht es dann um Datenlogik, nicht um die Kommunikation zwischen verschiedenen Instanzen einer Anwendung.
Selbst wenn es technisch stabil hinzubekommen sein sollte, halte ich das für keine gute Idee. |
AW: Wie mehrere Anwendungen bei Änderung einer Tabelle benachrichtigen
Zitat:
@jaenicke: vielen Dank für den Hinweis, ich gebe zu, dass ich es noch nicht von dieser Seite her daran gedacht habe, aktuell ist es eher noch so eine Machbarkeitsstudie. :mrgreen: |
AW: Wie mehrere Anwendungen bei Änderung einer Tabelle benachrichtigen
Hallo,
wollte noch mal rückmelden, dass die MySQL UDF Sache nun läuft. Für die Leute die sowas ähnliches mal machen möchten, eine kurzes Feedback wie ichs gemacht habe: Mein Glück ist, dass der MySQL Server auf Windows läuft ist. Darum habe ich einfach mein altes Visusal Studio 2005 angeschmissen und in C eine DLL mit einer Methode gemacht. Folgender Link war sehr hilfreich: ![]() Die Methode in der DLL verschickt einfach ein UDP Broadcast über WINSOCKET an einem bestimmten Port im Netzwerk. Diese DLL ins MySQL Serververzeichnis (in meinem Fall ./BIN, bei neueren MySQL Versionen eventuell ein anderes Verzeichnis) kopiert und in SQL mit "CREATE FUNCTION..." die Methode von der DLL einbinden. Dann noch 3 Trigger für INSERT, UPDATE und DELETE in der DB gesetzt und fertig. Die Anwendungen bekommen dann immer was mit, wenn eine Änderung in der Tabelle gemacht wird. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz