Aerospike 和 Cassandra 都表示,他们在各自的基准测试中都比对方更好。
参考: http: //java.dzone.com/articles/benchmarking-cassandra-right 和其他一些。
有人用过这两个吗?
Aerospike 是否像声称的那样好?
最后是否建议用 Aerospike 替换 Cassandra?
Aerospike 和 Cassandra 都表示,他们在各自的基准测试中都比对方更好。
参考: http: //java.dzone.com/articles/benchmarking-cassandra-right 和其他一些。
有人用过这两个吗?
Aerospike 是否像声称的那样好?
最后是否建议用 Aerospike 替换 Cassandra?
在 Cassandra 和 Aerospike 之间进行选择实际上取决于您的用例。我个人将这两种系统都用作同一个项目的生产系统,对我来说 Aerospike 是明显的赢家,但那是因为我们的用例是对数十亿个条目进行高度并发、低延迟、事务性的小更新,读取量比它多 10 倍写卷。这就是 Aerospike 擅长的地方,即使在使用 SSD 命名空间时,它也具有我在同类数据库中见过的最小延迟。由于这些原因,Aerospike 是我们的明确选择。
另一方面,Cassandra 更适合高写入量并且可以处理更大的记录。一切都是基于页面的,因此它在非 SSD 上运行良好,但永远无法为您提供 Aerospike 可以提供的极低延迟,除非您的记录适合缓存。同样值得注意的是,从运营角度来看,Cassandra 比 Aerospike 更难维护。对我们个人而言,这是一场运营噩梦,我知道 Netflix 必须雇佣一个庞大的运营工程师团队来管理他们的 Cassandra 集群。此外,虽然系统现在可能已经更加成熟,但当我们使用它时(大约 1.0 版本),我们会遇到奇怪的偶尔断言错误和异常,这些错误和异常会阻止内部数据库操作的发生,并且通常不得不从这些节点中擦除数据为了每次都修复它。
这里的另一个因素是成本,这可能会或可能不会影响您的决定,具体取决于您的应用程序。从硬件的角度来看,密钥空间越大,您的 Aerospike 集群就越昂贵。无论是内存中还是 ssd 命名空间,所有键都需要存储在内存中。一旦进入数十亿键范围,您将需要集群中 TB 的内存来支持复制因子为 2 的情况。Cassandra 显然没有这个问题,因为键和值都存储在磁盘上。
要回答您的第二个问题,是的,它和它声称的一样好,我们存储了大约 5B 个密钥并在峰值负载下执行约 1M TPS,并且它毫不费力地做到了(尽管每个集群需要近 20 个节点才能做到这一点)每个 120GB 内存)。至于用 Aerospike 代替 Cassandra 是否可取,对我们来说,这是一个明确的胜利和正确的决定。如果您的应用程序符合 Aerospike 的设计并且它具有成本效益,那么绝对建议进行切换。归根结底,尽管它与您的用例有关。如果不清楚哪一个更适合您,请同时尝试它们,看看它们如何发挥作用。祝你好运。
编辑:
目前选择 Cassandra 而不是 Aerospike 的原因之一是应用程序需要某些一致性保证。例如,对于计数器等应用程序,Aerospike 可能会由于网络分区而处于不一致状态,而 Cassandra 则可以通过使用无冲突复制数据类型 (CRDT) 来实现这些。在良好的网络上以及对于许多一般用例而言,这不是问题,但如前所述,Aerospike 的性能无法被击败,这通常是选择它的原因。
编辑2:
Aerospike v4 现在已经引入了他们的一致模式版本(由 Jepsen 验证:https ://jepsen.io/analysiss/aerospike-3-99-0-3 )。此外,Aerospike 通过强一致性实现了它,而 Cassandra 仅通过使用 CRDT 才具有最终一致性,因此仍然可以读取过时的数据。同样从个人测试来看,我可以说在使用强一致性模式时,我们的用例在正常操作期间的性能并没有受到影响。
如果您需要具有低延迟且易于维护的稳定可预测性能,请选择 Aerospike。想玩游戏,就去Cassandra。4 多年前,我毫不后悔地将 Cassandra 带到了我的公司,但今天出于上述原因,我选择了 Aerospike,它是开源的,比一年前更可用,并且像俄罗斯坦克一样运行 - 有道理。
你只需要知道这两个平台的限制。两者都玩,明智地选择。
虽然许多人将 Aerospike 部署为纯内存数据库,但它也支持混合内存配置,将数据库分布在 RAM、SSD/闪存和旋转磁盘上。这里有一些简短和更长的答案链接来解决这个问题。当然,人们想要两全其美:更多持久性数据存储在更便宜的磁盘上,更快、更多临时数据存储在每 GB 更昂贵的 RAM 或 SSD 中。
https://www.aerospike.com/products/features/hybrid-memory-architecture/
http://www.aerospike.com/docs/architecture/storage.html
我很想听听人们在这种部署方面的经验反馈。
这两种产品都取决于您使用的用例,但我肯定会毫不犹豫地说,Aerospike 可以比 Cassandra 更好地扩展,并且以具有成本效益的方式使用 SSD 并且需要维护的节点数量更少。
此外,关于 Aerospike 中大量键的内存使用情况,您可以将记录存储在命名空间中的不同集合/bin 中,例如,如果您有 100 亿条记录,那么您可以将其存储在命名空间内的 5 个集合和 5 个 bin 中具有键的哈希值,这将用作查找值。因此,命名空间中只能有 20 亿条记录,这将减少内存中的键数量。