Se solo sta per memorizzare i registri, sei passato in una delle poche posizioni in cui i database relazionali non hanno molto senso.
SQL non sarà sicuramente il mezzo ideale per eseguire il tuo lavoro- nessun join, non molte tabelle diverse, ecc. Transazioni e UPDATE
s probabilmente non saranno necessarie.
Sceglierei qualcosa che mi consenta di eseguire facilmente i lavori di ridimensionamento della mappa: potrebbe essere il caso che un algoritmo a thread singolo sia tutto ciò di cui hai bisogno, ma se diventa troppo lento per i tuoi scopi, essere in grado di lanciare i core al problema sarà utile.
Se stai cercando molto (cioè esegui calcoli su piccoli sottoinsiemi di dati), l'indicizzazione sarà un altro fattore determinante: avere un negozio che supporti l'indicizzazione che gestisce bene le tue ricerche farà risparmiare un sacco di tempo.
D'altro canto, a seconda di ciò che si fa, potrebbe avere senso "riepilogare" i registri utilizzando un archivio dati non relazionale, ma inserire i dati massaggiati in un RDBMS. Se ci sono dati strutturati / relazionali nascosti nei tuoi registri, la capacità di eseguire query ad-hoc usando SQL è inestimabile: aggregati, funzioni della finestra, ecc. Possono essere eseguiti in modo abbastanza rapido in un RDBMS decente, forse anche più efficientemente che con la mappa -reduce e algoritmi altamente paralleli; sicuramente, se conosci il tuo SQL, l'implementazione è di solito molto più veloce.
Ad esempio, supponi che i log che ti interessano siano tutti simili:
[timestamp] add student xxxxx
[timestamp] create class yyyy at [date-time] with professor zzzz
[timestamp] student xxxx books class yyyy
[timestamp] student xxxx cancels class yyyy
quindi scaricali in student
, class
, student_booking
e esegui gli aggregati su di essi ha molto senso.
(ovviamente, direi che non stai analizzando i log allora ...)