AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird - Client bei Änderung informieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird - Client bei Änderung informieren

Ein Thema von Nersgatt · begonnen am 23. Okt 2012 · letzter Beitrag vom 23. Okt 2012
Antwort Antwort
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 11:29
Datenbank: Firebird • Version: 2.5 • Zugriff über: dbx
Moin,

ich suche eine Lösung für folgendes Problem:
Ich habe Geräte, die eine Statusinformation periodisch in eine Datenbank schreiben.

Nun habe ich einen Client (der auf einem anderen PC läuft), der diese Informationen auf einem Statusbildschirm anzeigt. Dort rufe ich periodisch diese Information ab und stelle sie auf dem Bildschirm dar. Das hat für mich mehrere Probleme:
  1. Netzwerktraffic. Ich muss die Datebank ständig abfragen um zu ermitteln, ob sich die Information geändert hat und diese ggf. darstellen
  2. aus 1. resultiert natürlich Arbeit für die Datenbank, selbst wenn sich die Information nicht geändert hat
  3. Die Informationen werden verzögert dargestellt. Polle ich die Datenbank z.B. alle 30 Sekunden, dann sind die dargestellten Informationen ggf. 30 Sekunden alt. Polle ich alle 2 Sekunden, bekomm ich mit Punkt 1 und 2 Probleme, weil der Traffic ansteigt.
Ich würde mir wünschen, dass ich mich als Client an der Datenbank anmelden kann und irgendwie einen Callback bekomme, wenn sich die Information ändert (vielleicht ausgelöst durch einen Datenbanktrigger). Ich stelle mir das wie einen Observer für die Datenbank vor.
Es kann auch sein, dass der Statusbildschirm an mehr als einem PC gleichzeitig gestartet wird. Es müssten also x Observer möglich sein.

Gibt es sowas in der Art? Oder wie könnte man das Problem sonst lösen?
Jens
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 11:34
hi,

das nennt sich Event. Hier mal ein kleiner Einstig: http://www.firebirdsql.org/file/docu...ird_events.pdf
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 11:35
Firebird Events
Markus Kinzler
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 12:07

Gibt es sowas in der Art? Oder wie könnte man das Problem sonst lösen?
Je nach Größe des Gesamtsystems und weiteren Anforderungen ist eine Alternative der Einsatz eines Message Brokers. Er wird auf dem Server installiert und erfährt von den Clients, wenn diese eine Änderung in der Datenbank vornehmen, und benachrichtigt alle interessierten Clients unmittelbar von dieser Änderung (Push statt Pull).

Der Datenbankserver kann damit von Benachrichtigungslogik und Tabellen etc. frei bleiben, und man kann auch fortgeschrittene Anforderungen erfüllen - zum Beispiel solche Clients benachrichtigen, die sich erst nach Eintreten eines Ereignisses verbinden, oder serverseitige Filterung für Clients, die nur bestimmte Nachrichtentypen sehen wollen/sollen.

Es gibt für Delphi / Free Pascal einige Produkte, auch als Open Source, die auch für produktiven Einsatz stabil genug sind.

Viele Grüße
Michael Justin
habarisoft.com

Geändert von mjustin (23. Okt 2012 um 12:10 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 12:21
Hallo Michael,

Es gibt für Delphi / Free Pascal einige Produkte, auch als Open Source, die auch für produktiven Einsatz stabil genug sind.
nur aus Interesse: kannst Du da vielleicht noch ein, zwei Produkte nennen?

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 12:34
Prinzipielle klingen die Firebirdevents nach genau dem, was ich brauche. Nur scheinbar wird das nicht von DBExpress unterstützt. Und daran bin ich leider gebunden.
Mal sehen, ob ich dafür eine Lösung finde.
Jens
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Firebird - Client bei Änderung informieren

  Alt 23. Okt 2012, 15:18
Hallo Michael,

Es gibt für Delphi / Free Pascal einige Produkte, auch als Open Source, die auch für produktiven Einsatz stabil genug sind.
nur aus Interesse: kannst Du da vielleicht noch ein, zwei Produkte nennen?
Gerne! - Diese Open Source Message Broker können über diverse Protokolle aus Delphi und Free Pascal heraus angesprochen werden:

* Apache ActiveMQ / Apache Apollo
* HornetQ
* Open MQ
* RabbitMQ


Hinter den Open Source Projekten stehen bekannte Unternehmen wie Oracle, Red Hat, und VMWare, von denen auch kommerzieller Support angeboten wird. Die Projekte haben aber auch sehr aktive Communities in der Open Source Version.

Eines der Protokolle ist STOMP, auf meiner Webseite befinden sich Bibliotheken, die ich seit 2008 entwickle, und die dieses Protokoll verwenden.

Das Thema gab es auch schon mal früher hier:

Client/Server Projekt: Daten filtern und verteilen???
Michael Justin
habarisoft.com

Geändert von mjustin (23. Okt 2012 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz