Supponiamo di avere accesso a due endpoint restanti, /persons
e /products
. Se devo recuperare 100 persone con i rispettivi prodotti , qual è il modo migliore per farlo?
Come posso unirmi a loro in modo efficiente? Implementare una tabella temporanea in DB, unendoli in memoria? Ad esempio, se lo faccio in memoria, mi trovo a fare il lavoro RDBMS, quando la condizione di join è solo su qualche chiave ID può essere accettabile, ma se sono condizioni di join più complesse che utilizzano i servizi web, in questo caso, sembra essere molto inefficiente
Partecipa con WS:
- HTTP OTTIENI 100K persone in formato JSON
- HTTP OTTIENI tutti i prodotti filtrati dall'ID persona
- Crea una struttura di array di prodotti indicizzati con l'ID della persona
- Passa sopra le persone e aggiungi di persona i loro prodotti quando person.id = products.person_id
- Utilizza i dati
Partecipa con un dump della tabella:
- FTP get person.sql
- FTP get (linked) products.sql
- Caricalo nella tabella temporanea nel DB (facendo lo stesso con alcuni JSON o XML che richiedono trasformazioni)
- Esegui query SQL
- Utilizza i dati
Quindi, nello scenario semplice WS, gli svantaggi sono l'uso massiccio della memoria e la complessità del fare l'RDBMS (unirsi anche senza parlare di altri casi come il raggruppamento degli ordini, se necessario) e in questo caso, ci sono solo due entità.
(L'idea alla base di questa riflessione è di studiare la possibilità di rimuovere completamente EAI in azienda per l'architettura SOA / ESB)