Ho un sistema che raggiunge un'API su base giornaliera e raccoglie dati. Questi dati sono suddivisi in gruppi logici, con un gruppo logico definito come tutti i dati appartenenti a un particolare utente. Un utente ha 30 account secondari e, per ciascun account, prendo l'API e inserisco i dati nel database. Dopo ogni colpo, eseguo un inserto quindi ho 30 colpi per questo ex.
Ora a volte l'API genera qualche errore temporaneo, ad esempio al punto 20, quindi se lo metto in try i dati di cattura per quel particolare hit vengono saltati, il che essenzialmente corrompe il database con dati non validi per quel particolare giorno.
Voglio inserire tutti i dati solo se tutti i successi hanno successo e non riesco a memorizzare il risultato per ogni hit in memoria in quanto richiederebbe troppa memoria in quanto ogni hit contiene molti dati.
Come dovrei progettare il sistema in modo che se si verifica un errore tra non viene inserito nulla?
Questo può essere ottenuto tramite transazioni a livello di DB, ma ho una restrizione che uso Elasticsearch e non riesco a trovare inserimenti transazionali in esso. In qualche modo ho bisogno di gestirlo a livello di applicazione.