Domanda

Sto lavorando a una nuova app Web. Devo archiviare eventuali modifiche nel database per controllare le tabelle. Lo scopo di tali tabelle di controllo è che in seguito in un vero controllo fisico possiamo accertare cosa è successo in una situazione, che ha modificato quale e quale era lo stato di db al momento di ad es. un calcolo complesso. Quindi per lo più la tabella di controllo verrà scritta e non letta. Il rapporto può essere generato anche se a volte.

Ho cercato la soluzione disponibile

  1. AuditTrail - semplice ed è per questo che mi sto inclinando, posso capirlo codice file singolo.
  2. Reversion - sembra abbastanza semplice da usare ma non sono sicuro di quanto sarebbe facile modificarlo se necessario.
  3. rcsField sembra essere molto complesso e troppo per le mie esigenze

Non ho provato nessuno di questi, quindi volevo conoscere alcune esperienze reali e quale dovrei usare. per esempio. quale è più veloce utilizza meno spazio, facile da estendere e mantenere?

È stato utile?

Soluzione 3

Come ho affermato nella mia domanda, rcField sembra essere troppo per le mie esigenze, il che è semplice che desidero memorizzare eventuali modifiche alla mia tabella, e potrebbe tornare più tardi a tali modifiche per generare alcuni report.

Quindi ho testato AuditTrail e Reversion Reversion sembra essere una migliore applicazione completa con molte funzionalità (di cui non ho bisogno), anche per quanto ne so salva i dati in una singola tabella in formato XML o YAML, che penso

  1. genererà troppi dati in una singola tabella
  2. per leggere quei dati potrei non essere in grado di usare strumenti db già presenti.

AuditTrail vince al riguardo che per ogni tabella genera una tabella di controllo corrispondente e quindi le modifiche possono essere tracciate facilmente, i dati per tabella sono inferiori e possono essere facilmente manipolati e utilizzati per la generazione di report.

Quindi vado con AuditTrail.

Altri suggerimenti

Personalmente preferisco creare tabelle di controllo nel database e popolare attraverso i trigger in modo tale da archiviare qualsiasi modifica anche le query ad hoc dalla finestra delle query. Non prenderei mai in considerazione una soluzione di audit che non si basa sul database stesso. Questo è importante perché le persone che stanno apportando modifiche dannose al database o che commettono frodi non sono suscettibili di farlo attraverso l'interfaccia web ma direttamente sul back-end. Molto di più di queste cose accade da dipendenti scontenti o prosciugati che dagli hacker esterni. Se stai già utilizzando un ORM, i tuoi dati sono a rischio perché le autorizzazioni sono a livello di tabella anziché a livello di sp a cui appartengono. Pertanto, è ancora più importante acquisire qualsiasi possibile modifica ai dati, non solo ciò che proviene dalla GUI. Abbiamo un proc dinamico per creare tabelle di controllo che vengono eseguite ogni volta che nuove tabelle vengono aggiunte al database. Poiché le nostre tabelle di controllo popolano solo le modifiche e non l'intero record, non è necessario modificarle ogni volta che viene aggiunto un campo.

Anche durante la valutazione di possibili soluzioni, assicurati di considerare quanto sarà difficile ripristinare i dati per annullare una modifica specifica. Una volta che hai le tabelle di controllo, scoprirai che questa è una delle cose più importanti che devi fare da esse. Considera anche quanto sarà difficile mantenere le informazioni quando lo schema del database cambia.

Scegliere una soluzione perché sembra la più facile da capire, non è generalmente una buona idea. Dovrebbe essere il più basso dei criteri di selezione dopo aver soddisfatto i requisiti, la sicurezza, ecc.

Non posso darti un'esperienza reale con nessuno di loro, ma vorrei fare un'osservazione.

Suppongo che AuditTrail intenda AuditTrail sul wiki di Django . In tal caso, penso che vorrai invece guardare HistoricalRecords sviluppato dallo stesso autore (Marty Alchin aka @gulopine) nel suo libro Pro Django . Dovrebbe funzionare meglio con Django 1.x.

Questo è l'approccio che userò su un prossimo progetto, non perché batte necessariamente gli altri dal punto di vista tecnico, ma perché corrisponde al "mondo reale". aspettative della pista di controllo per tale applicazione.

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