Il mio servizio ha un numero elevato di eventi utente e vorremmo fare cose come "contare l'occorrenza del tipo di evento T dalla data D ."
Stiamo cercando di prendere due decisioni di base:
-
Cosa memorizzare? Memorizzazione di ogni evento rispetto alla memorizzazione di aggregati
- (stile log eventi) registra ogni evento e contali più tardi, vs.
- (stile serie storica) memorizza un singolo "conteggio di eventi E per la data D " per ogni giorno
-
Dove memorizzare i dati
- In un database relazionale (in particolare MySQL)
- In un database non relazionale (NoSQL)
- Nei file di registro flat (raccolti centralmente attraverso la rete tramite
syslog-ng
)
Che cos'è la pratica standard / dove posso leggere ulteriori informazioni sul confronto tra i diversi tipi di sistemi?
Ulteriori dettagli:
- Il flusso di eventi totale è ampio, potenzialmente centinaia di migliaia di voci al giorno
- Ma il nostro attuale bisogno è solo di contare alcuni tipi di eventi al suo interno
- Non abbiamo necessariamente bisogno dell'accesso in tempo reale ai dati grezzi o ai risultati di aggregazione
IMHO, "registra tutti gli eventi sui file, esegui la scansione in un secondo momento per filtrare e aggregare il flusso" è un modo UNIX piuttosto standard, ma i miei compatrioti Rails-y sembrano pensare che nulla sia reale a meno che non sia in MySQL.