U jednego z moich pracodawców pracowaliśmy nad interfejsem API REST (ale dotyczy to również SOAP). Klient, który jest interfejsem aplikacji, nawiązywałby połączenia przez Internet (sieć LAN w typowych wdrożeniach produkcyjnych) z interfejsem API. Interfejs API nawiązywałby połączenia z bazą danych.
Jednym z tematów, który powraca w naszych dyskusjach, jest wydajność: niektóre osoby w zespole uważają, że nie powinieneś mieć wielu wywołań bazy danych (zwykle czyta) z jednego wywołania API ze względu na wydajność; powinieneś je zoptymalizować, aby każde wywołanie API miało tylko (dokładnie) jedno wywołanie bazy danych.
Ale czy to naprawdę ważne? Weź pod uwagę, że interfejs użytkownika musi wykonać połączenie sieciowe z interfejsem API; to dość duże (rząd milisekund). Bazy danych są zoptymalizowane do przechowywania rzeczy w pamięci i wykonywania odczytów bardzo, bardzo szybko (np. SQL Server ładuje i przechowuje wszystko w pamięci RAM i zużywa prawie całą wolną pamięć RAM, jeśli to możliwe).
TLDR: Czy naprawdę ważne jest martwienie się wieloma połączeniami z bazą danych, gdy już wykonujemy połączenie sieciowe przez sieć LAN? Jeśli tak, to dlaczego?
Mówiąc wprost, mówię o rzędzie wielkości - wiem, że zależy to od specyfiki (sprzęt maszyny, wybór API i DB itp.) Jeśli mam wywołanie, które zajmuje O (milisekundy), optymalizuje dla DB połączenia, które mają rząd wielkości mniejszy, w rzeczywistości mają znaczenie? Czy może jest coś więcej niż problem?
Edycja: w przypadku potomności uważam, że twierdzenie, że musimy poprawić wydajność, łącząc wywołania bazy danych w takich okolicznościach, jest niedorzeczne - zwłaszcza przy braku profilowania. Jednak to nie moja decyzja, czy to zrobimy, czy nie; Chcę wiedzieć, jakie jest uzasadnienie tego, że jest to prawidłowy sposób optymalizacji wywołań interfejsu API sieci.