其他分享
首页 > 其他分享> > Aerospike-介绍

Aerospike-介绍

作者:互联网

架构
客户端层
这一层包括带有AerospikeAPI的开源客户端库和能够感知数据在Aerospike集群中位置的追踪节点。

集群和数据分布层
这一层监控集群通讯并提供一些自动化功能,比如故障转移、数据复制和跨数据中心同步。

数据存储层
这一层负责在DRAM(动态随机存取存储器)和Flash(闪存)中存储数据。

数据模型

Namespaces

类似于database

Sets

类似于RDBMS的table。

Records

key
metadata
bins

类型于RDBMS的列
数据类型

 

特点

1、数据存放
数据可以放内存,也可以放SSD。
数据放内存时速度肯定会很快,但这和memcache一样,相比memcache性能并没有优势
数据也可以放SSD,并做了特定优化,相比mysql会更快,但数据操作模型过于简单,可使用场景很少。也比mongo性能更好,但其要求SSD存储,这样容量较小,费用也较高,这时mongo是好选择

2、数据操作模型
支持 按主键及二级索引筛选数据
支持 聚合 (强大,一个卖点)
不支持排序(通过聚合功能的lua脚本也可能可以实现,但并不现实)
虽然支持类SQL语法操作,但可进行的操作非常简单,好于memcache, 稍好于mongo,比redis差些,跟mysql完全没法比,但其聚合功能还比较强大。

3、集群管理
相当强大,多个平等的结点,平摊存储所有数据,并且互相备份。集群结点的失效及添加完全自动化处理,不影响用户请求。
相比memcache,这是它强大的地方,也不会弱于其它nosql的集群管理。

4、聚合功能
这里聚合的概念等同于mysql中的聚合。可以通过编写lua脚本,实现对数据的聚合,此时aerospike可以看作一个分布式的基于内存的map-reduce计算平台,相比普通的hadoop map-reduce,速度是很快的,当然,可处理的数据量相对较少。

5、事务
支持行事务

6、坑点
只支持batch read,不支持batch writes
记录大小有限制: <= 1M => 有点小,不过对于我们的场景基本没问题
bin name长度: <= 14 Chars => 一般来说单字段不会超过,嵌套属性如果拼接就很容易超长
没有内建的聚合函数(Aggregations: count, max, min, sum, group by, etc.),通过UDFs可以支持(queryAggregate),但是使用方式不友好,效率也不高
namespace 下的sets限制1024,二级索引限制256,唯一binname限制32K,一个namespace下最多4 billion记录
范围查询只支持BETWEEN语句,没有小于,大于查询,并且RANGE结果只支持包含
范围查询只支持整数类型,不支持浮点数
Query不支持分页(no cursor or pagination..)
Query不支持排序(no order by..)
不支持动态创建namespace,只能通过修改配置文件、重启服务器
只有清空set数据接口,但是并没有真正drop掉sets(会留下empty set,然后一个namespace下只有有1024个sets..)


为什么选用aerospike

与redis相比

与memcache相比

适用场景

1、替换memcache做缓存
这是由于它有强大的集群管理功能,对非常重要不能宕机的缓存服务可以采用它,但代价就是需要更多的硬件服务器。

2、性能要求很高的实时聚合计算
aerospike是一个分布式的基于内存的map-reduce服务,速度快。一般来说,原始数据变化较频繁,而对聚合计算实时要求较高的情景可以用它。

参考:https://blog.csdn.net/u012092620/article/details/79883598

标签:聚合,Aerospike,bytes,支持,memcache,集群,介绍,数据
来源: https://www.cnblogs.com/duanxz/p/14978528.html