Aerospike基础知识

2022-06-21 00:00:00 索引 数据 节点 记录 命名

Aerospike基础知识

介绍

Aerospike是一个分布式,可扩展的NoSQL数据库。该架构有三个主要目标:

  • 为Web级应用程序创建灵活,可扩展的平台。

  • 提供传统数据库所期望的稳健性和可靠性(如ACID)。

  • 以少的人工参与提供运营效率。

架构

•客户端层:此群集感知层包括开源客户端库,可实现Aerospike API。

•集群和数据分布层:该层管理集群通信并自动执行故障转移,复制,跨数据中心同步以及智能重新平衡和数据迁移

•数据存储层:该层可以将数据可靠地存储在DRAM和Flash中,以便快速检索。

客户端层(Client Layer)

客户端层能监控cluster的所有节点,并且能够自动感知所有节点的更新,同时掌握数据在cluster内的分布,特点:

  • 高效性:Client的基础架构确保请求能够到相应的节点读写数据,减少响应时间。

  • 稳定性:如果节点出错,不需要重启Client端,并且保持服务的正确性

  • 连接池:为了减少频繁的open/close TCP操作,Client会在内部维护一个连接池保持长连接

分布层(Distibution Layer)

负责管理集群内数据的平衡分布。备份、容错和不用集群之前的数据同步。如果新增节点,只需要向集群中添加新的Aerospike server,不需要停止当前的服务,包含三个模块:

  • 集群管理模块:基于Paxos-like Consensus Voting Process算法来管理和维护集群内的节点,并用心跳(Heart,包含active和passive)来监听所有节点的状态,用于监听节点间的连通性。

  • 数据迁移模块:当有节点添加和删除是,该模块保证数据的重新分布,按照系统配置的复制因子确保每个数据块跨节点和跨数据中心复制。

  • 事务处理模块:确保读写一致性,写操作先写Replica,再写master

事务模块主要负责以下任务:

  • Sync/Async Replication(同步/异步复制):为保证写一致性,在提交数据之前向副本传播更新并将结果返回客户端

  • Proxy(代理):集群重新配置期间客户端可能出现短暂过期,透明代理请求到其他节点。

  • Duplicate(副本解析):当集群从活动分区恢复时,解决不同数据副本之间的冲突。

数据存储层(Data Layer)

负责数据的存储,Aerospike是schema-less的键-值数据库,数据存储模式:

  • 命名空间:数据存储在namespace中;namespace可以分为不同sets和records,每条record包含一个的key和一个或多个bins值。

  • 索引:Aerospike Indexs包含Primary Indexs和Second Indexs,索引只存储在内存中。

  • 磁盘:与其它基于文件系统数据库的不同之处,在于Aerospike为了达到更好的性能选择了直接访问SSD的raw blocks(row device),并特别优化了Aerospike的小化读、大块写和并行SSD来真加响应速度和吞吐量。

数据模型

Aerospike采用无模式(schema-less)数据模型,这意味着存储在库中的数据不符合严格模式。允许动态添加新类型的bin。尽管如此,仍然需要遵守bin名称与数据的对应关系。应用程序必须利用bin的一致性来保障查询和聚合的正确性。

Aerospike 键值存储(KVS)操作将键与一组命名值相关联。在集群启动时,Aerospike配置策略容器 - namespace(RDBMS 数据库) - 它控制一组数据的保留和可靠性要求。命名空间分为set(RDBMS 表)和record(RDBMS 行)。每条记录都有一个的索引键,以及一个或多个包含记录值的bin(RDBMS 列)。

命名空间(namespace)

命名空间是数据容器。命名空间实际上可以是数据库或一组数据库的一部分,如标准RDBMS中所述。在命名空间中收集数据的方式与数据的存储和管理方式有关。命名空间包含记录,索引和策略。策略规定了命名空间行为,包括:

  • 如何存储数据:在DRAM或磁盘上。

  • 记录存在多少个副本。

  • 记录到期时间等

官方命名空间配置参考

集合(sets)

在命名空间(namespace)中,记录可以属于一个称作集合(set)的逻辑容器。集合(set)为应用程序提供了收集记录组的能力。集合(set)继承了包含它的namespace的策略,也可为set指定其他的策略。例如,可以仅针对特定集合的数据指定二级索引,或者可以对特定集合执行扫描操作。

记录(records)

Aerospike数据库是一个行存储,专注于单个记录(RDBMS 行)。记录是数据库中的基本存储单元。记录可以属于命名空间或命名空间中的集合。记录使用密钥作为其标识符。

记录包括以下内容:

ComponentDescription
Key标识,记录可以使用其密钥的散列来寻址,称为摘要。
Metadata记录版本信息和配置到期时间,称为生存时间(TTL)
Bins相当于传统数据中的字段

相关文章