Come conservare i dati storici dell'utente?

3

Sto cercando di pensare al modo migliore per archiviare i dati storici per la mia applicazione web. L'applicazione ha utenti che aggiungono foto, commentano e li classificano. Tutto questo è memorizzato nel database relazionale.

Gli utenti hanno anche la possibilità di eliminare le proprie foto (e quindi commenti / voti) e il proprio account.

Voglio memorizzare quelle entità cancellate come dati storici. Lo scopo è di distinguere le categorie di ciò che le persone amano fotografare e classificare gli utenti verso quelle categorie .

Dovrei memorizzarlo in qualche database NoSQL? O forse nel mio database di origine contrassegnandolo con il campo is_deleted ? Forse una tabella diversa, ad es. archived_users , archived_photos ? Un'altra istanza di database per soli dati storici?

Qualcuno ha affrontato tale compito ed è disposto a condividere pensieri?

Finora, sto usando is_deleted flag per le foto e la tabella di backup ( archived_users ) per gli utenti. Perché questa distinzione? Per evitare di violare il limite unique sul campo username . Questa soluzione ha 3 problemi per me.

  • È incoerente fare la stessa cosa in 2 modi. O forse è ok?
  • È in qualche modo strano spostare user in un'altra tabella (con associazioni alle foto). Crea alcuni campi superficiali. O forse è ok?
  • I dati "viventi" sono mescolati con dati storici. Potrebbe essere un problema di prestazioni quando il database è davvero enorme?
posta lilly 09.12.2013 - 18:01
fonte

2 risposte

4

L'utilizzo di indicatori / indicatori nel database principale per mostrare cosa è stato eliminato è un buon modo per iniziare. E se ne può, se possibile.

Le tue altre idee, come lo spostamento di dati "cancellati" in tabelle / database di archivio separati, sono probabilmente necessarie solo se la quantità di dati cancellati con soft è sooooo di grandi dimensioni che è conservata nel database principale un impatto significativo sulle prestazioni. Mantienilo semplice, se puoi.

    
risposta data 09.12.2013 - 18:11
fonte
0

Non sei sicuro del motivo per cui desideri conservare i dati che l'utente ha esplicitamente eliminato. Data la propensione degli hack, ti stai lasciando aperto a tutti i tipi di problemi mantenendo i dati.
Se vuoi davvero mantenerlo per scopi "storici", esportali in un database offline.

    
risposta data 09.12.2013 - 21:23
fonte

Leggi altre domande sui tag