Il modo migliore per memorizzare le informazioni di revisione per un accesso rapido alla visualizzazione o al ripristino delle modifiche

2

Quello che sto cercando è la soluzione più ottimale per archiviare le revisioni dei contenuti in un database MSSQL. Abbiamo un'applicazione che consente agli utenti di apportare modifiche a blocchi di contenuti HTML di piccole dimensioni simili a quelli di una wiki, ma è necessario disporre di un rigido controllo di audit sulle modifiche. In qualsiasi momento, il gestore potrebbe voler esaminare i contenuti inviati in precedenza o ripristinare l'intero blocco HTML allo stato precedente.

Ho avuto l'installazione in passato dove avevamo una tabella primaria che memorizzava le informazioni HTML (insieme a vari altri meta tag) e poi una tabella di controllo che manteneva una copia dell'intera riga di dati ogni volta che veniva apportata una modifica. Quello che mi chiedo è se questo è il modo migliore per andare, o dovrei semplicemente tenere una tabella con tutti i record correnti e le modifiche in essa e avere solo una bandiera che mi faccia sapere quale è quella corrente?

    
posta Eric Packwood 09.11.2010 - 21:18
fonte

2 risposte

3

Ho avuto un discreto successo con un po 'di entrambi.

Una tabella che ha la versione corrente del record e una tabella con ogni versione (e un timestamp e un modificato da) in un'altra tabella.

Questo ti dà il vantaggio di avere una copia completa di ogni versione senza il sovraccarico di dover ordinare la versione corrente da tutte le altre in fase di runtime. consente inoltre di impostare autorizzazioni molto più rigide sulla tabella di controllo e di implementare facoltativamente la copia di controllo con i trigger e di nascondere completamente le informazioni di controllo dal resto dell'app se ti piace quel genere di cose.

    
risposta data 09.11.2010 - 21:27
fonte
0

Una tabella con le bandiere sarebbe preferibile IMHO.

L'alternativa aggiunge overhead (aggiungendo il vecchio record alla tabella di archiviazione), con poco vantaggio. Tale è l'efficienza della maggior parte dei motori SQL, che di solito c'è un sovraccarico trascurabile nel trovare la versione corrente di un record rispetto alla ricerca del solo record nella tabella.

In alcune applicazioni ad alto volume, potrebbe esserci un caso per l'alternativa, ma non per un wiki.

    
risposta data 10.11.2010 - 13:06
fonte

Leggi altre domande sui tag