Di solito, salvi la data, l'ora e la posizione di ogni download, dato che la tabella deve essere ottimizzata per l'inserimento veloce, ma il recupero potrebbe essere lento.
Quindi, potresti avere un cubo OLAP che, in base alla tabella originale, memorizzerà il numero di download in un modo appropriato per i tuoi criteri, vale a dire al giorno o al mese o alla posizione.
Puoi iniziare modellando la tabella che viene utilizzata per registrare i risultati del download:
Questotidàleinformazionidibasesuldownload,cioècheundownloadèavvenutoinunadataeoradeterminatedaunadeterminataposizionegeografica.isProcessed
è0
perimpostazionepredefinita;vedraicomeverràusatounpo'piùtardi.
Datalamancanzadiindicisullatabella,l'inserimentodeidatisarebberapido.Laselezione,d'altraparte,puòesseremoltolenta,manonimporta:nonuseremmoquestatabellaperlaricerca.
Idatidiquestatabellaverrebberotrasformatiinquestoinorario(dinotte,ogniora,unavoltaalsecondo,asecondadelleesigenze).Unavoltatrasferito,lavocevienecontrassegnatacomeelaboratacambiandoIsProcessed
in1
.
Questa tabella contiene indici per poter trovare rapidamente le informazioni che ti servono, ad esempio contare i download per posizione come questa:
select sum(CountDownloads) from ProcessedDownload where GeographicalLocation = :location'
Potrebbe essere sufficiente per le tue esigenze, oppure puoi andare oltre e creare un cubo OLAP con dimensioni specifiche in base ai criteri di cui hai bisogno.
Se vuoi andare ancora oltre, cerca lo schema dei fiocchi di neve. Puoi implementarlo sia per data e ora, dato che, a seconda del contesto, lo schema a stella (quello attuale) potrebbe essere più appropriato.
Come suggerito nei commenti, i log del server possono essere un'altra fonte per l'ETL, sostituendo la tabella del database. Immagino che i professionisti sarebbero:
-
Nessun database da creare in primo luogo; nessuna connessione al database da gestire, ecc.
-
Il punto precedente significa anche che non devi fare nulla con la tua applicazione web per essere in grado di riportare tali statistiche. Anche espandere le statistiche ad altre applicazioni Web è semplice, poiché non è necessario cambiarle.
-
I log del server dovrebbero essere molto veloci, molto probabilmente più veloci dell'inserimento di una riga in una tabella in un database.