Chciałem tylko poznać koncepcję buforowania połączeń z bazą danych i poznać sposób jej osiągnięcia.
Chciałem tylko poznać koncepcję buforowania połączeń z bazą danych i poznać sposób jej osiągnięcia.
Pule połączeń z bazą danych to metoda służąca do utrzymywania otwartych połączeń z bazą danych, dzięki czemu mogą być ponownie wykorzystywane przez innych.
Zwykle otwieranie połączenia z bazą danych jest kosztowną operacją, zwłaszcza jeśli baza danych jest zdalna. Musisz otworzyć sesje sieciowe, uwierzytelnić się, sprawdzić autoryzację i tak dalej. Buforowanie utrzymuje połączenia aktywne, więc gdy później zażąda się połączenia, jedno z aktywnych jest używane zamiast tworzyć inne.
Poniższy diagram zawiera kilka następnych akapitów:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
W najprostszej formie jest to po prostu podobne wywołanie API (1) do wywołania API otwartego połączenia, które jest podobne do "prawdziwego". Najpierw sprawdza pulę pod kątem odpowiedniego połączenia (2) i, jeśli jest dostępne, zostaje przekazane klientowi. W przeciwnym razie tworzony jest nowy (3).
„Odpowiednie połączenie” to takie, które ma już dostęp do bazy danych przy użyciu poprawnych informacji (takich jak instancja bazy danych, poświadczenia i być może inne rzeczy).
Podobnie, istnieje bliskie wywołanie API (4), które w rzeczywistości nie wywołuje prawdziwego bliskiego połączenia, a raczej umieszcza połączenie w puli (5) do późniejszego użycia. W pewnym momencie połączenia w puli mogą być faktycznie zamknięte (6).
To dość uproszczone wyjaśnienie. Prawdziwe implementacje mogą być w stanie obsłużyć połączenia z wieloma serwerami i wieloma kontami użytkowników, mogą wstępnie przydzielić pewną linię bazową połączeń, aby niektóre były gotowe od razu, i mogą faktycznie zamknąć stare połączenia, gdy wzorzec użycia się uspokoi.
Obrazy mówią więcej niż tysiąc słów (paxdiablo dał wspaniały opis):
Źródło
źródło
Jak sama nazwa wskazuje. Jeśli kilka osób chce pływać, mogą pływać w tym samym basenie, czy naprawdę ma sens budowanie nowego basenu za każdym razem, gdy ktoś dodaje? Czas i koszt to priorytet.
źródło
Pule połączeń z bazą danych to po prostu buforowanie połączeń z bazami danych, aby można było ich ponownie użyć następnym razem, aby zmniejszyć koszt ustanawiania nowego połączenia za każdym razem, gdy chcemy łączyć się z bazą danych.
źródło
Możesz użyć biblioteki Apache commons do implementacji puli połączeń w przejrzysty sposób: http://commons.apache.org/dbcp/
DBCP jest również obsługiwaną pulą Hibernacji: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
źródło
Koncepcja puli połączeń nie tylko w Javie, ale także w wielu językach programowania. Tworzenie nowego obiektu połączenia jest kosztowne, więc ustalona liczba połączeń jest tworzona i utrzymywana w cyklu życia, tworząc wirtualną pulę Java Just ( http://javajust.com/javaques.html ) patrz pytanie 14 na tej stronie
źródło