Redis 与 Aerospike 用例?

emi*_*lly 3 redis aerospike

在浏览了 Google 上的一些资源和堆栈溢出(如下所述)之后,我对何时使用什么有了高层次的理解,但也有几个问题

我的理解 :

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

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

aerospike 与其他键值 nosql 数据库有何不同?

Redis 比 Aerospike 更受欢迎的用例是什么?

Ron*_*zer 6

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

Aerospike 在现实世界中的集群中使用,这些集群已经增长到数百 TB 甚至 PB 的数据(数百到数千亿对象),每秒提供数百万次操作,并且仍然达到亚毫秒到个位数毫秒的延迟. 有关该主题的多次讨论,请参阅https://www.aerospike.com/summit/

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

除非您正在查看少量对象或少量不太可能增长的数据,否则您可能应该通过概念验证测试亲自比较两者。