Asynchrone Datenbankzugriffe im Hintergrund mit PostgreSQL und DBD::Pg

| 3 Kommentare | Keine TrackBacks

Mit PostgreSQL und DBI sowie DBD::Pg ist es möglich, SQL-Queries im Hintergrund asynchron laufen zu lassen – und währenddessen in Perl weitere Berechnungen anzustellen, anstatt nur auf die Daten zu warten. Insbesondere bei Multi-Core-CPUs oder einer Trennung von Datenbankserver und Anwendung ist dies eine sehr praktische Sache.

Und einfach ist es obendrein!

Bei dem jeweiligen Aufruf von $dbh->do, $dbh->prepare oder $dbh->prepare_cached muss nur das Attribut PG_ASYNC hinzugefügt werden. Besonders praktisch ist das bei INSERT und UPDATE Queries, wenn also keine Rückgabewerte ausgewertet werden müssen, da kann man im neuen Query einfach noch auf den Rest des alten warten:

use DBD::Pg qw(:async);    # Async-Konstanten einbinden

# ... und später Query vorbereiten:

my $sth = $self->dbh->prepare( "INSERT INTO table ...", 
          { pg_async => PG_ASYNC + PG_OLDQUERY_WAIT } );

# ... und dann zum Beispiel in einer Schleife aufrufen
while ( my @parameter = calculate_next_insert() )
    {
    $sth->execute( @parameter );
    }

# ...

Wenn man also zwischen mehreren INSERT-Statements noch Eingabedaten berechnen muss, kann dies Zeit sparen. Vor weiteren Queries oder dem Commit sollte man dann noch mit $dbh->pg_result() auf das Ergebnis des letzten asynchronen Queries warten.

Mehr Beispiele und die Darstellung aller Features gibt es in der DBD::Pg Dokumentation.

 

Keine TrackBacks

TrackBack-URL: http://www.perl-blog.de/mt/mt-tb.cgi/664

3 Kommentare

Hallo!
gibt es dein Buch zu Perl6 schon? Wo kann man das kaufen oder gibt es das zum Free Download hier sogar auf der Seite? Konnte es hier nirgend wo finden...

Oder kannst du mir ein anderes Buch empfehlen?

Nein, leider ist das noch nicht fertig. :-(
Es gibt die englischsprachige Dokumentation und da auch ein "Open Source"-Buch, das allerdings auch in einem frühen Stadium ist.
URLs weiß ich gerade nicht auswendig, lässt sich aber leicht finden.

Oke, danke für den Tipp. Schade natürlich. Wird euer Buch auch als open source erscheinen?

Jetzt kommentieren

Aktuelle Kommentare

  • Niels Dettenbach: ...schade eigentlich, das es PyPerl nicht mehr wirklich gibt. Zwar weiter lesen
  • vTasker: Was ist das denn für ein MIST? Der Artikel ist weiter lesen
  • Alvar Freude: Nein, Susan, das ist falsch. XING wurde von der epublica weiter lesen
  • Susan: Hi, das ist eine komplett falsche Aussage. XING laeuft auf weiter lesen
  • Alvar Freude: Zu E.Doerr: Ich fange mal mit dem zweiten Punkt, dem weiter lesen
  • E.Doerr: Der Vergleich ist ganz interessant - aber wenn ich mich weiter lesen
  • Alvar: Die Universitäten sind sicherlich ein wichtiger Ansatzpunkt. Diese sind da weiter lesen
  • Ingmar Drewing: Das Problem - wenn man es denn so nennen will weiter lesen
  • Alvar Freude: Gut wäre auch, wenn sich mehr gestandene Entwickler für Perl weiter lesen
  • Martin Seibert: Ich wäre auch stark für den Nachwuchs! :-) weiter lesen

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Alvar Freude vom 12.08.10 23:23.

Call for Papers: 12. Deutscher Perl-Workshop 2010: „Modern Perl“ ist der vorherige Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.