Grande Analytics Database Recupero Responsive (MySQL)
-
12-09-2019 - |
Domanda
Voglio creare un'applicazione di tipo 'Google Analytics per il web - vale a dire uno strumento web-based per fare un po' di report e grafici per la mia base di dati. Il problema è che il database è enorme, quindi non posso fare le query in tempo reale, perché ci vorrà troppo tempo e lo strumento sarà insensibile.
Come posso utilizzare un job cron per aiutarmi? Qual è il modo migliore per essere in grado di fare i miei grafici reattivo? Penso che avrò bisogno di denomalize alcune delle mie tabelle di database, ma come faccio a fare queste query più veloce? Quali valori intermedi posso archiviare in un'altra tabella del database per rendere più veloce?
Grazie!
Soluzione
Business Intelligence (BI) è una disciplina abbastanza matura -. E troverete le risposte alle vostre domande in qualsiasi libro sul ridimensionamento dei database per la segnalazione e data warehousing
Un elenco di alto livello di tattica dovrebbe includere:
- partizionamento (perché gli indici sono poco aiuto per la maggior parte di reporting)
- tabelle riepilogative (generati di solito attraverso un processo batch presentare tramite cron)
- è necessario un buon ottimizzatore (alcuni database come MySQL non - in modo da rendere poveri decisioni di giunzione)
- interrogazione il parallelismo (alcune banche dati forniranno incrementi nella velocità lineari semplicemente dividendo la query in più thread)
- stella-schema - un modello di buoni dati è cruciale per buone prestazioni
In generale, reporting dinamico batte i pantaloni fuori di reporting statico - quindi se siete alla ricerca di reporting potente che avevo appena tenta di copiare i dati in un modello appropriato, utilizzare inerti, eventualmente modificare il database per ottenere un buon ottimizzatore e l'appropriato caratteristiche piuttosto che eseguire report in batch.
Altri suggerimenti
Un modo semplice per avvicinarsi a questo sarebbe quella di creare una selezione di tabelle di sintesi per contenere i dati pre-aggregati. Questi potrebbero essere popolate in modo regolare utilizzando crontab.
In alternativa, può essere la pena di guardare qualcosa di simile a http://mondrian.pentaho.org .
mi sarei me stesso familiarizzato con "schemi a stella"