Aerospike是一种键值,内存中,可操作的NoSQL数据库,具有ACID属性,支持复杂对象并且易于扩展.但我已经使用了绝对相同的东西.
Redis也是一个键值,内存(但持久到磁盘)NoSQL数据库.它还支持不同的复杂对象.但与Aerospike相比,Redis已经使用了很长时间,已经拥有一个活跃的社区,并且在其中开发了许多项目.
那么aerospike和其他no-sql键值数据库(例如redis)之间的区别是什么.是否有一个特别的地方更适合空中飞行.
PS我正在寻找那些在现实世界中至少使用过这些dbs(最好是两者)并且拥有现实生活经验(不是来自官方网站的复制贴纸)的人的答案.
如果必须用一个词来回答它的"表现".Aerospike的性能远远优于任何集群式nosql解决方案.每个节点的性能更高意味着更小的集群,这是更低的TCO(总体拥有成本)和维护.Aerospike执行自动群集,自动分片,自动重新平衡(当群集状态更改时),其中大多数需要在其他数据库中手动执行.
我说"聚集"因为我不想在该组中混合使用redis(尽管redis集群处于测试阶段).Aerospike和redis的纯内存性能将具有可比性.但是Redis希望在应用程序层处理很多事情,比如分片,请求重定向等.尽管redis有一种方法可以持久化(快照或AOF),但它有自己的问题,因为它的设计更像是一个插件.Aerospike本身就是以坚持不懈的态度发展起来的.redis的聚类还涉及设置主从等等.你可能想看看这个讲话比较和对比redis vs aerospike.
我已经使用Redis多年了,并且刚开始使用Aerospike作为它的替代品有很多原因.
虽然Redis和Aerospike都有很好的性能,但Redis的主要问题是它只在内存中存储数据,并且没有正式发布的集群解决方案.它将数据库的大小限制为服务器的RAM大小,而Aerospike可以配置为使用SSD来存储信息而不会降低速度.即使读/写吞吐量很高,Aerospike延迟也非常低.
Aerospike最适合我,因为它能够随着性能而不需要努力工作,并且与Redis不同,它还可以完全保留您的数据,最大限度地减少数据丢失.他们发布了一个很棒的视频,展示了扩展和管理Aerospike集群是多么容易,以及它是如何在出现"灾难"情况时自动配置自己的.
令人惊讶的是Redis是最受欢迎的内存数据库之一,3个月前没有自动分片.他们最近添加了此功能.Redi 3.0具有自动分片功能.
AS通过快速重启功能支持自动群集,其中所有索引都是持久的,不会增加吞吐量,数据库可以在几分钟内启动(例如,50 TB的db大小可以在几分钟内启动) ).所有这些都可以在商品硬件上实现.添加容量只不过是向群集添加新节点.适用于数据中心和云环境,最重要的是它适用于任何本地环境.
支持在线匹配(管理需求和供应).
No-SQL数据库必须处理实时用例,以满足今天的广告世界,在线购物门户网站,OLA驾驶室等物流服务提供商所需的激进SLA(识别最近的出租车已准备好接送并且可以到达5分钟以内的客户计算小于3毫秒,在线竞标应用程序(在<3毫秒内完成AdBid的准确度达99.7%),欺诈检测系统等需要在<5毫秒(毫秒)内识别恶意用户.
Aerospike符合ACID记录级别,适用于大多数No-SQL数据库.
Aerospike专为集群环境而设计,
专为水平缩放而设计
支持数据平衡(Automic/Manual),
自动分片 - 应用程序级别或对最终用户透明.
Aerospike是开源实时,无SQL和键值存储.从头开始构建C,因为有些方法可以编写db来利用硬件,网络,SSD,内存和内核.针对SSD /闪存存储进行了优化的原因是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树.
存储模型
在内存数据库中: 所有内容都存储在DRAM中,有效地实现了高性能和高成本.
磁盘存储:存储在DRAM中的主要和2个索引,数据在SSD或HDD上.这意味着使用SSD是最佳的,但比DRAM稍慢,但比DRAM便宜约10倍.
混合存储:存储在DRAM中的所有内容.数据保留在SSD或HDD上.由SSD或HDD持久性支持的DRAM性能.更高的DRAM成本而不会损失性能.
基准
在内存中的4个节点上使用YCSB(雅虎云源基准)的160万TPS.
Aerospike给出的SSD性能保证:
ACT(Aerospike一致性测试):定义和开发它以测试SSD性能.今天它是SSD的标准或认证.英特尔做了一篇博客文章,声称他们是世界上唯一使用ACT支持100万TPS的SSD提供商.
谷歌云已经做了一些工作来显示谷歌计算引擎的吞吐量.谷歌在他们的博客上发布了Cassandra生产300个节点的信息,AS用50个节点做了什么.
Aerospike以非常有效的方式处理实时问题.
Lynn Langit刚刚在AWS云上以不同的配置发布了一个非常详细的Aerospike vs. Redis 的头对头基准测试.她的总结:" TL; DR - 大规模Aerospike胜利 ".
她如何得出这个结论非常有趣.她逐步说明了她如何为其他希望了解如何制定自己的绩效基准的人提供结果.必须将测试设置为纯RAM数据存储区以及SSD持久性数据库.
她的主要观察:
Aerospike与Redis一样快,在AWS R3.8xlarge上的单个节点上具有接近1 MTPS的100%读取工作负载且没有持久性.
对于100/0和80/20的读/写工作负载,Aerospike对于由EBS SSD(gp2)存储支持的单个节点进行持久性的速度略快于Redis .
当您考虑故障转移以及当您将电源插头从数据中心的任何机架中拔出时,Aerospike自我修复的方式,每个节点每秒读取操作数百万,没有流量协调器,因此您总是在交换机或其他硬件(除非你是地图减少聚合)我的意思是没有其他任何东西接近自我平衡的实时动态分析与安全数据.所有其他平台都要求您进行混合以在CAP三角形中获得所有属性.由于没有缓冲或队列,没有数据缓存,重影不再是一个类别.除了成为最佳表现者之外,还有很多好处.我们只需要承认.Aerospike很可笑!