Ich bin ein Java-Programmierer, der Haskell lernt.
Ich arbeite an einer kleinen Web-App, die Happstack verwendet und über HDBC mit einer Datenbank kommuniziert.
Ich habe Funktionen und exec geschrieben und verwende sie wie folgt:
%Vor% Sehr einfach, wie Sie sehen. Es gibt query , params und result .
Verbindungsaufbau und Commit / Rollback-Sachen sind in select und exec versteckt.
Das ist gut, ich will mich nicht in meinem "Logik" -Code darum kümmern.
Schlechte Punkte:
FRAGE 1: Wie wird ein Pool von Verbindungen mit einer definierten (minimalen, maximalen) Anzahl gleichzeitiger Verbindungen eingeführt, so dass die Verbindungen zwischen SELECT / EXEC-Aufrufen wiederverwendet werden?
FRAGE 2: Wie wird die Zeichenfolge "users.db" konfigurierbar? (Wie wird es in den Client-Code verschoben?)
Es sollte ein transparentes Feature sein: Benutzercode sollte keine explizite Verbindungsbehandlung / -freigabe erfordern.
FRAGE 2: Ich habe HDBC noch nie benutzt, aber ich würde wahrscheinlich so etwas schreiben.
%Vor% Öffnen Sie das Connection
irgendwo außerhalb der Funktion, und trennen Sie es nicht innerhalb der Funktion.
FRAGE 1: Hmm, ein Verbindungspool scheint nicht so schwer zu implementieren ...
%Vor% Sie sollten dieses Wort wahrscheinlich nicht nehmen, da ich es nicht einmal kompiliert habe (und fail
ist ziemlich unfreundlich), aber die Idee ist, etwas wie
und übergeben Sie connPool
nach Bedarf.
Das Paket Ressourcenpool bietet einen leistungsstarken Ressourcenpool, der für das Pooling von Datenbankverbindungen verwendet werden kann. Zum Beispiel:
%Vor%Erzeugt einen Datenbankverbindungspool mit 1 Unterpool und bis zu 5 Verbindungen. Jede Verbindung darf 10 Sekunden lang inaktiv sein, bevor sie zerstört wird.
Ich habe den obigen Code geändert, jetzt kann er zumindest kompilieren.
%Vor%Tags und Links haskell connection-pooling rdbms hdbc