53

Aerospike是一个键值对、内存中、可操作的 NoSQL 数据库,具有支持复杂对象和易于扩展的 ACID 属性。但是我已经使用了完全相同的东西。

Redis也是一个键值对、内存中(但持久于磁盘)的 NoSQL 数据库。它还支持不同的复杂对象。但与 Aerospike 相比,Redis 已经使用了很长时间,已经有一个活跃的社区,并且在其中开发了很多项目。

那么aerospike和redis等其他no-sql键值数据库有什么区别。有没有更适合aerospike的特定地方。

PS我正在寻找在现实世界中至少使用过这些数据库中的一个(最好是两者)并拥有现实生活经验(而不是从官方网站复制粘贴)的人的答案。

4

5 回答 5

54

如果必须用一个词来回答,那就是它的“性能”。Aerospike 的性能比任何集群的 nosql 解决方案都要好得多。每个节点更高的性能意味着更小的集群,即更低的 TCO(总拥有成本)和维护。Aerospike 执行自动集群、自动分片、自动重新平衡(当集群状态发生变化时),其中大部分需要在其他数据库中手动执行。

我说“集群”是因为我不想在该组中混合使用 redis(尽管 redis 集群处于测试阶段)。Aerospike 和 redis 的纯内存性能将具有可比性。但是 Redis 期望在应用层处理很多事情,比如分片、请求重定向等。即使 redis 有一种持久化方式(快照或 AOF),它也有自己的问题,因为它的设计更像是一个插件。Aerospike 在本地开发时考虑到了持久性。redis 的集群还涉及到设置主从等。您可能想看看这个谈话比较和对比 redis 与 aerospike。

于 2014-06-30T15:29:21.637 回答
34

我使用 Redis 已经很多年了,并且由于很多原因才刚刚开始使用 Aerospike 作为它的替代品。

虽然 Redis 和 Aerospike 的性能都很好,但 Redis 的主要问题是它只将数据存储在内存中,并且没有正式发布的集群解决方案。它将数据库的大小限制为服务器的 RAM 大小,而 Aerospike 可以配置为使用 SSD 来存储信息而完全没有速度损失。Aerospike 延迟非常低,即使读取/写入吞吐量很高。

Aerospike 最适合我,因为它能够随性能而扩展,而且无需付出任何努力,而且与 Redis 不同的是,它还旨在完全持久化您的数据,从而在任何情况下最大限度地减少数据丢失。他们发布了一段精彩的视频,展示了扩展和管理 Aerospike 集群是多么容易,以及它如何在出现“灾难”情况时自动进行自我配置。

于 2014-10-14T00:41:45.013 回答
17

令人惊讶的是,Redis 是最受欢迎的内存数据库之一,3 个月前还没有自动分片。他们最近添加了此功能。Redi 3.0 具有自动分片功能。

AS 通过具有快速重启功能支持自动集群,其中所有索引都被持久化而不会增加吞吐量,并且可以在几分钟内启动数据库(例如,可以在几分钟内启动 50 TB 的数据库大小.)。所有这些都可以在商品硬件上实现。添加容量只不过是在集群中添加一个新节点。适用于数据中心和云环境,最重要的是它适用于任何本地环境。

支持在线配对(管理需求和供应)。

No-SQL 数据库必须处理实时用例,以满足当今广告界、在线购物门户、OLA cab 等物流服务提供商所需的激进 SLA(识别准备好上车且可以到达的最近出租车5 分钟内的客户在 <3 毫秒内计算)、在线投标应用程序(在 <3 毫秒内完成 AdBid 的准确率为 99.7%)、欺诈检测系统等需要在 <5 毫秒(毫秒)内识别恶意用户.

  • Aerospike 符合记录级别的 ACID,这对于大多数 No-SQL 数据库都是如此。
  • Aerospike 专为集群环境而设计,
  • 专为水平缩放而设计,
  • 支持数据平衡(自动/手动),
  • 自动分片——应用程序级别或对最终用户透明。

Aerospike 是开源实时、无 SQL 和键值存储。从头开始使用 C 语言构建,因为有多种方法可以编写数据库以利用硬件、网络、SSD、内存和内核。针对 SSD/Flash 存储进行了优化,原因是 SSD 是存储设备的未来,同时它适用于 HDD(旋转磁盘驱动器)SSD 提供并行通道,具体取决于可能选择使用 8,16 32 等的 SSD 供应商上。如果写入和擦除相同的块位置,SSD 就会磨损。对于 SSD,您以块的形式写入,SSD 用作无文件系统作为块存储并用作环形缓冲区,这意味着您在环形缓冲区开始时写入并继续将数据添加到下一个、下一个、下一个直到驱动器的末端。

聚类或称它为自动聚类。添加一个节点并将其带入集群会在 <100 毫秒内完成。它是使用 Paxos 算法实现的。

什么是 Paxos 算法?

http://www.quora.com/Distributed-Systems/What-is-a-simple-explanation-of-the-Paxos-algorithm

RIPE160MD# 提供 20 字节 160bit # 保证唯一且

# 是正常的 4K 分布,

每个命名空间都维护它的分区树,每个命名空间都有一个分区 ID,每个分区都有一个 b-tree。

存储模型

在内存数据库中: 所有内容都存储在 DRAM 中,高性能和高成本有效。

磁盘存储:主索引和二级索引存储在 DRAM 中,数据存储在 SSD 或 HDD 上。这意味着最好使用 SSD,但比 DRAM 稍慢,但至少比 DRAM 便宜 10 倍。

混合存储:存储在 DRAM 中的所有内容。数据保存在 SSD 或 HDD 上。由 SSD 或 HDD 持久性支持的 DRAM 性能。在不损失性能的情况下提高 DRAM 成本。

基准

160 万 TPS 与 YCSB(雅虎云源基准测试)在 4 个节点上,在内存中。

Aerospike 给出的 SSD 性能保证:

ACT(Aerospike 合规性测试):它是为测试 SSD 性能而定义和开发的。今天它是 SSD 的标准或认证。英特尔发表了一篇博文,称他们是世界上唯一一家使用 ACT 支持 100 万 TPS 的 SSD 供应商。

谷歌云做了一些工作来展示谷歌计算引擎的吞吐量。谷歌在他们的博客上发布了 Cassandra 需要 300 个节点来生产什么,AS 用 50 个节点来做什么。

Aerospike 以非常有效的方式处理实时问题。

于 2015-08-26T05:35:30.773 回答
7

Lynn Langit 刚刚发布了在 AWS 云上以不同配置运行的 Aerospike 与 Redis的非常详细的面对面基准测试。她的总结:“ TL;DR – Aerospike 在规模上获胜”。

她是如何得出这个结论的,非常有趣。她为其他希望深入了解如何进行自己的绩效基准测试的人提供了有关她如何产生结果的分步说明。测试必须设置为纯 RAM 数据存储,以及 SSD 持久数据库。

她的主要观察:

  • Aerospike 与 Redis 一样快,在 AWS R3.8xlarge 上的单个节点上实现 100% 读取工作负载的速度接近 1 MTPS,并且没有持久性。
  • 对于由 EBS SSD (gp2) 存储支持的单个节点以实现持久性,Aerospike 在 100/0 和 80/20 读/写工作负载方面比 Redis 稍快。
于 2015-01-28T17:23:19.187 回答
5

当您考虑故障转移以及当您从数据中心的任何机架中拔出电源插头时 Aerospike 自我修复的方式时,在没有流量协调器的情况下,每个节点每秒可保持一百万次读取操作的性能,因此您始终可以在交换机或其他硬件(除非您正在减少地图聚合)我的意思是没有其他东西可以接近具有安全数据的自我平衡实时动态分析。所有其他平台都要求您进行杂交以使您的所有属性都在 CAP 三角形中。没有缓冲或队列,没有数据缓存,重影不再是一个类别。除了成为最佳表现者之外,还有很多好处。我们只需要承认。Aerospike 非常可笑!

于 2015-02-14T19:55:17.280 回答