Ik heb Aerospike, MongoDB en Redis gebruikt en heb veel andere NoSQL-databases getest. Ik zou zeggen dat Aerospike erg goed is in wat het doet, maar het is anders dan MongoDB. Alles hangt af van waar je een database voor gaat gebruiken. Ik kan je een voorbeeld geven van waar ik mijn verschillende databases voor gebruik. Ik kan ook de verschillen tussen hen bespreken en de voordelen van Aerospike bespreken.
MongoDB
Ik gebruik MongoDB als een SQL-alternatief. In mijn MongoDB-database heb ik veel verschillende velden. Vaak veranderen de velden en zal ik willekeurig op verschillende velden moeten zoeken. Het is een zeer ongestructureerde database en MongoDB is daar geweldig in. Ik heb MongoDB ook gebruikt als een standaard key-value store. Het presteert goed, maar ik heb MongoDB suboptimaal laten presteren op zowel transactieschaal als databasegrootte. Toegegeven, de database was misschien iets beter geoptimaliseerd, maar ik vind het erg moeilijk om documentatie te vinden over het correct configureren van MongoDB in verschillende situaties.
Opnieuw
Redis is een pure key-value store. Het grootste probleem van Redis is dat het puur in het geheugen is (het gebruikt schijf als back-up, maar je kunt niet meer informatie opslaan dan je geheugen beschikbaar hebt). Het is extreem snel waarvoor het wordt gebruikt. Ik gebruik het persoonlijk voor een kleine transactiedatabase:ik doe heel eenvoudige functies op toetsen, zoals tellen hoe vaak een gebeurtenis voor een bepaalde gebruiker is gebeurd. Ik doe ook snelle in-memory look-ups die ik moet toewijzen aan verschillende waarden. Redis is een geweldige tool voor een kleine dataset en het is extreem snel. Configuratie is ook heel eenvoudig.
Aerospike
Ik gebruik persoonlijk Aerospike om Redis te vervangen wanneer het tijd is om te schalen. Voor zover ik weet, kan het voor meer worden gebruikt. Net als Redis is Aerospike een winkel met een sleutelwaarde. Ik geloof dat de open source-editie ook secundaire indexen ondersteunt, wat Redis niet doet (ik heb geen secundaire indexen gebruikt tijdens de productie, maar heb er weinig op getest).
De beste eigenschap van Aerospike is de schaalbaarheid. Het grootste probleem dat ik moest oplossen toen ik naar Aerospike keek, was het schalen van mijn systeem om grote datasets te verwerken en tegelijkertijd extreem snel te blijven. Het project waarvoor ik Aerospike gebruik, stelt zeer hoge eisen aan snelheid. Ik maak meestal 3-4 database-lookups plus andere verwerkingen en moet transactietijden van minder dan 50 ms hebben. Een paar zoekopdrachten zijn op datasets van 300 GB+. Ik kon geen oplossing vinden om deze gegevens vast te houden en binnen een redelijke tijd toegankelijk te maken. Redis zal uiteraard niet werken tenzij ik een machine had met 300GB+ RAM. MongoDB begon extreem slecht te presteren met een grootte die veel kleiner was dan 300 GB. Dus ik gaf Aerospike een kans en het kon alles heel goed aan. Het beste van Aerospike:naarmate mijn dataset groeide, hoefde ik niet veel meer te doen dan een nieuwe doos op te zetten wanneer dat nodig was. De snelheid is constant gebleven.
Ik vind de documentatie van Aerospikes ook erg goed. Het is niet zo moeilijk te configureren en het is vrij eenvoudig om antwoorden te vinden voor elk probleem dat zich voordoet.
Conclusie
Dus, is Aerospike zo goed als ze beweren? Persoonlijk heb ik niets minder gezien dan wat is beweerd. Ik heb niet moeten schalen naar 1 miljoen TPS, maar ik geloof wel dat met voldoende hardware dat mogelijk zou zijn. Ik geloof ook dat de cijfers een snelheidsverschil laten zien tussen Aerospike en MongoDB. Aerospike is een veel meer "geconfigureerde" en "geplande" database dan MongoDB. Hierdoor zal Aerospike veel sneller op schaal zijn dan MongoDB. Het hoeft zich alleen zorgen te maken over een enkele (of in het geval van secundaire indices, een paar honderd) indexen in tegenstelling tot MongoDB die dynamisch kan veranderen. De vraag die u zich echt moet stellen, is wat u probeert te bereiken met uw database. Kijk dan welke database het beste bij je past. Als je een schaalbare, snelle winkeldatabase met sleutelwaarde nodig hebt, zou ik zeggen dat Aerospike waarschijnlijk de beste is die er is.
Laat het me weten als je specifieke vragen hebt of iets wilt verduidelijken. Ik zou je waarschijnlijk kunnen helpen.