web-dev-qa-db-fra.com

Comparaison: Aerospike vs Cassandra

Aerospike et Cassandra dit qu'ils sont meilleurs que les autres dans leurs propres benchmarks respectifs.

Référence: http://Java.dzone.com/articles/benchmarking-cassandra-right et quelques autres.

Quelqu'un a-t-il utilisé les deux ?
Aerospike est-il aussi bon que ce que l'on prétend?
Enfin, est-il conseillé de remplacer Cassandra par Aerospike ?

38
holmes840

Choisir entre Cassandra et Aerospike dépend vraiment de votre cas d'utilisation plus que tout. J'ai personnellement utilisé à la fois comme système de production pour le même projet et pour moi, Aerospike a été le gagnant clair, mais c'est parce que notre utilisation Le cas est d'avoir des mises à jour transactionnelles, à faible latence, hautement concurrentes, de petites mises à jour de milliards d'entrées avec ~ 10 fois plus de volume de lecture que d'écriture. C'est ce qu'Aerospike excelle, il a la latence minimale que j'ai jamais vue dans une base de données de ce type, même lors de l'utilisation d'un espace de noms SSD. Pour ces raisons, Aerospike était le choix évident pour nous.

D'un autre côté, Cassandra est meilleur pour un volume d'écriture élevé et peut gérer des enregistrements plus importants. Tout est basé sur les pages, donc il fonctionne bien sur les non-SSD mais ne peut jamais vous donner la latence extrêmement faible qu'Aerospike peut à moins que vos enregistrements ne rentrent dans le cache. Il convient également de noter que Cassandra est beaucoup plus difficile à maintenir du point de vue des opérations que Aerospike. Pour nous personnellement, ce fut un cauchemar d'opérations et je sais que Netflix doit employer une importante équipe d'ingénieurs des opérations uniquement pour gérer leurs Cassandra clusters. De plus, même si le système a peut-être mûri davantage maintenant, lorsque nous l'utilisions (autour de la version 1.0), nous frappions d'étranges erreurs et exceptions d'affirmation occasionnelles qui empêchent les actions de base de données internes d'avoir lieu et devaient généralement effacer les données de ces nœuds afin de les corriger à chaque fois.

Un autre facteur ici est le coût qui peut ou non jouer dans votre décision en fonction de votre demande. Plus l'espace de touches est grand, plus votre cluster Aerospike sera cher du point de vue matériel. Toutes les clés doivent être stockées en mémoire, qu'il s'agisse d'un espace de noms en mémoire ou SSD. Une fois que vous entrez dans la plage de milliards de clés, vous aurez besoin de téraoctets de RAM dans votre cluster pour prendre en charge cela avec un facteur de réplication de 2. Cassandra n'a évidemment pas ce problème car les clés et les valeurs sont les deux stockent sur le disque.

Pour répondre à vos 2 autres questions, oui, c'est aussi bon qu'il le prétend, nous stockons environ 5B clés et faisons ~ 1M TPS à la charge de pointe et il le fait sans transpirer (bien qu'il faut près de 20 nœuds par cluster pour le faire avec 120 Go de RAM chacun). Et quant à est-il conseillé de remplacer Cassandra par Aerospike, pour nous, c'était une victoire définitive et la bonne décision. Si votre application correspond à la conception d'Aerospike et qu'elle s'avère rentable, alors il est certainement conseillé de faire le changement. Quand il s'agit de votre cas d'utilisation. Si vous ne savez pas lequel vous convient le mieux, essayez-les tous les deux et voyez comment ils se déroulent. Bonne chance.

Éditer:

L'une des raisons pour lesquelles nous choisissons actuellement Cassandra par rapport à Aerospike est lorsque les applications ont besoin de certaines garanties de cohérence. Pour des applications telles que les compteurs par exemple, Aerospike peut devenir dans un état incohérent en raison d'une partition réseau alors que = Cassandra en est capable grâce à l'utilisation de types de données répliqués sans conflit (CRDT). Sur un bon réseau et aussi pour de nombreux cas d'utilisation en général, ce n'est pas un problème, mais comme indiqué précédemment, le les performances d'Aerospike sont imbattables et c'est généralement la raison pour laquelle il est choisi.

Modifier 2:

Aerospike v4 a maintenant introduit sa version d'un mode cohérent (vérifié par Jepsen: https://jepsen.io/analyses/aerospike-3-99-0- ). De plus, Aerospike l'a mis en œuvre grâce à une forte cohérence, tandis que Cassandra n'a qu'une cohérence éventuelle grâce à l'utilisation de CRDT, il est donc toujours possible de lire des données périmées. Également à partir de tests personnels, je peux dire que les performances pendant le fonctionnement normal n'a pas souffert pour notre cas d'utilisation lors de l'utilisation de leur mode fortement cohérent.

63
user1084563

Si vous avez besoin de performances prévisibles stables avec une faible latence et sans souci de maintenance, optez pour Aerospike. Vous voulez jouer à des jeux, allez Cassandra. J'ai apporté Cassandra il y a plus de 4 ans à mon entreprise sans regret, mais aujourd'hui pour les raisons ci-dessus je choisis Aerospike, qui est open source et plus disponible qu'il y a un an et biult comme un char russe - avec raison.

Il vous suffit de connaître les limites des deux plates-formes. Jouez avec les deux, choisissez judicieusement.

14
Viktor Jevdokimov

Les deux produits dépendent du cas d'utilisation que vous utilisez, mais je n'hésiterais certainement pas à dire que Aerospike peut évoluer mieux que Cassandra et de manière rentable avec les SSD et ayant moins de nœuds à maintenir.

En outre, en ce qui concerne l'utilisation de la mémoire avec un grand nombre de clés dans Aerospike, vous pouvez regrouper vos enregistrements dans différents ensembles/bacs dans votre espace de noms, par exemple, si vous avez 10 milliards d'enregistrements, vous pouvez le regrouper en 5 ensembles et 5 bacs à l'intérieur de l'espace de noms ayant une valeur de hachage pour les clés, qui servirait de valeur de recherche. Ainsi, vous ne pouvez avoir que 2 milliards d'enregistrements dans l'espace de noms et cela réduirait votre nombre de clés en mémoire.

9
Anand Prakash

Bien que de nombreuses personnes déploient Aerospike en tant que base de données pure en mémoire, il prend également en charge une configuration de mémoire hybride, répartissant la base de données sur la RAM, le SSD/Flash et le disque tournant. Voici quelques liens à réponse courte et plus longue pour résoudre le problème. Certes, les gens veulent le meilleur des deux mondes: des données plus persistantes stockées sur un disque moins cher et des données plus rapides et plus éphémères stockées dans plus cher par Go RAM ou SSD.

http://www.aerospike.com/hybrid-memory/

http://www.aerospike.com/docs/architecture/storage.html

Je serais impatient d'entendre des commentaires sur l'expérience des gens en termes de tels déploiements.

9
Peter Corless