Je voulais juste connaître le concept de mise en commun des connexions de base de données et comment il est réalisé.
Je voulais juste connaître le concept de mise en commun des connexions de base de données et comment il est réalisé.
Le regroupement de connexions à la base de données est une méthode utilisée pour garder les connexions de base de données ouvertes afin qu'elles puissent être réutilisées par d'autres.
En règle générale, l'ouverture d'une connexion à une base de données est une opération coûteuse, en particulier si la base de données est distante. Vous devez ouvrir des sessions réseau, vous authentifier, faire vérifier l'autorisation, etc. Le regroupement maintient les connexions actives de sorte que, lorsqu'une connexion est demandée ultérieurement, l'une des connexions actives est utilisée de préférence à la nécessité d'en créer une autre.
Reportez-vous au diagramme suivant pour les quelques paragraphes suivants:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
Dans sa forme la plus simple, il s'agit simplement d'un appel d'API similaire (1) à un appel d'API à connexion ouverte qui est similaire au "réel". Cela vérifie d'abord le pool pour une connexion appropriée (2) et, si elle est disponible, elle est donnée au client. Sinon, un nouveau est créé (3).
Est juste un qui déjà une « connexion appropriée » a accès à la base de données en utilisant les informations correctes (comme par exemple la base de données, les informations d' identification, et éventuellement d' autres choses).
De même, il y a un appel d'API close (4) qui n'appelle pas réellement la vraie connexion étroite, mais met plutôt la connexion dans le pool (5) pour une utilisation ultérieure. À un moment donné, les connexions dans le pool peuvent être effectivement fermées (6).
C'est une explication assez simpliste. Les implémentations réelles peuvent être en mesure de gérer les connexions à plusieurs serveurs et à plusieurs comptes d'utilisateurs, elles peuvent pré-allouer des connexions de base afin que certaines soient prêtes immédiatement, et elles peuvent en fait fermer les anciennes connexions lorsque le modèle d'utilisation se calme.
Les images parlent mille mots (paxdiablo a donné une superbe description):
La source
la source
Comme le nom le suggère. Si quelques personnes veulent nager, elles peuvent nager dans la même piscine, est-ce vraiment logique de construire une nouvelle piscine à chaque fois que quelqu'un ajoute? Le temps et le coût sont une priorité.
la source
Le regroupement de connexions de base de données consiste simplement à mettre en cache les connexions aux bases de données afin qu'elles puissent être réutilisées la prochaine fois afin de réduire le coût d'établissement d'une nouvelle connexion chaque fois que nous souhaitons nous connecter à une base de données.
la source
Vous pouvez utiliser la bibliothèque apache commons pour l'implémentation du pool de connexions de manière transparente: http://commons.apache.org/dbcp/
DBCP est également un pool Hibernate pris en charge: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
la source
Concept de regroupement de connexions non seulement en Java mais dans de nombreux langages de programmation. La création d'un nouvel objet de connexion est coûteuse, donc un nombre fixe de connexions est établie et maintenue dans le cycle de vie création d'un pool virtuel Java Just ( http://javajust.com/javaques.html ) voir question 14 sur cette page
la source