Използвал съм Aerospike, MongoDB и Redis и съм тествал много други NoSQL бази данни. Бих казал, че Aerospike е много добър в това, което прави, но е различен от MongoDB. Всичко зависи от това за какво планирате да използвате база данни. Мога да ви дам пример за какво използвам различните си бази данни. Мога също така да прегледам разликите между тях и да обсъдя ползите от Aerospike.
MongoDB
Използвам MongoDB като SQL алтернатива. В моята база данни MongoDB имам много различни полета. Често полетата се променят и произволно ще трябва да правя заявки в различни полета. Това е много неструктурирана база данни и MongoDB е невероятна в това. Също така съм използвал MongoDB като стандартно хранилище за ключ-стойност. Представя се добре, но съм накарал MongoDB да работи под оптимално както в мащаба на транзакциите, така и в мащаба на размера на базата данни. Вярно е, че базата данни може да е оптимизирана малко по-добре, но ми е много трудно да намеря документация за правилно конфигуриране на MongoDB в различни ситуации.
Redis
Redis е чисто хранилище за ключ-стойност. Най-големият проблем на Redis е, че той е изцяло в паметта (ще използва диск като резервно копие, но не можете да съхранявате повече информация, отколкото имате налична памет). Той е изключително бърз за това, за което се използва. Аз лично го използвам за малка транзакционна база данни:правя много прости функции на ключове като преброяване колко пъти се е случило събитие за определен потребител. Също така правя бързи справки в паметта, които трябва да бъдат съпоставени с различни стойности. Redis е чудесен инструмент за малък набор от данни и е изключително бърз. Конфигурирането също е много лесно.
Aerospike
Аз лично използвам Aerospike, за да заменя Redis, когато дойде време за мащабиране. Доколкото разбирам, може да се използва за повече. Подобно на Redis, Aerospike е магазин за ключови стойности. Вярвам, че изданието с отворен код поддържа и вторични индекси, които Redis не поддържа (не съм използвал вторични индекси в производството, но съм ги тествал малко).
Най-добрата характеристика на Aerospike е способността му да мащабира. Най-големият проблем, който трябваше да разреша, когато разглеждах Aerospike, беше мащабирането на моята система, за да обработва големи набори от данни, като същевременно остава изключително бърза. Проектът, за който използвам Aerospike, има много строги изисквания за скорост. Обикновено правя 3-4 търсения в база данни плюс друга обработка и трябва да имам време за транзакция под 50 ms. Няколко справки са върху набори от данни, които са над 300 GB. Не можах да намеря решение да запазя тези данни и да ги направя достъпни в разумен период от време. Redis очевидно няма да работи, освен ако нямам машина, която има 300GB+ RAM. MongoDB започна да се представя изключително слабо при размер, много по-малък от 300 GB. Така че пробвах Aerospike и той успя да се справи много добре с всичко. Най-доброто нещо за Aerospike:тъй като моят набор от данни нарасна, не ми се е налагало да правя много повече от изправяне на нова кутия, когато е необходимо. Скоростта остана постоянна.
Също така намирам документацията на Aerospikes за много добра. Не е много трудно да се конфигурира и е доста лесно да се намерят отговори за всеки възникнал проблем.
Заключение
И така, дали Aerospike е толкова добър, колкото твърдят? Лично аз не съм виждал нищо по-малко от това, което се твърди. Не ми се е налагало да мащабирам до 1 милион TPS, но вярвам, че с достатъчно хардуер това би било възможно. Също така вярвам на числата, показващи разлика в скоростта между Aerospike и MongoDB. Aerospike е много по-„конфигурирана“ и „планирана“ база данни от MongoDB. Поради това Aerospike ще бъде много по-бърз в мащаб от MongoDB. Трябва да се тревожи само за един (или в случай на вторични индекси, няколкостотин) индекса, за разлика от MongoDB, който може да се променя динамично. Въпросът, който наистина трябва да зададете, е какво се опитвате да постигнете с вашата база данни. След това потърсете коя база данни ще отговаря най-добре на вашите нужди. Ако имате нужда от мащабируема, бърза база данни за съхранение на ключ-стойност, бих казал, че Aerospike е може би най-добрият там.
Уведомете ме, ако имате конкретни въпроси или имате нужда от изясняване на нещо. Вероятно бих могъл да ви помогна.