经历了Google的一些资源和堆栈溢出(如下所述)后,我对何时使用什么有了一个高水平的了解,但是 也有几个问题
我的理解:
用作纯内存数据库时,两个数据库的性能均相当。但是对于大数据,即完整的数据集 无法适合内存或即使适合(但会增加成本),AS(aerospike)可能会很适合 可以将索引保留在内存中以及将数据保留在SSD中的模式。我相信性能会有所下降(相比于完全在内存中 db(虽然AS处理SSD的读/写方式),但它比传统的磁盘I / O更快(但可以节省成本并提供性能) 然后完成磁盘上的数据。因此,当完整的数据可以放入内存中时 同样好,但是当内存受到限制时,AS可能是个好例子。是吗?
也可以说,AS提供了丰富且易于设置的群集功能,而redis中的某些群集功能则需要 在申请时处理。它是否仍然保持良好状态,还是直到几年前都是如此(我相信,所以我认为redis也提供了聚类功能 功能)?
How is aerospike different from other key-value nosql databases?
What are the use cases where Redis is preferred to Aerospike?
答案 0 :(得分:0)
您在(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)的方面是,如果将Inreality部署在多台服务器上,而每台服务器上都具有多个Redis实例,则Redis的单个实例的性能会产生误导。 Redis并不是Aerospike那样的分布式数据库-它需要应用程序侧分片(这会成为群集和水平扩展的噩梦)或单独的代理,而代理往往会成为瓶颈。单个分片每秒可以完成一百万次操作,这非常好,但是如果代理无法处理合并的吞吐量,并且无法与分片争夺CPU和内存,那么在规模范围内的性能将不仅仅是内存与内存之间的竞争。 SSD上的数据。
除非您要查看的对象数量很少或数据量很少,否则您应该将自己与概念验证测试进行比较。