come progettare le tabelle del database per le statistiche sul download dei file

1

Ho l'applicazione web in cui sto servendo download di file in php. Tutto funziona bene e ho la colonna di download in file field dove la incremento.

Ma voglio avere una staticità completa dei download come quanti download su each day o in month o time of day o da which location

Ma non sono in grado di trovare come progettare le tabelle mysql per quello. Devo scaricare ogni richiesta di download nel database per quello. Qualsiasi modello di progettazione o esempio di ciò nel mondo reale

    
posta user2424160 30.07.2013 - 08:22
fonte

1 risposta

4

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è0perimpostazionepredefinita;vedraicomeverràusatounpo'piùtardi.

Datalamancanzadiindicisullatabella,l'inserimentodeidatisarebberapido.Laselezione,d'altraparte,puòesseremoltolenta,manonimporta:nonuseremmoquestatabellaperlaricerca.

Idatidiquestatabellaverrebberotrasformatiinquestoinorario(dinotte,ogniora,unavoltaalsecondo,asecondadelleesigenze).Unavoltatrasferito,lavocevienecontrassegnatacomeelaboratacambiandoIsProcessedin1.

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.

risposta data 30.07.2013 - 08:30
fonte

Leggi altre domande sui tag