首页 > 解决方案 > Redis vs Aerospike 用例?

问题描述

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

我的理解 :

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

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

aerospike 与其他 key-value nosql 数据库有何不同?

Redis 优于 Aerospike 的用例有哪些?

标签: redisaerospike

解决方案


您在 (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 那样是分布式数据库——它需要应用程序端分片(这有点像集群和水平扩展的噩梦)或单独的代理,这通常最终成为瓶颈。单个分片每秒可以执行一百万次操作真是太好了,但是如果代理无法处理组合吞吐量,并且与分片竞争 CPU 和内存,那么在规模图片上的性能不仅仅是内存中的与SSD 上的数据。

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


推荐阅读