Aerospike 技术在扩缩性方面的亮点
Cache-plus 数据库 | 大型机 | Aerospike | |
---|---|---|---|
纵向扩展 | ![]() | ![]() | ![]() |
横向扩展 | ![]() | ![]() | ![]() |
一致性 | ![]() | ![]() | ![]() |
性能 | ![]() | ![]() | ![]() |
可预测性能 | ![]() | ![]() | ![]() |
可靠性 | ![]() | ![]() | ![]() |
低总拥有成本 | ![]() | ![]() | ![]() |
易部署 | ![]() | ![]() | ![]() |
|
Aerospike 数据库科技
Aerospike 的数据分布功能可实现独特的数据分区,使密钥在摘要空间中均匀分布,避免在数据访问期间创建热点,有助于实现高级别的扩缩性和容错能力。Aerospike 托管索引和数据,以避免在运行读取操作或查询时产生任何跨节点的流量。
跨节点进行统一的数据分布的好处在于:
- 应用的工作负载可以均匀地分布在整个集群中,
- 数据库操作的性能是可预测的,
- 纵向和横向扩展集群变得容易,并且
- 实时集群重配置和后续的数据均衡变得非常简单,无中断且高效。
分区分配是确定性的,它允许:
- 每个节点可以计算相同的分区图。
- 主分区和副本可以均匀地分布。
- 最小化分区移动。
易于编程的数据结构(例如列表和地图)提高了性能,并允许对字段值按索引查找。
实时事务引擎负责根据请求读取和写入数据,同时提供一致性和隔离性。这涉及同步和异步复制,如果节点不可用或节点重新加入集后群(不可用之后)的发生冲突/重复解析,则向备用节点发出请求。
多核系统
通过将每个 CPU 套接字(而不是每个内核)的多个线程分组来减少非一致性内存访问 (NUMA) 区域之间的共享数据,从而改善延迟。
上下文切换(卸载)
避免了典型上下文切换产生的开销,某些操作在网络侦听器线程本身中运行,而无需放弃 CPU(并且系统创建的网络侦听器线程与内核数量一样多)。
内存分配
减轻应用或运行时环境的工作量,同时最大程度地减少对内存碎片整理的需求。通过将索引打包到 RAM 中来更好地利用系统资源。通过按命名空间将数据对象分组到同一切片或区域中,可以最大程度地减少碎片,因此可以优化长期对象的创建、访问、修改和删除模式。
数据结构设计
对索引树的安全且并发的读取、写入和删除访问无需持有多个锁,这是由于每个树元素都具有引用计数和自己的锁。这允许对嵌套数据结构(如索引树)的访问,无需在每个级别获取多个锁,从而减少了跨分区的资源争用。
调度和优先级划分
除了基本的键值存储操作外,Aerospike 还支持批量查询、扫描和二级索引查询。通过基于类型、所需的 CPU 工作量和控制正在生成的负载的作业分区,可以实现吞吐量和公平性的优先级划分。
跨数据中心复制(XDR) 支持不同的复制拓扑配置,包括主动-主动、主动-被动、链式、星型和多跳型配置。
负荷分担
如果某个节点发生故障,则所有其他节点都将检测到此故障,并接管该故障节点待处理的工作。这种方案可以实现横向扩展,因为它可以添加更多节点来处理不断增加的复制负载。
数据传送
支持命名空间和数据传送的集级别粒度。系统进行了优化以减少传送的数据量,尤其是在热键的情况下。支持压缩(如果记录的数据大于 1 KB,则进行压缩是非常有益的;对于字符串和 blob 尤其如此)。
远程集群管理
跟踪远程集群状态更改,连接到远程集群的所有节点,维护连接池,并像常规客户端一样执行所有角色。比例传送/接收模型允许大小不同的集群发送/接收数据。只要一个节点可行,就可以继续传送新的更改,并且可以轻松地对节点的增加和减少进行调整。
流水线
Aerospike 使用异步流水线方案进行跨数据中心传送。源集群中的每个节点都与目标集群中的所有节点通信。在任何给定的时间点,连接上可能有多个记录正在等待写入目的地。这种流水线模型是 Aerospike 能够通过广域网在高延迟连接上实现高吞吐量的主要方式。
- + 数据分配器
Aerospike 的数据分布功能可实现独特的数据分区,使密钥在摘要空间中均匀分布,避免在数据访问期间创建热点,有助于实现高级别的扩缩性和容错能力。Aerospike 托管索引和数据,以避免在运行读取操作或查询时产生任何跨节点的流量。
跨节点进行统一的数据分布的好处在于:
- 应用的工作负载可以均匀地分布在整个集群中,
- 数据库操作的性能是可预测的,
- 纵向和横向扩展集群变得容易,并且
- 实时集群重配置和后续的数据均衡变得非常简单,无中断且高效。
分区分配是确定性的,它允许:
- 每个节点可以计算相同的分区图。
- 主分区和副本可以均匀地分布。
- 最小化分区移动。
易于编程的数据结构(例如列表和地图)提高了性能,并允许对字段值按索引查找。
- + 实时事务引擎
实时事务引擎负责根据请求读取和写入数据,同时提供一致性和隔离性。这涉及同步和异步复制,如果节点不可用或节点重新加入集后群(不可用之后)的发生冲突/重复解析,则向备用节点发出请求。
多核系统
通过将每个 CPU 套接字(而不是每个内核)的多个线程分组来减少非一致性内存访问 (NUMA) 区域之间的共享数据,从而改善延迟。
上下文切换(卸载)
避免了典型上下文切换产生的开销,某些操作在网络侦听器线程本身中运行,而无需放弃 CPU(并且系统创建的网络侦听器线程与内核数量一样多)。
内存分配
减轻应用或运行时环境的工作量,同时最大程度地减少对内存碎片整理的需求。通过将索引打包到 RAM 中来更好地利用系统资源。通过按命名空间将数据对象分组到同一切片或区域中,可以最大程度地减少碎片,因此可以优化长期对象的创建、访问、修改和删除模式。
数据结构设计
对索引树的安全且并发的读取、写入和删除访问无需持有多个锁,这是由于每个树元素都具有引用计数和自己的锁。这允许对嵌套数据结构(如索引树)的访问,无需在每个级别获取多个锁,从而减少了跨分区的资源争用。
调度和优先级划分
除了基本的键值存储操作外,Aerospike 还支持批量查询、扫描和二级索引查询。通过基于类型、所需的 CPU 工作量和控制正在生成的负载的作业分区,可以实现吞吐量和公平性的优先级划分。
- + 跨数据中心复制 (XDR)
跨数据中心复制(XDR) 支持不同的复制拓扑配置,包括主动-主动、主动-被动、链式、星型和多跳型配置。
负荷分担
如果某个节点发生故障,则所有其他节点都将检测到此故障,并接管该故障节点待处理的工作。这种方案可以实现横向扩展,因为它可以添加更多节点来处理不断增加的复制负载。
数据传送
支持命名空间和数据传送的集级别粒度。系统进行了优化以减少传送的数据量,尤其是在热键的情况下。支持压缩(如果记录的数据大于 1 KB,则进行压缩是非常有益的;对于字符串和 blob 尤其如此)。
远程集群管理
跟踪远程集群状态更改,连接到远程集群的所有节点,维护连接池,并像常规客户端一样执行所有角色。比例传送/接收模型允许大小不同的集群发送/接收数据。只要一个节点可行,就可以继续传送新的更改,并且可以轻松地对节点的增加和减少进行调整。
流水线
Aerospike 使用异步流水线方案进行跨数据中心传送。源集群中的每个节点都与目标集群中的所有节点通信。在任何给定的时间点,连接上可能有多个记录正在等待写入目的地。这种流水线模型是 Aerospike 能够通过广域网在高延迟连接上实现高吞吐量的主要方式。
除了吞吐量和延迟的特性,Aerospike 存储和处理大量数据的能力决定了 DBMS 的纵向扩展能力。Aerospike 的设计完全利用了 SSD 技术。这使 Aerospike 可以在不到一毫秒的记录访问时间来管理一台机器上数十TB的数据。Aerospike 支持三种存储结构:混合内存、全闪存和内存:
Aerospike 实现了一种混合模型,其中索引完全存在于内存中(而不是持久性存储),并且数据仅存在于持久性存储(SSD)上,并且直接从磁盘读取。索引访问不需要磁盘 I/O,从而可以预测性能。Aerospike 通过避免原地更新而通过使用大块写入的写前拷贝方法来提高 SSD 设备的耐用性。在从应用收到确认之前,Aerospike 可以将数据提交到磁盘。对 SSD 的访问以大规模并行的方式进行,每个节点和闪存设备上存储的数据量是均匀的,从而进一步避免出现热点及在工作负载变化时进行重新配置。
全闪存功能扩展了混合内存,以向传统关系型系统的首选的区域提供 Aerospike 的可靠性、一致性和易用性。通过添加 Aerospike 的部署选项,Aerospike 可以提供适合大型记录系统(HBase 或 HDFS 可能是其首选)的部署策略层。全闪存功能扩展了 Aerospike 的混合内存产品,以支持更广泛的案例。这些功能主要用于大量的(上千亿个)小型对象(<1000 字节),这在将单个行为存储为单独的数据库元素或者需要为 GDPR 样式的数据布局分离数据元素的架构中很常见。
内存存储子系统
在 Aerospike 的内存存储架构中,所有索引和整个数据集始终存在于 DRAM 中,并且仅将数据备份到持久性存储(可以是旋转磁盘,即 HDD)上。因此,所有应用读取的数据均来自 DRAM。但是,首先需要将数据写入在内存缓冲区,然后将其刷新到持久性存储(HDD 或 SSD)中。此外,在强一致性模式下,Aerospike 允许应用将每次写入的数据直接提交到持久性存储。
数据均衡机制可确保在所有节点上平均分配事务量,并且非常适用于在均衡本身的节点发生故障的情况。该系统是连续可用的,因此数据均衡不会影响集群行为。
益处
- 在可扩缩的无共享环境中优化事务的简便性。
- 集群可以在要求的时间自动恢复,而无需操作员干预。
- 通过容量规划和系统监控,将由于意外故障导致的服务损失降至最低。
- 通过硬件容量配置、预配置以及复制/同步策略,可以使用户免受数据库故障的影响。
将记录从一个节点移动到另一节点的过程称为迁移。每次集群视图更改后进行的数据迁移的目标是在每个数据分区的当前主节点和副本节点上同步每个记录的最新版本。
迁移优化
Aerospike 通过减少迁移工作量和时间对迁移进行了优化,这是由于:
- 节点仅协商记录中的增量(对于滚动升级特别有用)。
- 如果已知内容是同一分区的子集,则无需迁移。
- 迁移期间重复解析,以确保完成对记录的部分写入。
自愈式智能集群管理器负责无缝地向集群添加和删除节点。
心跳子系统
在节点之间存储和交换信息(相邻列表中相邻节点的状态)。(心跳用于定位新节点。)
集群子系统
维护与当前活动集群相对应的节点成员身份信息(节点继承列表),以保持一致性。
交换子系统
交换分区状态信息并触发数据均衡算法。
- + 存储引擎
除了吞吐量和延迟的特性,Aerospike 存储和处理大量数据的能力决定了 DBMS 的纵向扩展能力。Aerospike 的设计完全利用了 SSD 技术。这使 Aerospike 可以在不到一毫秒的记录访问时间来管理一台机器上数十TB的数据。Aerospike 支持三种存储结构:混合内存、全闪存和内存:
Aerospike 实现了一种混合模型,其中索引完全存在于内存中(而不是持久性存储),并且数据仅存在于持久性存储(SSD)上,并且直接从磁盘读取。索引访问不需要磁盘 I/O,从而可以预测性能。Aerospike 通过避免原地更新而通过使用大块写入的写前拷贝方法来提高 SSD 设备的耐用性。在从应用收到确认之前,Aerospike 可以将数据提交到磁盘。对 SSD 的访问以大规模并行的方式进行,每个节点和闪存设备上存储的数据量是均匀的,从而进一步避免出现热点及在工作负载变化时进行重新配置。
全闪存功能扩展了混合内存,以向传统关系型系统的首选的区域提供 Aerospike 的可靠性、一致性和易用性。通过添加 Aerospike 的部署选项,Aerospike 可以提供适合大型记录系统(HBase 或 HDFS 可能是其首选)的部署策略层。全闪存功能扩展了 Aerospike 的混合内存产品,以支持更广泛的案例。这些功能主要用于大量的(上千亿个)小型对象(<1000 字节),这在将单个行为存储为单独的数据库元素或者需要为 GDPR 样式的数据布局分离数据元素的架构中很常见。
内存存储子系统
在 Aerospike 的内存存储架构中,所有索引和整个数据集始终存在于 DRAM 中,并且仅将数据备份到持久性存储(可以是旋转磁盘,即 HDD)上。因此,所有应用读取的数据均来自 DRAM。但是,首先需要将数据写入在内存缓冲区,然后将其刷新到持久性存储(HDD 或 SSD)中。此外,在强一致性模式下,Aerospike 允许应用将每次写入的数据直接提交到持久性存储。
- + 动态数据均衡器
数据均衡机制可确保在所有节点上平均分配事务量,并且非常适用于在均衡本身的节点发生故障的情况。该系统是连续可用的,因此数据均衡不会影响集群行为。
益处
- 在可扩缩的无共享环境中优化事务的简便性。
- 集群可以在要求的时间自动恢复,而无需操作员干预。
- 通过容量规划和系统监控,将由于意外故障导致的服务损失降至最低。
- 通过硬件容量配置、预配置以及复制/同步策略,可以使用户免受数据库故障的影响。
将记录从一个节点移动到另一节点的过程称为迁移。每次集群视图更改后进行的数据迁移的目标是在每个数据分区的当前主节点和副本节点上同步每个记录的最新版本。
迁移优化
Aerospike 通过减少迁移工作量和时间对迁移进行了优化,这是由于:
- 节点仅协商记录中的增量(对于滚动升级特别有用)。
- 如果已知内容是同一分区的子集,则无需迁移。
- 迁移期间重复解析,以确保完成对记录的部分写入。
- + 自愈式智能集群
自愈式智能集群管理器负责无缝地向集群添加和删除节点。
心跳子系统
在节点之间存储和交换信息(相邻列表中相邻节点的状态)。(心跳用于定位新节点。)
集群子系统
维护与当前活动集群相对应的节点成员身份信息(节点继承列表),以保持一致性。
交换子系统
交换分区状态信息并触发数据均衡算法。
Aerospike 数据库科技
数据分配器
Aerospike 的数据分布 功能可实现独特的数据分区,使密钥在摘要空间中均匀分布,避免在数据访问期间创建热点,有助于实现高级别的扩缩性和容错能力。Aerospike 托管索引和数据,以避免在运行读取操作或查询时产生任何跨节点的流量。
跨节点进行统一的数据分布的好处在于:
- 应用的工作负载可以均匀地分布在整个集群中,
- 数据库操作的性能是可预测的,
- 纵向和横向扩展集群变得容易,并且
- 实时集群重配置和后续的数据均衡变得非常简单,无中断且高效。
分区分配是确定性的,它允许:
- 每个节点可以计算相同的分区图。
- 主分区和副本可以均匀地分布。
- 最小化分区移动。
易于编程的数据结构(例如列表和地图)提高了性能,并允许对字段值按索引查找。
实时事务引擎
实时事务引擎 负责根据请求读取和写入数据,同时提供一致性和隔离性。这涉及同步和异步复制,如果节点不可用或节点重新加入集后群(不可用之后)的发生冲突/重复解析,则向备用节点发出请求。
多核系统
通过将每个 CPU 套接字(而不是每个内核)的多个线程分组来减少非一致性内存访问 (NUMA) 区域之间的共享数据,从而改善延迟。
上下文切换(卸载)
避免了典型上下文切换产生的开销,某些操作在网络侦听器线程本身中运行,而无需放弃 CPU(并且系统创建的网络侦听器线程与内核数量一样多)。
内存分配
减轻应用或运行时环境的工作量,同时最大程度地减少对内存碎片整理的需求。通过将索引打包到 RAM 中来更好地利用系统资源。通过按命名空间将数据对象分组到同一切片或区域中,可以最大程度地减少碎片,因此可以优化长期对象的创建、访问、修改和删除模式。
数据结构设计
对索引树的安全且并发的读取、写入和删除访问无需持有多个锁,这是由于每个树元素都具有引用计数和自己的锁。这允许对嵌套数据结构(如索引树)的访问,无需在每个级别获取多个锁,从而减少了跨分区的资源争用。
调度和优先级划分
除了基本的键值存储操作外,Aerospike 还支持批量查询、扫描和二级索引查询。通过基于类型、所需的 CPU 工作量和控制正在生成的负载的作业分区,可以实现吞吐量和公平性的优先级划分。
跨数据中心复制 (XDR)
跨数据中心复制(XDR) 支持不同的复制拓扑配置,包括主动-主动、主动-被动、链式、星型和多跳型配置。
负荷分担
如果某个节点发生故障,则所有其他节点都将检测到此故障,并接管该故障节点待处理的工作。这种方案可以实现横向扩展,因为它可以添加更多节点来处理不断增加的复制负载。
数据传送
支持命名空间和数据传送的集级别粒度。系统进行了优化以减少传送的数据量,尤其是在热键的情况下。支持压缩(如果记录的数据大于 1 KB,则进行压缩是非常有益的;对于字符串和 blob 尤其如此)。
远程集群管理
跟踪远程集群状态更改,连接到远程集群的所有节点,维护连接池,并像常规客户端一样执行所有角色。比例传送/接收模型允许大小不同的集群发送/接收数据。只要一个节点可行,就可以继续传送新的更改,并且可以轻松地对节点的增加和减少进行调整。
流水线
Aerospike 使用异步流水线方案进行跨数据中心传送。源集群中的每个节点都与目标集群中的所有节点通信。在任何给定的时间点,连接上可能有多个记录正在等待写入目的地。这种流水线模型是 Aerospike 能够通过广域网在高延迟连接上实现高吞吐量的主要方式。
存储引擎
除了吞吐量和延迟的特性,Aerospike 存储和处理大量数据的能力决定了 DBMS 的纵向扩展能力。Aerospike 的设计完全利用了 SSD 技术。这使 Aerospike 可以在不到一毫秒的记录访问时间来管理一台机器上数十TB的数据。Aerospike 支持三种存储结构:混合内存、全闪存和内存:
Aerospike 实现了一种混合模型,其中索引完全存在于内存中(而不是持久性存储),并且数据仅存在于持久性存储(SSD)上,并且直接从磁盘读取。索引访问不需要磁盘 I/O,从而可以预测性能。Aerospike 通过避免原地更新而通过使用大块写入的写前拷贝方法来提高 SSD 设备的耐用性。在从应用收到确认之前,Aerospike 可以将数据提交到磁盘。对 SSD 的访问以大规模并行的方式进行,每个节点和闪存设备上存储的数据量是均匀的,从而进一步避免出现热点及在工作负载变化时进行重新配置。
全闪存功能扩展了混合内存,以向传统关系型系统的首选的区域提供 Aerospike 的可靠性、一致性和易用性。通过添加 Aerospike 的部署选项,Aerospike 可以提供适合大型记录系统(HBase 或 HDFS 可能是其首选)的部署策略层。全闪存功能扩展了 Aerospike 的混合内存产品,以支持更广泛的案例。这些功能主要用于大量的(上千亿个)小型对象(<1000 字节),这在将单个行为存储为单独的数据库元素或者需要为 GDPR 样式的数据布局分离数据元素的架构中很常见。
内存存储子系统
在 Aerospike 的内存存储架构中,所有索引和整个数据集始终存在于 DRAM 中,并且仅将数据备份到持久性存储(可以是旋转磁盘,即 HDD)上。因此,所有应用读取的数据均来自 DRAM。但是,首先需要将数据写入在内存缓冲区,然后将其刷新到持久性存储(HDD 或 SSD)中。此外,在强一致性模式下,Aerospike 允许应用将每次写入的数据直接提交到持久性存储。
动态数据均衡器
数据均衡机制可确保在所有节点上平均分配事务量,并且非常适用于在均衡本身的节点发生故障的情况。该系统是连续可用的,因此数据均衡不会影响集群行为。
益处
- 在可扩缩的无共享环境中优化事务的简便性。
- 集群可以在要求的时间自动恢复,而无需操作员干预。
- 通过容量规划和系统监控,将由于意外故障导致的服务损失降至最低。
- 通过硬件容量配置、预配置以及复制/同步策略,可以使用户免受数据库故障的影响。
将记录从一个节点移动到另一节点的过程称为迁移。每次集群视图更改后进行的数据迁移的目标是在每个数据分区的当前主节点和副本节点上同步每个记录的最新版本。
迁移优化
Aerospike 通过减少迁移工作量和时间对迁移进行了优化,这是由于:
- 节点仅协商记录中的增量(对于滚动升级特别有用)。
- 如果已知内容是同一分区的子集,则无需迁移。
- 迁移期间重复解析,以确保完成对记录的部分写入。
自愈式智能集群
自愈式智能集群管理器负责无缝地向集群添加和删除节点。
心跳子系统
在节点之间存储和交换信息(相邻列表中相邻节点的状态)。(心跳用于定位新节点。)
集群子系统
维护与当前活动集群相对应的节点成员身份信息(节点继承列表),以保持一致性。
交换子系统
交换分区状态信息并触发数据均衡算法。