Použil jsem Aerospike, MongoDB a Redis a testoval jsem mnoho dalších databází NoSQL. Řekl bych, že Aerospike je velmi dobrý v tom, co dělá, ale je jiný než MongoDB. Vše závisí na tom, k čemu databázi plánujete používat. Mohu vám dát příklad toho, k čemu používám své různé databáze. Mohu také projít rozdíly mezi nimi a diskutovat o výhodách Aerospike.
MongoDB
Používám MongoDB jako alternativu SQL. Ve své databázi MongoDB mám mnoho různých polí. Pole se často mění a náhodně se budu muset dotazovat na různá pole. Je to velmi nestrukturovaná databáze a MongoDB je v tom úžasný. MongoDB jsem také použil jako standardní úložiště klíč-hodnota. Funguje to dobře, ale nechal jsem MongoDB fungovat neoptimálně jak v měřítku transakcí, tak v měřítku velikosti databáze. Je pravda, že databáze mohla být optimalizována o něco lépe, ale je pro mě velmi těžké najít dokumentaci ke správné konfiguraci MongoDB v různých situacích.
Redis
Redis je čistý obchod s páry klíč–hodnota. Největší problém Redis je, že je čistě in-memory (bude používat disk jako zálohu, ale nemůžete uložit více informací, než máte k dispozici paměti). Na to, k čemu se používá, je extrémně rychlý. Osobně to používám pro malou transakční databázi:Dělám velmi jednoduché funkce na klíčích, jako je počítání, kolikrát se stala událost pro určitého uživatele. Provádím také rychlé vyhledávání v paměti, které potřebuji namapovat na různé hodnoty. Redis je skvělý nástroj pro malý soubor dat a je extrémně rychlý. Konfigurace je také velmi snadná.
Aerospike
Osobně používám Aerospike k nahrazení Redis, když je čas na škálování. Z mého chápání se dá použít na víc. Stejně jako Redis je i Aerospike obchod s hodnotou klíč-hodnota. Věřím, že edice s otevřeným zdrojovým kódem také podporuje sekundární indexy, což Redis nepodporuje (nepoužíval jsem sekundární indexy v produkci, ale málo jsem je testoval).
Nejlepší vlastností Aerospike je jeho schopnost škálování. Největší problém, který jsem při pohledu na Aerospike potřeboval vyřešit, bylo škálování mého systému tak, aby zpracovával velké soubory dat a přitom zůstal extrémně rychlý. Projekt, pro který používám Aerospike, má velmi přísné požadavky na rychlost. Obvykle provádím 3-4 vyhledávání v databázi plus další zpracování a potřebuji mít transakční časy pod 50 ms. Několik pohledů se týká datových sad, které mají 300 GB+. Nenašel jsem řešení, jak tato data uchovat a zpřístupnit je v rozumném čase. Redis samozřejmě nebude fungovat, pokud jsem neměl stroj, který měl 300 GB + RAM. MongoDB začal fungovat extrémně špatně při velikosti mnohem menší než 300 GB. Tak jsem dal Aerospike šanci, a ta si se vším poradila velmi dobře. Nejlepší věc na Aerospike:jak se moje datová sada rozrostla, nemusel jsem dělat o moc víc, než když bylo potřeba postavit novou krabici. Rychlost zůstala stejná.
Také dokumentaci Aerospikes považuji za velmi dobrou. Není příliš těžké konfigurovat a je docela snadné najít odpovědi na jakýkoli problém, který se objeví.
Závěr
Je tedy Aerospike tak dobrý, jak tvrdí? Osobně jsem neviděl nic menšího, než co se tvrdilo. Nemusel jsem škálovat na 1 milion TPS, ale věřím, že s dostatkem hardwaru by to bylo možné. Také věřím, že čísla ukazující rozdíl v rychlosti mezi Aerospike a MongoDB. Aerospike je mnohem „konfigurovanější“ a „plánovanější“ databáze než MongoDB. Díky tomu bude Aerospike v měřítku mnohem rychlejší než MongoDB. Musí se starat pouze o jediný (nebo v případě sekundárních indexů několik stovek) indexů na rozdíl od MongoDB, které se mohou dynamicky měnit. Otázkou, kterou si opravdu musíte položit, je to, čeho se snažíte pomocí své databáze dosáhnout. Poté se podívejte, která databáze bude nejlépe vyhovovat vašim potřebám. Pokud potřebujete škálovatelnou, rychlou databázi úložiště klíč-hodnota, řekl bych, že Aerospike je pravděpodobně nejlepší.
Pokud máte nějaké konkrétní dotazy nebo potřebujete něco objasnit, dejte mi vědět. Pravděpodobně bych vám byl schopen pomoci.