Domanda di architettura sulla migrazione dei dati

0

Sto affrontando un nuovo progetto aziendale in Java sulla migrazione dei dati. Ne ho fatto uno in passato, ora voglio fare un lavoro migliore e penso di aver bisogno delle tue considerazioni.

Quindi, spiegami il problema:
Ho un sacco di tabelle DB senza alcun filo logico. Quindi nella maggior parte dei casi ho bisogno di eseguire una logica enorme nell'applicazione Java per creare i risultati corretti.

In passato ho provato alcuni consigli, ma alla fine ho usato un sacco di HashMap per archiviare in memoria le voci recuperate da db ed eseguire la logica che volevo. Sono stato davvero fortunato perché le voci non erano molto utili per la memoria.

La domanda che forse pensi ora è: perché è necessario memorizzare tutte le voci in HashMap?

Esempio: ho TABLE1 e ho bisogno di eseguire una logica per tutte le voci. Quindi ho una HashMap con i dati originali presi da db (chiave: l'id della tabella, valore: la voce POJO) e possono essere recuperati da una sequenza di query senza caricare tutto in memoria.

La seconda HashMap contiene i set di dati modificati di TABLE 1.

Quindi ho TABELLA 2 per eseguire un'altra logica, ma ho bisogno dei primi set di dati modificati per eseguire altre attività.

Alla fine devo necessariamente avere in memoria tutta la HashMap che contiene i set di dati modificati per fare tutta la logica.

Ho cercato molto su internet per vedere se riesci a mettere un meccanismo di memorizzazione nella cache, ma sono molto confuso.

Quello di cui ho bisogno è un algoritmo intelligente che mi salvi le voci di HashMap sul disco in caso di necessità, ma dovrebbe essere abbastanza veloce per recuperare i dati quando ho bisogno di . Un'altra alternativa sarebbe quella di salvare i dati modificati su db e utilizzare una grande quantità di query, ma lo eviterei perché i risultati che mi interessano non verranno salvati nel database.

    
posta Mattia Peterle 24.01.2015 - 19:46
fonte

1 risposta

1

Se vuoi una sostituzione drop-in di HashMap / TreeMap, allora MapDB è quello che stai cercando. Ha funzioni come la serializzazione trasparente su disco e più strategie di memorizzazione nella cache (algoritmo intelligente che hai citato).

Potresti anche considerare di fare tutto il lavoro all'interno del DB, usando stored procedure e tabelle temporanee. Potrebbe essere più veloce, a causa della mancanza di invio di dati attraverso la rete.

    
risposta data 24.01.2015 - 20:47
fonte

Leggi altre domande sui tag