Jeg har brugt Aerospike, MongoDB og Redis og har testet mange andre NoSQL-databaser. Jeg vil sige, at Aerospike er meget god til, hvad den gør, men den er anderledes end MongoDB. Alt afhænger af, hvad du planlægger at bruge en database til. Jeg kan give dig et eksempel på, hvad jeg bruger mine forskellige databaser til. Jeg kan også gennemgå forskellene mellem dem og diskutere fordelene ved Aerospike.
MongoDB
Jeg bruger MongoDB som et SQL-alternativ. I min MongoDB database har jeg mange forskellige felter. Ofte ændrer felterne sig, og jeg bliver tilfældigt nødt til at forespørge på forskellige felter. Det er en meget ustruktureret database, og MongoDB er fantastisk til det. Jeg har også brugt MongoDB som en standard nøgleværdi butik. Det fungerer godt, men jeg har fået MongoDB til at fungere suboptimalt i både transaktionsskala og databasestørrelsesskala. Indrømmet, databasen kunne være blevet optimeret lidt bedre, men jeg har meget svært ved at finde dokumentation for korrekt konfiguration af MongoDB i forskellige situationer.
Redis
Redis er en ren nøgleværdibutik. Redis' største problem er, at det udelukkende er i hukommelsen (det vil bruge disken som backup, men du kan ikke gemme mere information, end du har tilgængelig hukommelse). Det er ekstremt hurtigt i forhold til det, det bruges til. Jeg bruger det personligt til en lille transaktionsdatabase:Jeg udfører meget simple funktioner på taster som at tælle, hvor mange gange en hændelse skete for en bestemt bruger. Jeg laver også hurtige opslag i hukommelsen, som jeg skal have kortlagt til forskellige værdier. Redis er et fantastisk værktøj til et lille datasæt, og det er ekstremt hurtigt. Konfiguration er også meget let.
Aerospike
Jeg bruger personligt Aerospike til at erstatte Redis, når det er tid til at skalere. Efter min forståelse kan det bruges til mere. Ligesom Redis er Aerospike en butik med nøgleværdier. Jeg mener, at open source-udgaven også understøtter sekundære indekser, hvilket Redis ikke gør (jeg har ikke brugt sekundære indekser i produktionen, men har lavet lidt test på dem).
Aerospikes bedste egenskab er dens evne til at skalere. Det største problem, jeg skulle løse, da jeg kiggede på Aerospike, var at skalere mit system til at håndtere store datasæt, mens det forblev ekstremt hurtigt. Projektet jeg bruger Aerospike til har meget strenge krav til hastighed. Jeg laver normalt 3-4 databaseopslag plus anden behandling og skal have sub-50ms transaktionstider. Et par opslag er på datasæt, som er 300 GB+. Jeg kunne ikke finde en løsning til at opbevare disse data og gøre dem tilgængelige inden for rimelig tid. Redis vil åbenbart ikke virke, medmindre jeg havde en maskine, som havde 300 GB+ RAM. MongoDB begyndte at yde ekstremt dårligt ved en størrelse meget lavere end 300 GB. Så jeg gav Aerospike et skud, og det var i stand til at håndtere alt meget godt. Det bedste ved Aerospike:efterhånden som mit datasæt er vokset, har jeg ikke behøvet meget mere end at stille en ny boks op, når det har været nødvendigt. Hastigheden er holdt konstant.
Jeg finder også Aerospikes dokumentation meget god. Det er ikke for svært at konfigurere, og det er ret nemt at finde svar på ethvert problem, der dukker op.
Konklusion
Så er Aerospike så god, som de hævder? Personligt har jeg set intet mindre end det, der er blevet påstået. Jeg har ikke skullet skalere til 1 million TPS, men jeg tror med nok hardware, at det ville være muligt. Jeg tror også på tallene, der viser en hastighedsforskel mellem Aerospike og MongoDB. Aerospike er en meget mere "konfigureret" og "planlagt" database end MongoDB. På grund af dette vil Aerospike være meget hurtigere i skala end MongoDB. Det behøver kun at bekymre sig om et enkelt (eller i tilfælde af sekundære indekser, et par hundrede) indekser i modsætning til MongoDB, som kan ændre sig dynamisk. Det spørgsmål, du virkelig skal stille, er, hvad du forsøger at opnå med din database. Så se nærmere på, hvilken database der passer bedst til dine behov. Hvis du har brug for en skalerbar, hurtig butiksdatabase med nøgleværdier, vil jeg sige, at Aerospike nok er den bedste derude.
Sig til, hvis du har nogle specifikke spørgsmål eller har brug for noget afklaret. Jeg ville nok være i stand til at hjælpe dig.