Redis 与 Aerospike 用例?

Redis vs Aerospike usecases?

在浏览了关于 Google 和堆栈溢出(如下所述)的一些资源后,我对何时使用什么有了更深入的了解,但是 我也有几个问题

我的理解:

  1. 当用作纯内存数据库时,两者具有相当的性能。但是对于完整的完整数据集的大数据 无法放入内存或即使它可以放入(但它会增加成本),AS(aerospike)可以很好地适应它提供的 索引可以保存在内存中,数据保存在SSD中的模式。我相信性能会有所下降(与完全在内存中相比 db 虽然 AS 处理来自 SSD 的 read/write 的方式,但它比传统磁盘 I/O) 更快,但节省了成本并提供了性能 然后在磁盘上完成数据。因此,当完整的数据可以放入内存时,两者都可以 同样好,但是当内存受限时,AS 可能是个好例子。对吗?

  2. 另外据说AS提供了丰富且易于设置的集群功能,而redis中的一些集群功能需要 在应用程序处理。它仍然有效还是直到几年前都是如此(我相信,因为我看到redis也提供了集群 功能)?

How is aerospike different from other key-value nosql databases?

What are the use cases where Redis is preferred to Aerospike?

您在 (1) 中的假设是错误的,因为它适用于(大部分)所有数据都适合内存的合成情况。当您的系统增长到数 TB 甚至数 PB 的数据时会发生什么?您是否想尝试将这些数据放入一个非常昂贵、难以完全管理且包含许多节点的 in-memory 系统中?现代机器可以存储比内存多得多的 SSD/NVMe 个驱动器。如果您查看 Amazon EC2 的新 i3en 实例系列类型,i3en.24xl 具有 768G RAM 和 60TB NVMe 存储(8 x 7.5TB)。这种机器与 Aerospike 配合得很好,因为它只将索引存储在内存中。非常大量的数据可以存储在这样密集节点的小型集群上,并且性能非常好。

Aerospike 在现实世界中使用的集群已经增长到数百 TB 甚至 PB 的数据(数百到数千亿个对象),服务于数百万次操作per-second,并且仍然达到sub-millisecond 到一位数毫秒的延迟。请参阅 https://www.aerospike.com/summit/ 了解有关该主题的多个讨论。

影响 (1) 的另一个方面是,如果 in-reality 您将部署在多个服务器上,每个服务器上都有多个 Redis 实例,那么单个 Redis 实例的性能会产生误导。 Redis 不像 Aerospike 那样是分布式数据库 - 它需要 application-side 分片(这有点像集群和水平扩展的噩梦)或单独的代理,这通常最终成为瓶颈。单个分片可以执行一百万次操作per-second,这很棒,但如果代理无法处理合并的吞吐量,并与分片竞争 CPU 和内存,那么大规模图片的性能还有更多不仅仅是 in-memory 与 SSD 上的数据。

除非您查看的是极少量的对象或少量不太可能增长的数据,否则您可能应该通过 proof-of-concept 测试自己比较两者。