Devo implementare un servizio di analisi Web personalizzato per un numero elevato di siti Web. I soggetti chiave sono:Architettura del database per milioni di nuove righe al giorno
- Sito
- Visitor
ogni visitatore avrà hanno una singola riga nel database con informazioni come pagina di destinazione, l'ora del giorno, sistema operativo, browser, referrer , IP, ecc
ho bisogno di fare domande aggregate su questo database come 'contare tutti i visitatori che hanno Windows come sistema operativo e provenivano da Bing.com'
Ho centinaia di siti Web da monitorare e il numero di visitatori per tali siti web varia da poche centinaia al giorno a pochi milioni al giorno. In totale, mi aspetto che questo database cresca di circa un milione di righe al giorno.
Le mie domande sono:
1) MySQL è una buona base di dati per questo scopo?
2) Quale potrebbe essere una buona architettura? Sto pensando di creare una nuova tabella per ogni sito web. O magari iniziare con una singola tabella e quindi generare una nuova tabella (giornaliera) se il numero di righe in una tabella esistente supera 1 milione (la mia ipotesi è corretta). La mia unica preoccupazione è che se una tabella diventa troppo grande, le query SQL possono diventare drammaticamente lente. Quindi, qual è il numero massimo di righe che dovrei memorizzare per tabella? Inoltre, c'è un limite al numero di tabelle che MySQL può gestire.
3) È consigliabile eseguire query di aggregazione su milioni di righe? Sono pronto per aspettare un paio di secondi per ottenere risultati per tali domande. È una buona pratica o esiste un altro modo per fare query aggregate?
In breve, Sto provando un progetto di un tipo di installazione di data warehouse di grandi dimensioni che sarà scritto pesante. Se sei a conoscenza di casi di studio o rapporti pubblicati, sarà fantastico!
Se il database è già stato progettato. Puoi condividere il design del database? –