Nel nostro database (attualmente MySQL) ci sono oltre 120 milioni di record, e facciamo uso frequente di query JOIN complesse e logiche a livello di applicazione in PHP che toccano il database. Siamo una società di marketing che fa del data mining il nostro obiettivo principale, quindi abbiamo molti report di grandi dimensioni che devono essere eseguiti su base giornaliera, settimanale o mensile.MongoDB o Cassandra sono migliori di MySQL per dataset di grandi dimensioni?
Allo stesso tempo, il servizio clienti opera su uno slave replicato dello stesso database.
Ci piacerebbe essere in grado di rendere questi rapporti in tempo reale sul Web anziché dover generare manualmente fogli di calcolo per loro. Tuttavia, molte delle nostre relazioni impiegano una notevole quantità di tempo per estrarre i dati (in alcuni casi, più di un'ora).
Non operiamo nel cloud, scegliendo invece di operare utilizzando due server fisici nella nostra sala server.
Dato tutto ciò, qual è la nostra migliore opzione per un database?
I sistemi NoSQL sono in genere molto deboli per l'unione dei dati. Attaccherei con un RDBMS a meno che non modifichiate i vostri dati in modo diverso. Probabilmente ti darà le migliori query in esecuzione. – Sam
Probabilmente ti ritroverai con più problemi ad usare Cassandra perché i tuoi dati sono stati modellati per confermare alla struttura relazionale. Essenzialmente dovrai rimodellare tutto e quindi provare a ottimizzare la soluzione NOSQL. Considerando che hai già qualche esperienza con MySQL probabilmente lo ottimizzerai più facilmente. Anche Cassandra è un po 'buggy rispetto a MySQL. Quindi prova ad ottimizzare le tue query come altre risposte menzionate e scegli le SSD invece delle unità Plate. Mantenere gran parte del set di dati nella RAM aiuterà anche a prendere in considerazione il motore InnoDB per aiutarti. – PSIXO
Anche una cosa semplice da considerare, solo per testare alcune supposizioni potrebbe essere quella di replicare il tuo database su un'altra macchina su un RamDisk (potresti anche usare una workstation HighEnd non un server) e quindi eseguire alcune query su di esso. Potresti anche impostare alcuni test A/B, il che significa che una generazione di report (poiché sono tutti letti) potrebbe essere indirizzata al tuo server e altri verranno indirizzati a questa macchina di test. Se si ottengono prestazioni molto migliori durante la lettura dalla macchina di prova, viene indicato quale miglioramento si può ottenere migliorando l'I/O HDD. – PSIXO