MongoDB per memorizzare diversi file di log (schema)
Domanda
Pensi che l'utilizzo di un database MongoDB JSON per memorizzare i file di log da applicazione è una buona idea e perché?
L'unico vantaggio per me è l'astrazione dello schema, ma penso che sia anche una debolezza, non siamo in grado di garantire l'integrità di un file di log.
Soluzione
Ovviamente io sono di parte (io lavoro su MongoDB), ma penso che funziona molto bene per i registri.
I motivi:
- E 'veloce per gli inserti e gli aggiornamenti ... si può fare migliaia al secondo
- Così come query normali, è possibile eseguire analisi e generare report utilizzando JavaScript. Si potrebbe avere un job cron in esecuzione di notte che fa bella cose MapReduce per il vostro log.
- È possibile utilizzare collezioni innevate, che sono la raccolta che si comportano come le code, a mantenere solo le ultime N KBS / MB / GB di tronchi
Non sono sicuro di cosa si intende "garantire l'integrità di un file di log" ... vuoi dire siete preoccupati di non sapere quello che i campi del documento che si sta tirando fuori ha? Se è così, penso che lo troverete non è più difficile è trattare con i campi nulli in un database relazionale e molto più flessibile.
Si veda anche: post del blog MongoDB ad accedere su .
Altri suggerimenti
sto usando MongoDB per memorizzare i log da molte applicazioni e che sta funzionando molto bene finora.
Si potrebbe voler dare un'occhiata al diapositive da un presentazione sulla registrazione Application Behavior a MongoDB che ho dato a Mongo SV e all'ultimo MongoDB SF Meetup per più di fondo sul perché penso che sia un bene per la registrazione, così come per informazioni su librerie per Java, Python, Ruby , PHP e C # che supportano la registrazione di MongoDB.
Sono ora il committer principale log4mongo-java, appenders Log4J per MongoDB. Quindi, non è probabilmente troppo sorprendente che questo è quello che sto usando.
Per quanto riguarda il login integrità, suppongo che voi dire la fiducia che non è stato modificato dopo che è stato scritto. Una possibilità che hai, per lo meno con log4mongo-java, per memorizzare gli eventi di registrazione in una banca dati che richiede l'autenticazione. Che limiterebbe in una certa misura il numero di utenti che potrebbero aggiungere, eliminare o aggiornare gli eventi.
Inoltre, è possibile impostare uno schiavo replica che è strettamente bloccato. backup frequenti dello slave sarebbero almeno limitare il tempo durante il quale l'insieme di eventi registrati potrebbe essere modificata.