Skip to main content

Data Loader

Dal momento che alcune operazioni sul backend di Hydra richiedono un numero non trascurabile di chiamate al DB, e che eseguire queste ultime in modo sequenziale comporterebbe un calo inaccettabile delle prestazioni, sono impiegate alcune ottimizzazioni a riguardo: la più importante riguarda l'uso dei DataLoader, ovvero degli servizi interni che fungono da proxy rispetto al DB, il cui compito è quello di intercettare tutte le richieste in lettura avviate in una stessa finestra temporale (configurabile, di solito 5 ms) e di aggregarle in un'unica query verso il DB. Le richieste in lettura supportate da questo meccanismo riguardano entità singole (identificate dal proprio ID o dalla coppia ID+Sito).

Oltre all'aggregazione delle query, il data loader offre funzionalità di cache delle risposte.

warning

I dataloader non sono adatti all'utilizzo durante l'esecuzione di command, in quanto lo stato della cache potrebbe non coincidere con il nuovo stato del DB. Utilizzare i dataloader sono per le operazioni di lettura pura (query).

I dataloader sono disponibili per la dependency injection, possono quindi essere iniettati allo stesso modo degli entity service negli handler. Tuttavia, questo servizio è prevalentemente usato nel mapping delle risposte, per esempio per ottenere velocemente informazioni riguardo alle pagine parent o antenate.

tip

Per informazioni aggiuntive riguardo a questo meccanismo, fare riferimento a questa pagina.