气溶胶数据库与其他键值NoSQL数据库有何不同?

58

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

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

那么,Aerospike 和 Redis 这样的 NoSQL 键值数据库有什么区别?是否有特定的场景适合 Aerospike?

P.S. 我希望得到至少在现实生活中使用过其中一种数据库(最好是两种)并有实际经验的人的答案,而不是来自官方网站的复制粘贴。


8
@GuyLubovitch,您为什么认为这是一个营销问题?我知道Redis,我用过它,我知道如何在哪里使用它。但我从未听说过Aerospike。因为他们将自己放在了类似的领域中,所以自然而然的问题就出现了:"它的目的是什么"。所以,是的,这是一个技术问题。 - Salvador Dali
http://www.aerospike.com/when-to-use-aerospike-vs-redis/ - Pavan Gupta
5个回答

59

如果只用一个词来回答,那就是"性能"。Aerospike的性能比任何分布式NoSQL解决方案都要好得多。每个节点的更高性能意味着更小的集群,这降低了总拥有成本(TCO)和维护成本。Aerospike可以自动进行集群化、自动分片、自动平衡(当集群状态发生变化时),而其他数据库大多需要手动操作。

我之所以说"集群化",是因为我不想将Redis与这一组混淆(尽管Redis集群正在测试中)。Aerospike和Redis的纯内存性能将是可比的。但Redis期望应用程序层处理很多事情,如分片、请求重定向等。即使Redis有持久化的方式(快照或AOF),它也有自己的问题,因为它的设计更像是一个插件。Aerospike则是在持久化方面原生开发的。Redis的集群化也涉及设置主从等。您可能想看一下这个讲座,对比Redis和Aerospike的区别和相似之处。


它与Hyperdex、DynamoDB、FoundationDB、Hibari、VoltDB、MonetDB相比如何? - skan
4
它没有与您请求的数据库进行官方比较,但是它已经与Couch、Cassandra和MongoDB进行了比较。您可以参考http://www.aerospike.com/benchmark/。现在Aerospike拥有YCSB插件(https://github.com/aerospike/ycsb),您可以运行测试并查看结果。 - sunil
请注意,Couchbase在HDD持久化场景中实现了与内存中适合的“热数据集”相当的结果。当然,AS不想让你知道,一些基准测试似乎是不公平的。他们没有展示CB的性能,而是简单地说它未能完成测试。我会始终评估两者,并根据使用情况选择一个。 - Manuel Arwed Schmidt
此答案已过时,截至2018年10月26日。其中的部分内容可能仍然相关,但是redis集群仍处于beta测试阶段。 - kapad

35

我多年来一直使用Redis,最近开始使用Aerospike作为替代品,原因有很多。

虽然Redis和Aerospike都具有出色的性能,但Redis的主要问题在于它只能将数据存储在内存中,并且没有正式发布的集群解决方案。这限制了您的数据库大小为服务器的RAM大小,而Aerospike可以配置为使用SSD存储信息而不会有任何速度损失。即使进行高读写吞吐量,Aerospike的延迟也非常低。

Aerospike最适合我,因为它能够轻松实现性能扩展,与Redis不同,它还专为持久化您的数据而设计,在任何情况下都尽量减少数据丢失。他们发布了一个绝妙的视频,展示了如何轻松扩展和管理Aerospike集群,以及在“灾难”情况下如何自动配置。


17

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

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

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

No-SQL数据库必须处理实时用例,以满足当今广告世界、在线购物门户、物流服务提供商(如OLA出租车,识别最近的出租车谁准备接送并能在5分钟内到达客户,在小于3毫秒内计算完成),在线竞价应用程序(小于3毫秒的AdBid最终确定的99.7%的准确性),欺诈检测系统等的激烈SLAs需求,需要在小于5ms的时间内识别恶意用户。

  • Aerospike是记录级ACID兼容的,对于大多数No-SQL数据库都是如此。
  • Aerospike专为集群环境设计,
  • 专为水平扩展而构建,
  • 支持数据平衡(自动/手动),
  • 自动分片-应用程序级别或对终端用户透明。

Aerospike是开源实时,No-SQL和键值存储。

从头开始使用C语言编写,因为这样可以利用硬件、网络、固态硬盘、内存和内核的优势来编写数据库。为SSD/闪存存储进行了优化,原因是SSD是未来存储设备之一,同时它也能在HDD(旋转式磁盘驱动器)上工作。SSD提供并行通道,具体取决于SSD供应商,他们可能选择使用8、16、32等通道。如果向同一块位置不断写入和擦除数据,SSD会有磨损。对于SSD,写入的方式是按块写入,SSD用作无文件系统的块存储,并被用作环形缓冲区,意味着您从环形缓冲区的起点开始写入,然后持续添加数据到下一个、下一个、下一个直到驱动器的末尾。一旦到达末尾,您就会回到该块的第一个位置,然后以相同的方式继续操作,这确保了第一个位置会被使用相等次数,而不是最多次数。

集群或者叫自动集群。将一个节点添加到集群中需要小于100毫秒完成,这是使用Paxos算法实现的。

什么是Paxos算法?

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

RIPE160MD#提供了20个字节的160位#,它保证是唯一的。

#是正常的4K分布,

每个命名空间都维护其分区树,每个命名空间都有一个分区ID,每个分区都有一个B树。

存储模型

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

磁盘存储:主索引和二级索引存储在DRAM中,数据存储在SSD或HDD中。这意味着最优情况下使用SSD,但略慢于DRAM,但成本至少比DRAM便宜约10倍。

混合存储:所有数据都存储在DRAM中,但是持久性存储在SSD或HDD上。DRAM的表现由SSD或HDD的持久性支撑,这样即可在不损失性能的情况下提高DRAM的成本。

基准测试

在4个节点的内存中使用YCSB(Yahoo云源基准)可以达到160万TPS。

Aerospike提供的SSD性能保证:

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

Google Cloud做了一些工作来显示Google计算引擎的吞吐量。 Google在其博客上发布了Cassandra需要300个节点才能产生的内容,而Aerospike只需50个节点即可完成。

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


7
Lynn Langit刚刚发布了一篇关于Aerospike与Redis在AWS云上以不同配置运行的详细对比基准测试文章。她的总结是:“TL; DR - 在规模方面,Aerospike胜出”。她如何得出这个结论非常有趣。她提供了逐步说明,以便其他人可以获得关于如何进行自己的性能基准测试的见解。测试必须设置为纯RAM数据存储,以及SSD持久数据库。她的主要观察结果如下:
  • 在AWS R3.8xlarge单节点上,Aerospike和Redis的速度相当快,可实现接近1 MTPS的100%读取工作负载,并且没有持久性。
  • 针对由EBS SSD(gp2)存储支持的单个节点进行100/0和80/20读/写工作负载时,Aerospike略快于Redis具有持久性。

5
@antirez在这里回复了:http://antirez.com/news/85 - Itamar Haber
5
我们的回复在这里:https://redislabs.com/blog/the-lessons-missing-from-benchmarking-nosql-on-the-aws-cloud-aerospikedb-and-redis - Itamar Haber

5
当你考虑到故障转移和Aerospike自我修复的方式时,即使在数据中心的任何机架上拔掉电源插头,每个节点每秒可达一百万次读取操作,无需流量协调器,因此您始终可以在交换机或其他硬件上达到最大性能(除非您正在进行映射减少聚合)。我指的是没有什么比具有安全数据的自平衡实时动态分析更接近了。所有其他平台都需要混合以在CAP三角形中获得所有属性正确。没有缓冲区或队列,没有用于数据的缓存,幽灵不再是一个类别。除了成为最佳表现者之外,还有很多好处。我们只需要承认它。Aerospike太棒了!

9
你们在谈论什么,我无法理解。虽然有很多词汇,但它们放在一起却没有意义!!! - Richard Grossman
1
抱歉Richard,我使用了一些兴奋的架构师术语。请访问AeroSpike网站并查看他们的文档。对于数据中心中的NoSQL,没有什么能比得上它。我还写了另一篇关于NoSQL的基础文章,其中包括一些关于AeroSpike的讨论。https://www.linkedin.com/pulse/databases-dont-do-nas-get-1m-transactions-per-second-5000-rempel - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接