Sto facendo un'applicazione di tipo watchlist che otterrà tutti gli oggetti da guardare e quindi eseguirà il polling di un'API ogni dieci minuti circa per verificarne lo stato.
Sto cercando di progettare la parte del database di questo progetto e ho voluto qualche consiglio sulla migliore tecnologia da usare. Sono molto esperto in database relazionali ma ho usato MongoDB per questo progetto.
Quello che sto pensando di fare è avere due tabelle una tabella watch_list e una tabella item_status. Un'applicazione può ottenere un elenco distinto di elementi dalla tabella di watchlist e quindi eseguire il polling dell'api e quindi aggiornare la tabella item_status quando lo desidera, indipendentemente da ciò che sta succedendo con la watchlist, può anche essere multithread con l'API. Se l'API restituisce uno stato reale, è necessario che un'azione venga eseguita. L'altra app richiede semplicemente richieste e inserisce elementi nella tabella Watch_list. Il problema che prevedo è che stiamo memorizzando informazioni che non ci interessano molto nella tabella item_status, cioè una volta che lo stato è vero, allora qualche azione accade e non ci interessa più il lavoro fatto, nessuno può mettere quell'elemento torna in una lista di controllo fino a quando non è di nuovo falso in modo da poter anche solo cancellare quei record.
Questo mi porta all'idea che forse ho solo bisogno di una tabella, che include un flag se lo stato è stato restituito come true e l'azione è avvenuta, così come l'ultima volta che è stata controllata. Solo una ragione Tuttavia, mi piace che martellassi questa tabella con gli aggiornamenti richiamando l'API per controllare se lo stato dell'oggetto è vero, quindi sono preoccupato di scrivere nuovi elementi in questa tabella, inoltre mi piace l'idea che io possa avere un separato entità per il polling e che può essere eseguita solo in background aggiornando la tabella item_status.
Oltre a questo sto cercando di capire quale tecnologia sarebbe la migliore per questi dati, postgres o mongodb sono le mie due scelte preferite, i miei dati sono incredibilmente relazionali quindi trovo difficile pensare a come mongodb fornirebbe un beneficiare. Poiché aggiornerò i campi, vorrei sapere quale tecnologia sarebbe più adatta a questo tipo di progetto.