web-dev-qa-db-fra.com

Qu'est-ce que la mise en commun de bases de données?

Je voulais juste connaître le concept de regroupement de connexions de base de données et comment il est réalisé.

103
sagar27

Base de données connexion le regroupement 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, surtout si la base de données est distante. Vous devez ouvrir des sessions réseau, vous authentifier, faire vérifier les autorisations, etc. Le regroupement maintient les connexions actives de sorte que, lorsqu'une connexion est demandée ultérieurement, l'une des connexions actives soit utilisée de préférence à devoir en créer une autre.

Reportez-vous au diagramme suivant pour les 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 "vrai" appel. Cela vérifie d'abord le pool pour une connexion appropriée (2) et, s'il en existe une, celle-ci est donnée au client. Sinon, un nouveau est créé (3).

De même, il existe un appel API fermé (4) qui n'appelle pas réellement la connexion real close, mais place la connexion dans le pool (5) pour une utilisation ultérieure. À un moment donné, les connexions dans le pool peuvent être en fait 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 une base de connexions 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.

165
paxdiablo

Les images parlent mille mots (paxdiablo a donné une description impressionnante):

alt text

Source

78
zengr

Comme le nom le suggère. Si quelques personnes veulent nager, elles peuvent nager dans la même piscine, est-il vraiment judicieux de construire une nouvelle piscine chaque fois que quelqu'un ajoute? Le temps et les coûts sont une priorité.

5
vdegenne

la mise en file d'attente de connexion à la 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

4
Peter

Concept de regroupement de connexions non seulement dans 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 établi et maintenu dans le cycle de vie en créant un pool virtuel Java Just ( http://javajust.com/javaques.html ) voir la question 14 sur cette page

1
Sandhya Saini

Vous pouvez utiliser la bibliothèque Apache commons pour l'implémentation du pool de connexion 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

1
madhurtanwani