4 Stimmen

Gibt es ein Perl POE-Modul zur Überwachung einer Datenbanktabelle auf Änderungen?

Gibt es ein Rad /POCO /Option, um dies in Perl mit dem POE-Modul zu tun: Ich möchte eine DB-Tabelle auf geänderte Datensätze (Löschen/Einfügen/Aktualisieren) überwachen und entsprechend auf diese Änderungen reagieren.

Wenn ja, könnte man einen Code oder einen Link angeben, der dies zeigt?

7voto

hobbs Punkte 204816

Nicht, dass ich wüsste, aber wenn man wirklich fleißig wäre, könnte man eine schreiben. Ich kann mir zwei Möglichkeiten vorstellen.

Das Beste zuerst: Zugang zu einem Transaktionsprotokoll / Replikationsfeed, z. B. dem MySQL-Binlog, erhalten. Schreiben Sie eine POE::Filter für sein Format, dann verwenden Sie POE::Rad::FollowTail um einen Strom von Ereignissen zu erhalten, eines für jede Anweisung, die die DB betrifft. Dann können Sie die Daten filtern, um das zu finden, woran Sie interessiert sind.

Nicht so gute Idee: Verwendung von EasyDBI um regelmäßige Selects gegen die Tabelle durchzuführen und zu sehen, was sich geändert hat. Wenn Ihre Daten klein sind, könnte es funktionieren (aber es ist immer noch anfällig für Zeitprobleme); wenn Ihre Daten groß sind, wird dies ein kläglicher Fehlschlag sein.

5voto

MkV Punkte 3018

Wenn Sie PostgreSQL verwenden, könnten Sie einen Trigger für die Änderungen in Ihrer Tabelle erstellen, der NOTIFY aufruft, und in Ihrer Client-Anwendung eine Verbindung öffnen und ein LISTEN für die gleiche(n) Benachrichtigung(en) ausführen. Sie können dann POE auf Dateiereignisse auf dem DBD::Pg pg_socket-Dateideskriptor lauschen lassen.

Alternativ könnten Sie einen SQL-Trigger erstellen, der ein anderes Datei- oder Netzwerkereignis auslöst (Schreiben in eine Datei, eine benannte Pipe oder einen Socket), und POE darauf hören lassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X