Accedi al file o alla tabella del database?

11

Sto sviluppando un'applicazione web che utilizza MS SQL per vari dati: inclusi utenti, account utente, licenze utente, prezzi di licenza, fatture.

Devo registrare l'utilizzo in tempo reale degli utenti del sistema e utilizzarlo per la fatturazione mensile: ad es. registra ogni volta che un utente riceve una pagina / URL specifica e fattura gli utenti alla fine del mese in base al numero di pagine che hanno recuperato.

  • Devo scrivere questi eventi di registro in una tabella nel mio database MS SQL?

  • Devo scrivere questi eventi di registro in un file di registro non solo per l'aggiunta di SQL?

  • Devo scrivere questi eventi di registro in un file di registro diverso per ciascun utente?

Questo non è un sito Web ad alto volume: ad esempio, un massimo di 10.000 utenti ciascuno eseguono una media di 5 eventi di registrazione / giorno = > 50.000 eventi / giorno = 30 eventi / minuto = 18.000.000 di eventi / anno.

Chiedo perché entrambe le opzioni sembrano valide e non vedo se si ha un chiaro vantaggio.

I dati associati a un evento fatturabile sono semplici, ad esempio:

  • ID utente (relazione chiave esterna per la tabella Utenti in SQL)
  • Data e ora
  • URL della pagina fatturabile

La mia risposta a questa domanda è la seguente:

  • Alcuni vantaggi della scrittura del registro in una tabella di database:

    • Integrità relazionale: ad es. gli eventi registrati sono associati a ID utente validi (definendo l'ID utente come chiave esterna tra le tabelle)
    • Facile da leggere per la fatturazione: ad es. SELECT COUNT GROUP BY per ottenere un conteggio del numero di eventi di registro per utente
  • Alcuni vantaggi della scrittura nel file di registro:

    • Prestazioni più semplici: SQL viene utilizzato meno spesso, ad es. solo per gli eventi di accesso degli utenti e in gran parte utilizzato solo per la lettura
    • Gestione più semplice: è più facile archiviare i vecchi dati, ad es. a fine anno, spostando i vecchi file di registro anziché eliminando / archiviando dal database

Per favore fatemi sapere se la mia risposta è sbagliata; o esagera l'importanza di qualcosa; o ha dimenticato alcune considerazioni importanti.

E / o fammi sapere qual è la tua risposta, se è diversa dalla mia.

    
posta ChrisW 19.12.2014 - 04:26
fonte

1 risposta

12

Poiché si utilizzano queste informazioni per scopi di fatturazione, non vedo perché non si vorrebbe nel database in cui può essere facilmente interrogato, aggregato, segnalato e unito ad altri dati.

Penso anche che sia molto più semplice mantenere una singola tabella di database contenente le informazioni del registro piuttosto che un mucchio di file di registro separati. Lo stesso vale per la tua preoccupazione per il carico sul server: ci sono modi molto migliori per affrontarlo rispetto al ricorso alla conservazione dei dati in file flat.

La tua terza opzione, a proposito, è di fare entrambe le cose. Utilizza il database per la maggior parte delle esigenze, ma disponi del file di registro a scopo di controllo.

    
risposta data 19.12.2014 - 04:34
fonte

Leggi altre domande sui tag