Czym jest łączenie baz danych?

Chciałem tylko poznać koncepcję łączenia baz danych i jak to jest osiągane.

Author: SiHa, 2010-10-28

5 answers

Pooling jest metodą używaną do utrzymywania otwartych połączeń bazodanowych, aby mogły być ponownie wykorzystane przez inne osoby.

Zazwyczaj otwarcie połączenia z bazą danych jest kosztowną operacją, zwłaszcza jeśli baza danych jest zdalna. Musisz otworzyć sesje sieciowe, uwierzytelnić, sprawdzić autoryzację i tak dalej. Funkcja Pooling utrzymuje aktywne połączenia, dzięki czemu, gdy później zostanie wymagane połączenie, jedno z aktywnych jest używane zamiast konieczności utworzenia innego jeden.

Zobacz poniższy diagram dla kilku 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 ono dostępne, jest ono przekazywane klientowi. W przeciwnym razie tworzony jest nowy (3).

Podobnie, istnieje close API call (4), które w rzeczywistości nie wywołujereal close-connection, raczej stawia podłączenie do basenu (5) do późniejszego wykorzystania. W pewnym momencie połączenia w basenie mogą być faktycznie zamknięte (6).

To dość uproszczone wyjaśnienie. Rzeczywiste implementacje mogą obsługiwać połączenia z wieloma serwerami i wieloma kontami użytkowników, mogą wstępnie przydzielać niektóre podstawowe połączenia, więc niektóre są gotowe natychmiast i mogą faktycznie zamykać stare połączenia, gdy wzorzec użycia ucichnie.
 117
Author: paxdiablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-20 04:33:43

Obrazy mówią tysiąc słów (paxdiablo dał świetny opis):

alt text

Źródło

 51
Author: zengr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-28 08:44:45

Możesz użyć biblioteki Apache commons do implementacji poolingu połączeń: http://commons.apache.org/dbcp/

DBCP jest również obsługiwaną pulą Hibernate: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4

 1
Author: madhurtanwani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-28 08:49:09

Connection Pooling concept nie tylko w Javie, ale w wielu językach programowania. Tworzenie nowego obiektu połączenia jest kosztowne, więc stała liczba połączeń jest tworzona i utrzymywana w cyklu życia tworząc wirtualną pulę Java Just ( http://javajust.com/javaques.html ) Zobacz pytanie 14 na tej stronie

 1
Author: Sandhya Saini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-04 10:08:15

Jak sama nazwa wskazuje. Jeśli kilka osób chce pływać, mogą pływać w tym samym basenie, czy naprawdę ma sens konstruowanie nowego basenu za każdym razem, gdy ktoś dodaje ? Czas i koszty są priorytetem.

 1
Author: vdegenne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 18:40:41