Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: DB-Server Events in PG?

  1. #1
    marc9022 ist offline Erfahrener Benutzer
    Registriert seit
    19.05.2008
    Beiträge
    162

    Standard DB-Server Events in PG?

    Moin,

    In Oracle gibt es Alerts
    In MySQL 5.1 gibts nun Events

    Und gibt es etwas equivalentes für Postgres?

    Funktionsweise:
    Ein Oracle Alert prüft ob eine bestimmte Bedingung in einer Tabelle erreicht ist, als Konsequenz erhält man so etwas wie eine Exception auf die das Client
    Programm reagieren muss. Besonders sinnvoll z.B wenn man dauerhaftes
    Pollen durch periodische SELECT's vermeiden möchte, nur um heraus zu finden
    das sich ein Wert verändert hat.

    Wenn es das nicht gibt, kann ich dann mit pg/plSQL dann eine eigene Exception Art definieren die z.B mittels Rule oder Trigger bei erreichen eines
    bestimmten Zustands in einer Tabelle eine Exception an den Client schickt?

    Dann wüsste der Client das definitiv zu verarbeitende Daten vorliegen und
    diese nun bearbeitet werden müssen. Der Client an dieser Stelle ist ein
    C/C++ System Deamon der permanent mit der DB via Unix Socket connectiert
    ist.

    Falls das alles nicht möglich ist, wie schauts im Falle einer UDF aus, bietet
    das mehr Spielraum?

    Gruß Marc

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Nein, PostgreSQL bietet (leider) nichts vergleichbares.
    Trigger gibt es nur für INSERT, UPDATE und DELETE.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Nein, PostgreSQL bietet (leider) nichts vergleichbares.
    Trigger gibt es nur für INSERT, UPDATE und DELETE.
    Ähm. LISTEN / NOTIFY. Damit kann der Server auch einen (lauschenden) Client informieren.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Die Events werden aber nicht von der Datenbank selbst ausgelöst sondern von anderen Clients.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  5. #5
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Die Events werden aber nicht von der Datenbank selbst ausgelöst sondern von anderen Clients.
    Ich zitiere mal aus der originalen Frage:

    Funktionsweise:
    Ein Oracle Alert prüft ob eine bestimmte Bedingung in einer Tabelle erreicht ist, als Konsequenz erhält man so etwas wie eine Exception auf die das Client
    Programm reagieren muss. Besonders sinnvoll z.B wenn man dauerhaftes
    Pollen durch periodische SELECT's vermeiden möchte, nur um heraus zu finden
    das sich ein Wert verändert hat.
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Ja, und? Dafür muss in PostgreSQL ein Trigger das Event auslösen. Und Events (also Trigger) auf Systemereignisse gibt es gar nicht.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  7. #7
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Ja, und? Dafür muss in PostgreSQL ein Trigger das Event auslösen. Und Events (also Trigger) auf Systemereignisse gibt es gar nicht.
    Ich hab in der Frage nichts von der Notwendigkeit von Triggern auf Systemtabellen oder so gelesen, sondern nur, daß ein Client benachrichtigt werden soll, wenn sich z.B. der Inhalt einer Tabelle geändert hat. Die Doku meint dazu:

    Code:
    When NOTIFY is used to signal the occurrence of changes to a particular table, a useful programming technique is to put the NOTIFY in a rule that is triggered by table updates. In this way, notification happens automatically when the table is changed, ...
    und das klingt mir zumindest doch nach dem, was der Fragesteller sucht.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  8. #8
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Wenn du nur Änderungen an Tabellen verfolgen willst, dann ist LISTEN/NOTIFY der gängige Weg, ja.

    Ich hatte das als "Systemevents" interpretiert und dafür gibt es (leider) nichts.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  9. #9
    marc9022 ist offline Erfahrener Benutzer
    Registriert seit
    19.05.2008
    Beiträge
    162

    Lächeln

    Ja, Listen/Notify ist genau das was ich gesucht habe.
    Jetzt kann ich endlich ohne dauerndes Pollen wissen was zu verarbeitende
    Daten in den Tabellen sind und mein Programm weiß wann es aktiv
    werden soll. Jetzt ist natürlich nur noch die Frage wie das Clientprogramm
    die Nachricht erhält, z.B als Exception. Wäre ja doof wenn ich statt der
    Polls auf die Tabelle via Select nun dauernd Polls auf eine virtuelle Eventtablle
    fahren muss. Ein Event das als Exception reinkommt wäre mir da wesentlich
    lieber.

  10. #10
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Das wird als Signal auf die aktive Datenbankverbindung gesandt. Allerdings ist es von Anwendung zu Anwendung und von Programmiersprache zu Sprache unterschiedlich, wie das ausgewertet wird.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Problem PostgreSQL 9.1 + synchrone Replikation Master / Server unter Windows Server 2008 R2
    Von grigio im Forum Installation von PostgreSQL
    Antworten: 1
    Letzter Beitrag: 30.10.2011, 20:44
  2. [News]: DB Solo 4.0 Adds Server Comparison and Server Scripting Tools
    Von Xandrian im Forum Neuigkeiten & Ankündigungen
    Antworten: 0
    Letzter Beitrag: 31.01.2011, 13:10
  3. Antworten: 11
    Letzter Beitrag: 19.08.2009, 20:56
  4. DB-Server Events in PG?
    Von marc9022 im Forum Programmierung
    Antworten: 1
    Letzter Beitrag: 06.06.2009, 09:39
  5. [News]: Database Events Alerter now has PostgreSQL Support
    Von Xandrian im Forum Neuigkeiten & Ankündigungen
    Antworten: 0
    Letzter Beitrag: 26.09.2007, 12:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum