比较:Aerospike vs Cassandra

hol*_*840 38 cassandra nosql aerospike

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

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

有没有人同时使用它们
Aerospike和声称的一样好吗?
最后是否建议用Aerospike取代Cassandra

use*_*563 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实现了最终的一致性,因此仍然可以读取过时的数据.另外,从个人测试中我可以说,在使用强一致模式时,正常操作期间的性能不会因我们的用例而受到影响.

  • 2012年,NetFlix有3人管理30个Cassandra集群,其中12个跨越多个DC.从那时起,他们增加了更多的集群,员工与集群的比例只有提高.Cassandra真的可以成为数据中心最无聊的系统,几乎不需要维护. (7认同)
  • 谢谢 !我正在寻找的一些重点.减少运营开销会很棒.保持cassandra真的很难.我想我们会试试aerospike.干杯! (3认同)
  • 很有意思,谢谢.从愤怒地使用过东西的人那里听到的信息是非常有价值的. (2认同)
  • 您遇到什么问题支持Cassandra,使其成为"操作噩梦"?我走向卡桑德拉路,所以我想知道.:) (2认同)
  • 没人提到Cassandra的列数据存储优势.如果您的用例是大型时间序列的批量查询,Cassandra是一种完美且非常经济的方式,因为它不需要超级昂贵的SSD来为您提供高速访问时间序列范围.在此键值存储模型*可*的工作,但你在通过固态硬盘的随机存取优化/ RAM,你不需要像这一系列的数据花费不计其数.我们每秒可以获得10k ticks的金融市场数据,我可以保证,当查询通常是列时,我不想支付RAM来索引. (2认同)
  • 从2016年6月开始,没有人提到过Cassandra和Aerospike都运行了12个小时的基准.与#Cassandra 3.5相比,Aerospike的吞吐量提高了14倍,读取延迟降低了42倍.因此,基本上使用Aerospike,你可以将你的群集大小减少14倍,并避免与Cassandra谈论很多的调整和devops噩梦. (2认同)

Vik*_*mov 14

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

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

  • 谢谢 !我们一直在使用Cassandra并且已经了解它的优点和缺点.我们将尝试Aerospike,然后做出决定. (2认同)

小智 10

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

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

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

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


小智 9

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

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