czy łączenie z bazą danych jest kosztowne

0

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

0

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.

0

Potrzebuje, ale mogę to obejść większym nakładem pracy. Zastanawiam się czy warto się w to bawić

0

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

3

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ń.

1 użytkowników online, w tym zalogowanych: 0, gości: 1