@1234567890
2018-03-26T12:07:29.000000Z
字数 1752
阅读 1494
Aerospike
Aerospike没有严格的表结构,对数据类型的更改不需要修改表
namespace 可以看做标准数据库的数据库。一个名称空间包含记录,索引和策略。策略决定了命名空间的行为,包括:
Set可以看做标准数据库的表。1个命名空间可以有多个set。Set是可选的。命名空间中的某些记录可能不在一个集合中。
aerospike数据库是一个专注行存储。记录是数据库中存储的基本单位。记录可以属于命名空间或命名空间内的集合。记录使用key作为其唯一标识符。
使用key在应用程序中读取或写入记录。当一个key被发送到数据库时,它和它的set信息被散列成一个160位的摘要,用于为所有操作定位该记录
一条记录包含了1个或多个bins,bins由一个名称和一个值组成。bin中的值总是可以更改为不同的字符串值,它也可以更改为不同数据类型的值。
目前,名称空间中所有的唯一bin名称的数量限制为32k。这是由于优化的字符串表实现
主键索引是分布式哈希表技术与每台服务器中分布式红黑树结构的融合。命名空间(数据库)中的整个keyspace都使用强大的哈希函数路由到分区中。共有4096个分区在集群节点间平均分配
为了保持吞吐量,主索引只存储在内存。这允许高性能,高度并行写入。当aerospike服务器启动时,它会遍历存储数据并为所有分区创建主索引。
二级索引位于非主键上,这允许您建立一对多关系。在aerospike中,二级索引是逐个bin(如rdbms列)指定的。这允许有效的更新并最小化存储索引所需的资源量。
二级索引与标准数据库的二级索引是一样的。通过二级索引找到主索引
查询记录可以馈送到聚合框架中以执行过滤,聚合等。每个节点都将查询结果发送到udf(用户定义的函数)子系统,以便开始将结果处理为记录流。将调用流udfs,并将用户定义的操作序列应用于查询结果。来自每个节点的结果由客户端应用程序收集,客户端应用程序可以对数据执行其他操作。
最好使用纯粹的dram配置存储而无需持久性,具有存储持久性的dram或使用闪存(ssds)。
持久性存储(即磁盘)必须是闪存或其他高性能块存储设备(如云存储)。
持久性存储也可以是任何存储设备上的文件。
aeropsike中的列每个都有一个使用字符串表存储的bin名称。该列的名称仅存储一次,并且在名称空间中只允许使用32k个并发唯一存储区名称
如果您需要更多的bin名称,请使用map。map允许你存储一组任意的键值对,并在udfs中访问这些值以提高效率。
如果您将复杂的语言类型(例如您自己的java类)传递给数据调用,则aerospike客户端将使用本机串行化系统。Aerospike将数据存储为特定于语言的blob类型。这允许使用相同语言的客户端使用干净的代码读取数据。但大多数默认序列化器效率不高。