Sto sviluppando un'applicazione Web che utilizza MS SQL per vari dati: inclusi utenti, account utente, licenze utente, prezzi delle licenze, fatture.
Devo registrare l'utilizzo del sistema in tempo reale da parte degli utenti e utilizzarlo per la fatturazione mensile: ad esempio, ogni volta che un utente riceve una pagina / URL specifici e fatturare 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 di sola aggiunta non SQL?
Devo scrivere questi eventi di registro in un file di registro diverso per ciascun utente?
Questo non è un sito web particolarmente voluminoso: ad esempio, un massimo di 10.000 utenti ciascuno esegue una media di 5 eventi / giorno registrabili => 50.000 eventi / giorno = 30 eventi / minuto = 18.000.000 di eventi / anno.
Sto chiedendo perché entrambe le opzioni sembrano praticabili 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 con la tabella Users 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 del 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 eventi di accesso degli utenti e principalmente utilizzato solo per la lettura
- Gestione più semplice: archiviazione più semplice dei vecchi dati, ad esempio 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 per favore fatemi sapere quale è la vostra risposta, se è diversa dalla mia.