Biblioteka Connection-Pool to moja własna implementacja mechanizmu zarządzania połączeniami do bazy danych, która oferuje efektywny sposób reużywania połączeń. Projekt skupia się na zapewnieniu stabilnej i wydajnej komunikacji z bazą danych poprzez dynamiczne zarządzanie pulą połączeń, co pozwala na optymalizację zasobów serwera.
Connection pool to mechanizm pozwalający na efektywne zarządzanie zasobami sieciowymi w aplikacjach. W momencie uruchomienia program tworzy określoną liczbę połączeń, które są stale dostępne do użytku. Jeśli aplikacja wymaga więcej połączeń, można dynamicznie tworzyć dodatkowe. Gdy zapotrzebowanie na połączenia spada, nadmiarowe są zamykane i usuwane, co pozwala na oszczędność zasobów serwera. Link do repo:
Connection-Pool-Library
jakubBone • Updated Oct 21, 2024
🚀 System zarządzania połączeniami do bazy danych
- Klasa
DatabaseConnection
odpowiedzialna za ustanawianie połączeń z bazą danych, zarządzanie parametrami połączeń (użytkownik, hasło, URL, itp.), logowanie informacji o stanie połączeń oraz obsługę błędów podczas nawiązywania i zamykania połączeń.
🚀 Pula połączeń
- Klasa
ConnectionPool
zarządza pulą połączeń do bazy danych. Na starcie aplikacji inicjalizowana jest określona liczba połączeńminPoolSize
, kontrolowana jest maksymalna liczba połączeńmaxPoolSize
oraz zapewniona jest synchronizacja i bezpieczeństwo wielowątkowe za pomocą mechanizmów takich jakSemaphore
iLock
.
🚀 Obsługa zapytań o połączenia i ich zwalnianie
- Klasa
ConnectionPool
udostępnia metodygetConnection()
ireleaseConnection()
, umożliwiające pobieranie i zwracanie połączeń z/do puli. W przypadku braku dostępnych połączeń, jeżeli liczba połączeń w puli nie przekraczamaxPoolSize
, tworzone są nowe połączenia.
🚀 Mechanizm usuwania nieaktywnych połączeń
- Metoda
removeIdleConnection()
oraz harmonogramstartConnectionRemovalScheduler()
pozwalają na regularne sprawdzanie puli i usuwanie nieaktywnych połączeń, które przekraczają minimalny rozmiar puliminPoolSize
. Dzięki temu zasoby są zwalniane i nieużywane połączenia są eliminowane.