Cześć,
Czy łączenie z bazą danych jest kosztowne? zastanawiam się czy powinnam pisać aplikację w sposób, aby nawiązań i zakończeń połączenia powinno być jak najmniej za wszelką cenę, czy nie jest to sprawa, którą powinno się przejmować?
Pozdrawiam
Kwestia czy naprawdę ich potrzebujesz. Możesz zrobić cache i część danych trzymać w plikach po stronie klienta/serwera. Jest też opcja API i JSON.
Potrzebuje, ale mogę to obejść większym nakładem pracy. Zastanawiam się czy warto się w to bawić
I tak i nie, to zależy od punktu widzenia. Inaczej jest jak masz bazę z której równocześnie korzysta kilkunastu użytkowników, a inaczej jak kilkanaście tysięcy
Należy założyć, że jest kosztowne.
Podczas połączenia może dziać się wiele ciekawych rzeczy np:
- nawiązanie połączenia TCP/IP - to jest akurat zwykle tanie, ale dodaje opóźnienie (latency)
- negocjacja wersji protokołu, szyfrowania, kompresji itp. (znowu kolejne opóźnienie)
- autentykacja użytkownika (może być b. kosztowna i może wiązać się z żądaniami do zewnętrznych serwerów np. LDAP, generowaniem tokenów / nonce oraz zapytaniami do tabel systemowych)
- ściągnięcie listy serwerów zapasowych i połączenie się z nimi (w systemach z HA)
- wystartowanie wątków / procesów alokacja zasobów (może być zależne od bazy - np. Postgres przydzieli cały proces z puli, ale inne systemy wcale nie muszą)
Wszystko to razem w rozudowanym systemie baz danych, skonfigurowanym w sposób bezpieczny (czyli silna autentykacja, pełne HA) może zająć znacznie więcej niż przepchnięcie pojedynczego zapytania i odebranie wyniku. Przy czym największy koszt to czekanie na wymianę tych wszystkich komunikatów, bo w sensie zasobów nie jest to jakoś bardzo obciążające dla bazy, a przynajmniej nie powinno być. Dlatego z zasady powinno się korzystać z puli połączeń.