Quelqu'un peut-il dire si Aerospike est aussi bon qu'ils le prétendent? Je suis un peu sceptique car c'est une entreprise commerciale. Autant que je sache, ils viennent de publier une version open source, mais les affirmations sur leur site Web pourraient encore être exagérées.
Je suis particulièrement intéressé par la façon dont Aerospike se compare à MongoDB.
J'ai utilisé Aerospike, MongoDB et Redis et j'ai testé de nombreuses autres bases de données NoSQL. Je dirais que Aerospike est très bon dans ce qu'il fait, mais il est différent de MongoDB. Tout dépend de ce que vous prévoyez d'utiliser pour une base de données. Je peux vous donner un exemple de l'utilisation de mes différentes bases de données. Je peux également passer en revue les différences entre eux et discuter des avantages d'Aerospike.
MongoDB
J'utilise MongoDB comme alternative SQL. Dans ma base de données MongoDB, j'ai de nombreux domaines différents. Souvent, les champs changent et je devrai aléatoirement interroger différents champs. C'est une base de données très non structurée et MongoDB est incroyable à cela. J'ai également utilisé MongoDB comme magasin de valeurs-clés standard. Il fonctionne bien mais MongoDB fonctionne de manière sous-optimale à la fois à l'échelle des transactions et à la taille de la base de données. Certes, la base de données aurait pu être optimisée un peu mieux mais je trouve très difficile de trouver de la documentation sur la configuration correcte de MongoDB dans différentes situations.
Redis
Redis est un magasin de valeurs-clés pur. Le plus gros problème de Redis est qu'il est purement en mémoire (il utilisera le disque comme sauvegarde mais vous ne pouvez pas stocker plus d'informations que la mémoire disponible). Il est extrêmement rapide pour son utilisation. Je l'utilise personnellement pour une petite base de données transactionnelle: je fais des fonctions très simples sur des touches comme compter le nombre de fois qu'un événement s'est produit pour un certain utilisateur. Je fais également des recherches rapides en mémoire dont j'ai besoin mappées à différentes valeurs. Redis est un excellent outil pour un petit ensemble de données et il est extrêmement rapide. La configuration est également très simple.
Aerospike
Personnellement, j'utilise Aerospike pour remplacer Redis lorsqu'il est temps de passer à l'échelle. D'après ma compréhension, il peut être utilisé pour plus. Comme Redis, Aerospike est un magasin à valeur clé. Je crois que l'édition open source prend également en charge les index secondaires, ce que Redis ne fait pas (je n'ai pas utilisé d'index secondaires en production, mais j'ai fait peu de tests sur eux).
La meilleure caractéristique d'Aerospike est sa capacité à évoluer. Le plus gros problème que je devais résoudre en examinant Aerospike était la mise à l'échelle de mon système pour gérer de grands ensembles de données tout en restant extrêmement rapide. Le projet pour lequel j'utilise Aerospike a des exigences très strictes en matière de vitesse. Je fais généralement des recherches de base de données 3-4 ainsi que d'autres traitements et j'ai besoin d'avoir des temps de transaction inférieurs à 50 ms. Quelques recherches portent sur des ensembles de données de plus de 300 Go. Je n'ai pas pu trouver de solution pour conserver ces données et les rendre accessibles dans un délai raisonnable. Redis ne fonctionnera évidemment que si j'avais une machine qui avait 300 Go + de RAM. MongoDB a commencé à fonctionner extrêmement mal à une taille bien inférieure à 300 Go. J'ai donc donné un coup de feu à Aerospike, et il était capable de tout gérer très bien. La meilleure chose à propos d'Aerospike: au fur et à mesure que mon ensemble de données a augmenté, je n'ai pas eu à faire beaucoup plus que de monter une nouvelle boîte en cas de besoin. La vitesse est restée constante.
Je trouve également la documentation Aerospikes très bonne. Il n'est pas trop difficile à configurer et il est assez facile de trouver des réponses à tous les problèmes qui surviennent.
Conclusion
Donc, Aerospike est aussi bon qu'ils le prétendent? Personnellement, je n'ai rien vu de moins que ce qui a été revendiqué. Je n'ai pas eu à passer à 1 million de TPS, mais je pense qu'avec suffisamment de matériel cela serait possible. Je crois également que les chiffres montrent une différence de vitesse entre Aerospike et MongoDB. Aerospike est une base de données beaucoup plus "configurée" et "planifiée" que MongoDB. À cause de cela, Aerospike sera beaucoup plus rapide à l'échelle que MongoDB. Il n'a qu'à se soucier d'un seul (ou en cas d'indices secondaires, de quelques centaines) index contrairement à MongoDB qui peut changer dynamiquement. La question que vous devez vraiment vous poser est ce que vous essayez d'accomplir avec votre base de données. Recherchez ensuite la base de données qui répondra le mieux à vos besoins. Si vous avez besoin d'une base de données de magasin clé-valeur évolutive et rapide, je dirais que Aerospike est probablement le meilleur sur le marché.
Faites-moi savoir si vous avez des questions spécifiques ou si vous avez besoin de clarifier quoi que ce soit. Je serais probablement en mesure de vous aider.
Vitesse
Aerospike est plus rapide. Presque tous les systèmes seront rapides avec une faible charge ou un accès simple aux données, mais Aerospike est resté constamment rapide en optimisant les options de stockage en mémoire et sur SSD. Mongo est rapide lorsqu'il est utilisé avec beaucoup de RAM où pour la mise en cache mais est autrement lent et a de faibles performances d'écriture.
Fiabilité
Aerospike est très stable, bien qu'avec un accès aux données plus simple. MongoDB a toujours été problématique avec la persistance des données et le basculement, mais c'est beaucoup mieux maintenant. Parce qu'Aerospike a de meilleures performances et une gestion plus facile, elle entraîne moins de problèmes potentiels lors de la mise à l'échelle.
Installation/Configuration
Le clustering avec Aerospike est beaucoup plus facile à configurer car tous les nœuds sont identiques et les pilotes clients gèrent automatiquement les connexions et le basculement. MongoDB peut être plus facile si vous configurez un seul serveur car il s'exécute sur plusieurs plates-formes en mode natif et vous pouvez le démarrer sans aucune configuration.
MongoDB propose deux méthodes principales de clustering, les jeux de réplicas (pour la disponibilité) et le partage (pour l'évolutivité). Nous avions 5 fragments et chaque fragment avait un jeu de répliques de 3 serveurs. C'est 15 serveurs pour stocker des données. Ensuite, nous avions 3 serveurs de configuration qui maintenaient la configuration du cluster et devaient ajouter 2 processus d'arbitre après notre première panne majeure pour gérer correctement l'escalade d'un esclave à maître. Cela fait beaucoup de pièces en mouvement et rend également incroyablement difficile de changer votre mise en page à l'avenir.
En revanche, Aerospike a pris beaucoup moins d'efforts mais nécessite plus de configuration, dont la plupart ne peuvent pas être modifiés une fois que le cluster a démarré alors qu'avec MongoDB, vous pouvez créer et modifier des bases de données à tout moment.
Aerospike a la capacité de synchroniser plusieurs clusters (ce qui est compliqué à configurer) afin que vous puissiez avoir différents centres de données actifs répliquant les données et acceptant les écritures, ce que MongoDB ne prend pas du tout en charge.
Accès aux données
MongoDB a une base de données/collection/document où chaque document est juste json. Aerospike a un espace de noms/set/record où chaque enregistrement est une collection de "bins" de valeurs-clés, qui peuvent alors avoir des structures de clés/valeurs imbriquées. Les espaces de noms sont préconfigurés et ne sont pas dynamiques, et les noms des propriétés sont limités à 14 caractères, ce qui est ennuyeux à travailler.
Les deux ont des index secondaires bien que MongoDB vous permette d'interroger immédiatement n'importe quoi tandis qu'Aerospike nécessite une configuration d'index ou des scripts personnalisés. Les deux ont des cadres d'agrégation intégrés. Les clients Aerospike prennent en charge les scripts LUA mais MongoDB prend en charge les fonctions de réduction de carte et de javascript personnalisé.
Cela dépend vraiment de ce dont votre application a besoin, mais MongoDB gagne en flexibilité, en interrogation plus facile et en moins de restrictions.
Coût
Les deux sont maintenant open-source et gratuits. Les deux ont des versions d'entreprise avec des fonctionnalités supplémentaires, mais les licences sont chères si vous avez beaucoup de données. Aerospike pourrait être moins cher car il nécessite moins de machines pour les mêmes performances.
Globalement
Pour la plupart des scénarios, je recommanderais Aerospike. La sémantique et la flexibilité du stockage de documents de MongoDB sont excellentes, mais leur mise à l'échelle et leur maintenance en tant que base de données distribuée sont pénibles. Aerospike est rapide et fiable et peut fonctionner avec moins de nœuds plus faciles à mettre à l'échelle.
Octobre 2014: Aerospike propose désormais un programme spécial pour les startups qualifiées afin d'accéder gratuitement à la version entreprise.
Janvier 2016: MongoDB a publié MongoDB Cloud Manager qui est un service payant SaaS qui peut provisionner et gérer vos clusters. Cela résout une grande partie des problèmes de configuration de Mongo.
Mars 2017: Les deux bases de données ont parcouru un long chemin. Aerospike a désormais une réplication plus rapide et des paramètres de configuration plus flexibles sans redémarrer l'ensemble du cluster. MongoDB a une nouvelle application de schéma, de meilleures performances et prend même en charge les jointures avec MongoDB Atlas service géré pour éliminer tous les problèmes de mise à l'échelle.
Je recommande maintenant vivement ScyllaDB qui est une base de données open-source compatible Cassandra avec des performances incroyables, une réplication multi-centre de données et aucune limites d'utilisation.
J'ai utilisé MongoDB (2.4) et Aerospike 3 dans nos systèmes de production. Ce sont les quelques observations trouvées par notre équipe: -
1) le débit de lecture/écriture par Aerospike est imbattable. Habituellement, Mongo db fonctionne jusqu'à une certaine échelle si les demandes de lecture sont de niveau supérieur. Si vous avez besoin d'un taux de lecture/écriture simultané de 95/5%, Mongo se dégrade comme tout. Avec Aerospike, nous avons vu très peu d'impact même si ce ratio est de 90/10. Sur AWS, nous avons atteint 200k TPS en utilisant Aerospike.
2) En Aerospike, la latence est très faible. La latence de lecture était inférieure à la milliseconde pour 99 centile côté serveur. La latence en écriture était inférieure à la milliseconde pour 80 centile et à moins de 8 ms pour 100 centile. La meilleure chose était que nous avons obtenu un nombre presque similaire dans différents POC, donc des performances cohérentes.
3) Très peu de nœuds sont suffisants dans le cluster Aerospike par rapport à d'autres solutions. Le stockage de données basé sur SSD donne également des chiffres assez impressionnants, donc très rentables et peu de frais de maintenance.
4) Maintenant Aerospike est open source, alors espérez un soutien communautaire plus large :-)
Nous utilisons donc Aerospike pour tous les nouveaux systèmes et essayons de migrer de MongoDB.