在浏览了 Google 上的一些资源和堆栈溢出(如下所述)之后,我对何时使用但
也有几个问题
我的理解 :
不能放入内存中,或者即使它可以放入(但会增加成本),AS(aerospike) 可以很好地适应,因为它提供了
索引可以保存在内存中而数据可以保存在SSD中的模式。我相信性能会有所下降(与完全在内存中相比
db 虽然 AS 处理从 SSD 读取/写入的方式,但它比传统的磁盘 I/O 更快)但节省了成本并提供了性能
然后完成磁盘上的数据。因此,当完整的数据可以放入内存时,两者都可以
同样好,但是当内存受到限制时,AS 可能是很好的情况。是对的吗 ?
申请时处理。它仍然保持良好还是直到几年前仍然如此(我相信,正如我所看到的,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 数据时会发生什么?您是否想尝试将这些数据放入一个非常昂贵且难以管理的包含许多节点的完全内存系统中?现代机器可以存储比内存多得多的 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 上的数据。
除非您正在查看少量对象或少量不太可能增长的数据,否则您可能应该通过概念验证测试亲自比较两者。
关于Redis 与 Aerospike 用例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56305522/