2010-05-05 12 views
13

Quale sarebbe il database adatto per seguire? Sono particolarmente interessato alle tue esperienze con i sistemi non relazionali NoSQL. Sono utili per questo tipo di utilizzo, quale sistema è stato utilizzato e consigliato, oppure devo andare con il normale database relazionale (DB2)?Quali sono le buone soluzioni di database NoSQL e non relazionali per il database di controllo/registrazione

Ho bisogno di raccogliere informazioni di tipo audit trail/logging da un gruppo di fonti a un server centralizzato in cui posso generare report in modo efficiente ed esaminare cosa sta accadendo nel sistema.

Tipicamente un evento di controllo/registrazione consisterebbe sempre di alcuni campi obbligatori, per esempio

id
  • globalmente unico (alcuni come generato dal programma che ha generato l'evento)
  • timestamp
  • tipo di evento (cioè utente connesso, errore è accaduto ecc)
  • alcune informazioni sulla fonte (server1, server2)

Inoltre, l'evento potrebbe contenere coppie di valori-chiave 0-N, dove il valore potrebbe essere fino a pochi kilobyte di testo.

  • Essa deve essere eseguito su server Linux
  • dovrebbe funzionare con elevata quantità di dati (100 GB per esempio)
  • dovrebbe sostenere una sorta di efficace ricerca a testo integrale
  • Si dovrebbe consentire la lettura simultanea e scrittura
  • Dovrebbe essere flessibile per aggiungere nuovi tipi di eventi e aggiungere/rimuovere coppie chiave-valore a nuovi eventi. Flessibile = nessuna modifica deve essere richiesta allo schema del database, l'applicazione che genera gli eventi può semplicemente aggiungere nuovi tipi di eventi/nuovi campi secondo necessità.
  • dovrebbe essere efficiente per eseguire query sul database. Per riferire ed esplorare cosa è successo. Ad esempio:
    • Quanti eventi con tipo = X si sono verificati in un determinato periodo di tempo.
    • ottenere tutti gli eventi in cui il campo A contiene valore Y.
    • Ottenere tutti gli eventi di tipo X e campo Una ha valore 1 e il campo B non è 2 e evento verificatosi nell'ultima 24h

risposta

4

L' due che ho visto usato con successo sono MongoDB e Cassandra.

+0

Intendevi MongoDB? –

+1

MongoDB è fantastico per il logging: http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging – kristina

2

Abbiamo utilizzato Redis per eseguire la registrazione centralizzata di tutti i nostri server di applicazioni su mflow.com. È molto veloce, che in base a these benchmarks esegue circa 110000 SET al secondo, circa 81000 GET al secondo. Ha un'implementazione VM (se il set di dati supera la memoria disponibile) che scambia i valori non frequentati su disco.

È un server avanzato di strutture dati in grado di archiviare tutti i dati di sicurezza binaria con supporto nativo per stringhe, elenchi, set, serie ordinate e hash. Basato su discussioni sulla mailing list, è molto usato da molte persone per archiviare l'analisi.

2

devo andare con il normale database relazionale (DB2)?

Sì, dovresti! Se vuoi solo archiviare materiale e scannerizzarlo, potresti scrivere su un file. Molto veloce, senza spese generali! Ma nel momento in cui desideri riepilogare i dati nel tempo (ultimi 24 ore o tra il tempo te t + 1), più ti preoccupi dei dati come qualcosa di diverso dalle righe di testo, non c'è dubbio che un RDBMS appropriato è tuo amico.

Problemi correlati