MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Qualcuno ha lavorato con Aerospike? Come si confronta con MongoDB?

Ho usato Aerospike, MongoDB e Redis e ho testato molti altri database NoSQL. Direi che Aerospike è molto bravo in quello che fa, ma è diverso da MongoDB. Tutto dipende da cosa stai pianificando di utilizzare un database per. Posso darti un esempio di ciò per cui sto usando i miei diversi database. Posso anche esaminare le differenze tra loro e discutere i vantaggi di Aerospike.

MongoDB

Sto usando MongoDB come alternativa a SQL. Nel mio database MongoDB ho molti campi diversi. Spesso i campi cambiano e avrò bisogno di interrogare casualmente vari campi. È un database molto non strutturato e MongoDB è fantastico in questo. Ho anche usato MongoDB come archivio di valori-chiave standard. Funziona bene, ma ho avuto MongoDB che funziona in modo non ottimale sia su scala di transazione che su scala di dimensione del database. Certo, il database potrebbe essere stato ottimizzato un po' meglio, ma trovo molto difficile trovare documentazione sulla configurazione corretta di MongoDB in diverse situazioni.

Redis

Redis è un puro negozio di valori-chiave. Il problema più grande di Redis è che è puramente in memoria (userà il disco come backup ma non è possibile memorizzare più informazioni della memoria disponibile). È estremamente veloce per quello per cui viene utilizzato. Personalmente lo uso per un piccolo database transazionale:svolgo funzioni molto semplici sui tasti come contare quante volte si è verificato un evento per un determinato utente. Eseguo anche rapide ricerche in memoria che devo mappare su valori diversi. Redis è un ottimo strumento per un piccolo set di dati ed è estremamente veloce. Anche la configurazione è molto semplice.

Aerospike

Personalmente uso Aerospike per sostituire Redis quando è il momento di scalare. Dalla mia comprensione, può essere utilizzato per di più. Come Redis, Aerospike è un negozio di valori chiave. Credo che l'edizione open source supporti anche gli indici secondari che Redis non fa (non ho usato indici secondari in produzione ma ho fatto pochi test su di essi).

La caratteristica migliore di Aerospike è la sua capacità di scalare. Il problema più grande che dovevo risolvere quando esaminavo Aerospike era ridimensionare il mio sistema per gestire grandi set di dati rimanendo estremamente veloce. Il progetto per cui utilizzo Aerospike ha requisiti molto severi in termini di velocità. Di solito eseguo 3-4 ricerche nel database più altre elaborazioni e ho bisogno di tempi di transazione inferiori a 50 ms. Alcune ricerche riguardano set di dati che superano i 300 GB. Non sono riuscito a trovare una soluzione per conservare questi dati e renderli accessibili in un ragionevole lasso di tempo. Redis ovviamente non funzionerà a meno che non avessi una macchina con oltre 300 GB di RAM. MongoDB ha iniziato a funzionare in modo estremamente scarso con una dimensione molto inferiore a 300 GB. Quindi ho dato una possibilità ad Aerospike ed è stato in grado di gestire tutto molto bene. La cosa migliore di Aerospike:man mano che il mio set di dati è cresciuto, non ho dovuto fare molto di più che alzare una nuova scatola quando necessario. La velocità è rimasta costante.

Trovo anche molto buona la documentazione di Aerospikes. Non è troppo difficile da configurare ed è abbastanza facile trovare le risposte per qualsiasi problema che si presenta.

Conclusione

Quindi, Aerospike è buono come affermano? Personalmente, non ho visto niente di meno di quanto affermato. Non ho dovuto scalare a 1 milione di TPS, ma credo che con hardware sufficiente sarebbe possibile. Credo anche che i numeri mostrino una differenza di velocità tra Aerospike e MongoDB. Aerospike è un database molto più "configurato" e "pianificato" rispetto a MongoDB. Per questo motivo Aerospike sarà molto più veloce su larga scala di MongoDB. Deve solo preoccuparsi di un singolo (o, in caso di indici secondari, di poche centinaia) di indici a differenza di MongoDB che può cambiare dinamicamente. La domanda che devi davvero porre è cosa stai cercando di ottenere con il tuo database. Quindi esamina quale database si adatta meglio alle tue esigenze. Se hai bisogno di un database di negozi scalabile, veloce e con valori chiave, direi che Aerospike è probabilmente il migliore in circolazione.

Fatemi sapere se avete domande specifiche o se avete bisogno di chiarimenti. Probabilmente sarei in grado di aiutarti.