aerospike如何与其他键值nosql数据库不同?
Aerospike是一个关键值内存操作NoSQL数据库,具有支持复杂对象且易于扩展的ACID属性。 但是我已经使用了完全一样的东西。
Redis也是一个关键价值的内存(但持久化到磁盘)的NoSQL数据库。 它也支持不同的复杂对象。 但与Aerospike相比,Redis已经使用了很多时间,已经有了一个活跃的社区,并开发了大量的项目。
那么aerospike和其他非sql键值数据库(如redis)有什么区别。 有一个更适合于aerospike的地方吗?
PS我正在寻找人们在现实世界中使用这些数据库中的至less一个(最好是两个)的答案,并有实际的生活经验(而不是从官方网站复制粘贴)。
如果必须用一个词来回答它的“performance”。 Aerospike的性能比那里的任何集群nosql解决scheme好得多。 每个节点的更高性能意味着更小的集群,降低TCO(总体拥有成本)和维护成本。 Aerospike执行自动集群,自动分片,自动重新平衡(当集群状态发生变化时),其中大部分需要其他数据库中的手动步骤。
我说“聚集”,因为我不想在该组混合redis(虽然redis custering在testing版)。 Aerospike和redis的纯内存性能相当。 但是,Redis希望在应用层处理很多事情,比如分片,请求redirect等。尽piperedis有一种方法来保存(快照或AOF),但是它的devise更像是一个插件。 Aerospike始终坚持在本地开发。 redis的集群还涉及到build立主奴隶等。你可能想看看这个谈话,比较redis vs aerospike。
我已经使用了Redis多年,并且刚刚开始使用Aerospike作为替代它的原因很多。
尽pipeRedis和Aerospike都有很好的性能,但Redis的主要问题是它只存储内存数据,没有正式发布的集群解决scheme。 它将数据库的大小限制为服务器的RAM大小,而Aerospike可以configuration为使用SSD存储信息,而不会丢失速度。 Aerospike延迟非常低,即使读写吞吐量很高。
Aerospike最适合我,因为它可以随着性能进行扩展,而且不需要太多的努力,而且与Redis不同,它还可以完全保存数据,最大限度地减less数据丢失。 他们发布了一个很棒的video,展示了如何轻松扩展和pipe理Aerospike集群,以及即使在“灾难”情况下,它也能自动configuration自身。
令人惊讶的是,Redis是最受欢迎的内存数据库之一,3个月前没有自动分片。 他们最近添加了这个function。 Redi 3.0具有自动分片function。
AS通过具有快速重启function来支持自动群集,其中所有索引在不增加吞吐量的情况下被持久化,并且数据库可以在几分钟内被提出(例如,50TB的db大小可以在几分钟)。 所有这些都可以在商品硬件上实现。 增加容量只不过是给集群添加一个新节点。 在数据中心和云环境中工作最重要的是它适用于任何本地环境。
支持在线比赛制作(pipe理需求和供应)。
没有SQL数据库必须处理实时用例,以满足今天的广告世界,在线购物门户,物stream服务提供商(如OLA出租车)所需的激进SLA(识别最近的出租车是否可以接载并可以到达5ms以内的客户计算时间小于3ms),在线投标申请(在<3ms内完成AdBid的准确率为99.7%),欺诈检测系统等需要在<5ms(毫秒)内识别出恶意用户, 。
- Aerospike是符合ACID的logging级别,对于大部分的No-SQL数据库都是如此。
- Aerospike专为集群环境而devise,
- 为水平缩放而build,
- 支持数据平衡(自动/手动),
- 自动分片 – 应用程序级别或对最终用户透明。
Aerospike是开源的实时,无SQL和键值存储。 从头开始build立在C,因为那么有办法在数据库被写入利用硬件,networking,固态硬盘,内存和内核。 针对SSD /闪存存储优化的原因是,SSD是存储设备的未来,同时它在HDD(旋转磁盘驱动器)上工作。SSD提供并行通道,取决于SSD提供商可能select使用8,16 32等上。 如果写入和擦除相同的块位置,则SSD对其具有磨损。 如果SSD是以块的forms编写的,则SSD被用作块存储的无文件系统,并用作环形缓冲区,这意味着您在环形缓冲区开始处写入,并将数据添加到下一个,下一个,下一个,直到驱动器的末端。 一旦你到达最后你回到块的第一个位置,然后继续以同样的方式,这将确保第一个位置将被使用不是最多的次数,但等量的时间。
集群或让我们称之为自动集群。 添加节点并在<100 ms内发生在集群内。 它使用Paxosalgorithm实现。
什么是Paxosalgorithm?
http://www.quora.com/Distributed-Systems/What-is-a-simple-explanation-of-the-Paxos-algorithm
RIPE160MD#提供20字节的160bit#它保证是唯一的
#是普通的4K分配,
每个名称空间都维护其分区树,每个名称空间都有一个分区ID,每个分区都有一个B树。
存储模型
在内存数据库中:一切都存储在DRAM有效的高性能和高成本涉及。
磁盘存储:存储在DRAM中的主要索引和二元索引,数据发送到SSD或HDD。 这意味着最佳的使用SSD,但比DRAM稍慢,但比DRAM便宜至less10倍。
混合存储:存储在DRAM中的所有东西。 数据保存在SSD或HDD上。 DRAM性能由SSD或HDD持久性支持。 更高的DRAM成本,而不会损失性能。
基准
YCSB(雅虎云源基准)在内存中的4个节点上的160万TPS。
Aerospike给出的SSD性能保证:
ACT(Aerospike一致性testing):定义和开发用于testingSSD性能。 今天,它是SSD的标准或authentication。 英特尔做了一个博客文章,指出他们是全球唯一使用ACT支持100万TPS的SSD供应商。
谷歌云已经做了一些工作来显示谷歌计算引擎的吞吐量。 谷歌在他们的博客上发布了Cassandra需要300个节点才能生产的东西,而在50个节点上,它做了什么。
Aerospike以非常有效的方式处理实时问题。
Lynn Langit刚刚发布了一个在AWS云上以不同configuration运行的Aerospike vs. Redis的非常详细的头对头基准testing 。 她的总结:“ TL; DR – 规模Aerospike赢 ”。
她如何得出这个结论非常有趣。 她一步一步地指导她如何为其他人展示自己的成果,从而深入了解如何执行自己的绩效基准。 testing必须设置为纯粹的RAM数据存储,以及SSD持久性数据库。
她的主要观察:
- Aerospike速度与Redis一样快,接近1 MTPS,在AWS R3.8xlarge上的单个节点上100%读取工作负载 , 无需持久性。
- 对于100/0和80/20读/写工作负载,针对由EBS SSD(gp2)存储支持的单个节点进行持久性, Aerospike略快于Redis 。
当您将故障切换和Aerospike自我修复的方式从数据中心的任何机架中拔出时,每个节点的剩余性能在没有stream量协调器的情况下每秒节点达到百万次读取操作,因此,交换机或其他硬件(除非你是地图减less聚合)我的意思是没有其他任何东西接近自我平衡的实时dynamic分析与安全的数据。 所有其他平台都要求您进行杂交以在CAP三angular形中获得所有属性。 没有缓冲或队列,没有数据caching,重影不再是一个类别。 除了performance最好之外,还有很多好处。 我们只需要承认它。 Aerospike是可笑的!