modi intelligenti per mantenere copie versionati di tabelle di un database relazionale (considerazioni sulla programmazione?)

StackOverflow https://stackoverflow.com/questions/1151413

  •  18-09-2019
  •  | 
  •  

Domanda

La mia seconda considerazione è stato quello di fare semplicemente una copia dei dati della tabella associati al documento attivo o la cartella di documenti che la linea di base è stato applicato a, e memorizzare che per mantenere sicuro. I risparmi la complessità del codice sarebbero enormi, lo schema sarebbe mantenuto più semplice anche se v'è un certo impatto in termini di utilizzo di memoria (anche se non credo che sarà così grande)

È stato utile?

Soluzione

Questa è una cosa che sto di fronte a così su un progetto in corso. Alcune buone risposte qui .

Sono personalmente usando l'opzione # 1, l'aggiunta di una colonna di versione al pkey di ogni tabella "di versione". Fkeys utilizzano la colonna versione. La mia considerazione principale è la facilità di interrogazione, con la conseguenza di requisiti di storage elevate. Ho il margine di manovra per limitare rigorosamente il numero di versioni mantenuto intorno, che mitiga tale questione.

Altri suggerimenti

Credo davvero che siete alla ricerca di un banca dati temporali . La nostra implementazione ha aggiunto un paio di identificatori log di controllo ad un tavolo, il "creare ID" e "delete ID" (ed ogni transazione che ha modificato il database è stato sintetizzato in un "audit log" e dato un identificatore univoco sequenziale). Per ogni transazione che ha aggiunto un record alla tabella, l'identificatore di registro di controllo è stato utilizzato come ID creare e l'ID di eliminazione era pari a zero. Quando un record cambiato, la nuova versione ha avuto la nuova creare ID e lo stesso identificatore è stato utilizzato come ID eliminazione per la vecchia versione.

E 'stato abbastanza facile per creare una visualizzazione di una tabella in cui l'ID di eliminazione era pari a zero, la creazione di un tavolo virtuale di dati appena correnti. Si potrebbe anche trovare il contenuto delle tabelle appena prima o subito dopo una specifica operazione è stata elaborata, ottenere una lista delle operazioni che hanno modificato una riga specifica di una tabella, ecc.

Ci sono il tempo, lo spazio, e le sanzioni complessità di tutto questo. Ma per noi, si tratta di grandi somme di denaro, ne valeva la pena.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top