Come in molti database, sto progettando un database che dovrebbe tenere traccia delle versioni precedenti delle righe modificate in ciascuna tabella.gestione delle righe cronologiche nella banca dati
La soluzione standard a questo problema è mantenere una tabella di cronologia per ogni tabella di dati, e ogni volta che una riga deve essere aggiornata nella tabella dati, una copia della riga corrente viene inserita nella tabella della cronologia e la riga nella tabella dati viene aggiornata.
gli svantaggi di questa soluzione per me:
- mantenimento di 2 tabelle anziché 1, (nel caso la struttura delle esigenze tabella cambiate)
- l'applicazione deve conoscere entrambe le tabelle invece di una
- nomi delle tabelle potrebbero devono essere brevi per mantenere una convenzione del nome della tabella e il nome della tabella di storia (some_table, SOME_TABLE_HIST per esempio)
ho un Sto considerando una soluzione diversa e vorrei sapere se è ok. per ogni tabella, si aggiunge la colonna IS_LAST
- quando una riga viene inserita nella tabella, otterrà inserito con IS_LAST = 1.
- quando una riga viene aggiornata, una copia della riga originale verrà duplicata nella stessa tabella con la modifica di IS_LAST = 0 e la riga originale verrà aggiornata secondo necessità (mantenendo ancora IS_LAST = 1).
presupporre che nel mio caso le righe vengano aggiornate in media 10 volte. anche supporre che almeno il 90% delle azioni eseguite dall'applicazione si verifica solo sulla versione recente delle righe.
il mio database è un Oracle 10g in modo da mantenere snella la tabella "attiva", possiamo dividere la tabella in 2 partizioni: la partizione IS_LAST = 1 e la partizione IS_LAST = 0.
Il partizionamento è un buon metodo per risolvere i problemi di cronologia dei dati?
Questa soluzione limita il potenziale di altre partizioni a queste tabelle?
grazie!
È Oracle, perché preoccuparsi? Basta partizionare su quella colonna e attivare la migrazione di Row. È integrato, perché riscrivere e mantenere due tabelle. –