Stiamo utilizzando un concetto simile a Event Sourcing per archiviare i dati / le azioni di un sistema collaborativo in esecuzione .
Il sistema ha alcuni utenti 2-3k che lo usano ogni giorno e sta crescendo.
Col passare del tempo, il codebase si evolve e i dati che abbiamo già memorizzato devono essere aggiornati per adattarsi ai nuovi formati. Questo è uno scenario raro, ma succede e credo che sia molto più "sano" convertire i dati passati per conformarsi alla nuova base di codice, piuttosto che gestire i precedenti formati all'interno del codebase, in modo da sporcarlo con il passare del tempo.
Ho scritto un piccolo strumento che scarica blocchi di eventi (~ 3000 eventi) per ciclo, map()
s su di essi, convertendoli e ripristinandoli in batch. È abbastanza efficiente.
Tuttavia, mi ci è voluto quasi un giorno per convertire 7 mesi di dati (~ 30 GB). Dopo circa un anno, questo potrebbe iniziare a richiedere 2 giorni per terminare e dopo 2 anni questo potrebbe iniziare a richiedere settimane.
Esistono strategie migliori quando gestiscono tali conversioni di dati?