2013-12-10 9 views
6

Il mio caso d'uso è la registrazione di controllo per le risorse. Per la discussione si consideri uno schema molto semplice: un nome di risorsa, il timestamp di accesso e l'accesso al nome utente. Con tutte le opzioni NoSQL disponibili, mi chiedo quale sia la soluzione migliore per il mio caso d'uso?Quale database NoSQL è migliore per aggiungere solo il caso di utilizzo della registrazione di controllo?

I nomi delle risorse sono conservati in un database grafico (Neo4j) e mentre potremmo aggiungere vertici e spigoli a un vertice di controllo connesso al vertice della risorsa, le informazioni di controllo potrebbero essere grandi e temo di inquinare un grafico relativamente semplice.

Attualmente mi sto appoggiando a un database di documenti come MongoDB o Couchbase in cui ogni risorsa ha il proprio documento e il registro di controllo è una semplice matrice all'interno di questo documento a cui viene aggiunto. Temo che l'I/O possa diventare un problema poiché i registri di controllo si allungano e l'intero documento deve essere scambiato tra l'app server e il database. Un'anima che vedo per minimizzare questo è rendere ogni voce di controllo il proprio documento e aggiungere l'ID all'array del documento di risorse genitore.

I registri di controllo di ricerca non sono un requisito in questo momento, ma con un database di documenti ritengo che ci sia un buon percorso per integrare Elastic Search in un secondo momento.

Sembra che Redis potrebbe essere un po 'più ottimale per il mio caso d'uso, ma la persistenza dei dati non appare rigorosa come le altre soluzioni.

Concettualmente, suppongo di cercare tutte le soluzioni NoSQL che supportano una chiamata al metodo API "append" senza la necessità di scambiare molte informazioni. Ironicamente questa è fondamentalmente una dichiarazione INSERT SQL, ma temo che un RDBMS tradizionale non soddisfi i miei requisiti di scala. La tabella di controllo sarebbe enormemente veloce e preferirei sfruttare gli ultimi e più grandi approcci NoSQL al partizionamento/sharding.

Eventuali approfondimenti sui casi d'uso di log append sono apprezzati!

Questi sembrano essere simili SO domande:

Database design for audit logging

NoSQL or RDBMS for audit data

Grazie, Jared

+0

Quante richieste un secondo? Per quanto tempo devi conservare i dati? Onestamente, postgres o mysql andrebbero bene e archiviano solo i dati più vecchi. Sarà anche più facile analizzare i tuoi dati. – scalabilitysolved

+0

Ottima domanda ma purtroppo nessuna risposta decente, quale soluzione hai scelto? –

risposta

0

Apache Kafka è di log-oriented, altamente scalabile e permette per la sottoscrizione ai messaggi in più diversi modi.

Problemi correlati