Ich wollte nur das Konzept des Datenbankverbindungspools kennen und wissen, wie es erreicht wird.
Ich wollte nur das Konzept des Datenbankverbindungspools kennen und wissen, wie es erreicht wird.
Datenbank - Verbindung - Pooling ist eine Methode verwendet , um Datenbankverbindungen offen zu halten , damit sie von anderen wiederverwendet werden.
Das Öffnen einer Datenbankverbindung ist normalerweise ein teurer Vorgang, insbesondere wenn die Datenbank remote ist. Sie müssen Netzwerksitzungen öffnen, sich authentifizieren, die Autorisierung überprüfen lassen usw. Durch das Pooling bleiben die Verbindungen aktiv, sodass bei einer späteren Anforderung einer Verbindung eine der aktiven verwendet wird, anstatt eine andere erstellen zu müssen.
Beziehen Sie sich für die nächsten Absätze auf das folgende Diagramm:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
In seiner einfachsten Form ist es nur ein ähnlicher API-Aufruf (1) wie ein API-Aufruf mit offener Verbindung, der dem "echten" ähnlich ist. Dies überprüft zuerst den Pool auf eine geeignete Verbindung (2) und wenn eine verfügbar ist, wird diese dem Client übergeben. Andernfalls wird eine neue erstellt (3).
Eine „geeignete Verbindung“ ist nur eine , die bereits hat Zugriff auf die Datenbank die richtigen Informationen (wie Datenbankinstanz, Anmeldeinformationen und möglicherweise andere Dinge) verwenden.
In ähnlicher Weise gibt es einen API-Aufruf zum Schließen (4), der die eigentliche enge Verbindung nicht aufruft, sondern die Verbindung zur späteren Verwendung in den Pool (5) stellt. Irgendwann können Verbindungen im Pool tatsächlich geschlossen werden (6).
Das ist eine ziemlich vereinfachende Erklärung. Echte Implementierungen können möglicherweise Verbindungen zu mehreren Servern und mehreren Benutzerkonten verarbeiten, sie können einige Verbindungsgrundlagen vorab zuweisen, sodass einige sofort bereit sind, und sie können alte Verbindungen tatsächlich schließen, wenn sich das Nutzungsmuster beruhigt.
Bilder sagen mehr als tausend Worte (paxdiablo gab eine großartige Beschreibung):
Quelle
quelle
Wie der Name schon sagt. Wenn ein paar Leute schwimmen wollen, können sie im selben Schwimmbad schwimmen. Ist es wirklich sinnvoll, jedes Mal, wenn jemand etwas hinzufügt, ein neues Schwimmbad zu bauen? Zeit und Kosten haben Priorität.
quelle
Beim Pooling von Datenbankverbindungen werden Verbindungen zu Datenbanken einfach zwischengespeichert, damit sie beim nächsten Mal wiederverwendet werden können, um die Kosten für den Aufbau einer neuen Verbindung jedes Mal zu senken, wenn eine Verbindung zu einer Datenbank hergestellt werden soll.
quelle
Sie können die Apache Commons-Bibliothek für die transparente Implementierung des Verbindungspoolings verwenden: http://commons.apache.org/dbcp/
DBCP ist auch ein unterstützter Ruhezustandspool: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
quelle
Connection Pooling-Konzept nicht nur in Java, sondern in vielen Programmiersprachen. Das Erstellen eines neuen Verbindungsobjekts ist kostspielig, sodass im Lebenszyklus eine feste Anzahl von Verbindungen hergestellt und verwaltet wird. Erstellen eines virtuellen Pools Java Just ( http://javajust.com/javaques.html ) siehe Frage 14 auf dieser Seite
quelle