比较:Aerospike vs Cassandra

时间:2014-08-22 09:37:39

标签: cassandra aerospike nosql

Aerospike和Cassandra都说他们在各自的基准测试中都比其他人好。

参考:http://java.dzone.com/articles/benchmarking-cassandra-right和其他几个。

有没有人同时使用这两种
Aerospike和声称的一样好吗? 最后,建议用Aerospike替换Cassandra

4 个答案:

答案 0 :(得分:63)

Cassandra和Aerospike之间的选择真的取决于你的用例。我亲自将两者都用作同一项目的生产系统,对我而言,Aerospike是明显的赢家,但这是因为我们的用例是对数十亿条目进行高度并发,低延迟,事务性,小更新〜读取量比写入量多10倍。这就是Aerospike所擅长的,它具有我在同类数据库中所见过的最小延迟,即使在使用SSD命名空间时也是如此。出于这些原因,Aerospike是我们的明智选择。

另一方面,Cassandra更适合高写入量并且可以处理更大的记录。一切都是基于页面的,因此它在非SSD上运行良好,但除非您的记录适合缓存,否则永远不会给您Aerospike所能达到的极低延迟。值得注意的是,从运营的角度来看,Cassandra比Aerospike更难维护。对我们个人而言,这是一次操作噩梦,我知道Netflix必须雇佣一支庞大的运营工程师团队来管理他们的Cassandra集群。此外,虽然系统可能已经成熟了,但是当我们使用它时(大约1.0版本),我们会遇到奇怪的偶然的断言错误和异常,这些错误和异常会阻止内部数据库操作发生,并且通常不得不擦除这些节点中的数据。为了每次都修复它。

此处的另一个因素是成本,根据您的申请,可能会或可能不会影响您的决定。密钥空间越大,从硬件角度来看,Aerospike集群的成本就越高。无论是内存还是ssd命名空间,所有密钥都需要存储在内存中。一旦你进入数十亿的密钥范围,你的集群中将需要数TB的ram来支持复制因子为2. Cassandra显然没有这个问题,因为密钥和值都是磁盘上的存储。

要回答你的第二个2个问题,是的它和它声称的一样好,我们存储了大约5B键并在峰值负载时做了〜1M TPS并且它没有出汗(尽管每个簇需要近20个节点)这样做每个120GB内存)。至于用Aerospike替换Cassandra是否明智,对我们来说这是一个明确的胜利和正确的决定。如果你的应用程序符合Aerospike的设计并且它的成本效益很高,那么绝对建议进行切换。当它涉及到它虽然它关于你的用例。如果不清楚哪一个更适合你,那么试试它们,看看它们是如何发挥出来的。祝你好运。

编辑:

目前选择Cassandra而非Aerospike的原因之一是应用程序需要某些一致性保证。例如,对于诸如计数器之类的应用程序,由于网络分区,Aerospike可能会处于不一致状态,而Cassandra可以通过使用无冲突复制数据类型(CRDT)来实现这些状态。在一个良好的网络上以及一般的许多用例中,这不是一个问题,但如前所述,Aerospike的性能不能被打败,这通常是为什么选择它。

编辑2:

Aerospike v4现在已经推出了他们的一致模式版本(由Jepsen验证:https://jepsen.io/analyses/aerospike-3-99-0-3)。此外,Aerospike通过强大的一致性实现了它,而Cassandra通过使用CRDT只具有最终的一致性,因此它仍然可以读取过时的数据。另外,从个人测试中我可以说,在使用强一致模式时,正常操作期间的性能不会因我们的用例而受到影响。

答案 1 :(得分:14)

如果您需要稳定可预测的性能,低延迟且无需维护,请使用Aerospike。想玩游戏,去卡桑德拉。我在4年多前将Cassandra带到我的公司并没有后悔,但今天由于上述原因,我选择了Aerospike,这是一个开源的,比一年前更多的可用和biult像俄罗斯坦克 - 有理由。

您只需了解两个平台的限制即可。与两者一起玩,明智地选择。

答案 2 :(得分:9)

这两种产品都取决于您使用的用例,但我绝对会毫不犹豫地说,Aerospike可以比Cassandra更好地扩展,并且以经济高效的方式使用SSD并且维护节点数量更少。

此外,关于Aerospike中大量键的内存使用情况,您可以将记录存储在命名空间中的不同集合/箱中,例如,如果您有100亿条记录,那么您可以将其分为5组和5组在命名空间内的bin具有对键的哈希值,其将用作查找值。因此,在命名空间中只能有20亿条记录,这会减少内存中的密钥数量。

答案 3 :(得分:9)

虽然许多人将Aerospike部署为纯内存数据库,但它还支持混合内存配置,将数据库分布在RAM,SSD / Flash和旋转磁盘上。以下是一些解决此问题的简短答案。当然,人们希望两全其美:存储在更便宜的磁盘上的更持久的数据,以及更快,更短暂的数据存储在更昂贵的每GB RAM或SSD中。

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

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

我非常渴望听到民间在此类部署方面的经验反馈。