暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

新版Aerospike功能曝光,最实用的“干货”有必要看看!

Aerospike服务号 2022-05-17
845

Aerospike日前宣布推出Aerospike Database 6.0,目前这一最新版数据库服务器版本已全面上市(GA)。新版Aerospike充满了令人兴奋的功能,为应用程序开发人员提供了新的能力。


两年前推出的Aerospike Database 5.0对跨数据中心复制(XDR)进行了大幅改进。它使开发者能够创建高性能、跨地理区域的应用程序,并对其数据分布进行了更细粒度的控制。


最新版数据库产品建立在这些功能之上,反映了Aerospike对查询的日益关注。结合Aerospike Connect for Spark和Aerospike Connect for Presto (Trino),Aerospike Data Platform使客户在对他们的大型数据集进行操作时,具有低延迟的事务处理和分析能力。


本文会重点介绍三个主要功能:首先是Aerospike Database 6.0版本中的新查询功能;其次是通过Document API和二级索引提供对文档数据模型的支持;最后会谈到批处理操作,包括批处理写入。


此次共发布了7个版本,Aerospike Database Server 6.0是最后一个,它凝结了工程师们14个月的辛苦努力。它是一个大版本,包括有多个重大更新。详细信息可以查看发布说明和专门针对新存储格式和新二级索引查询能力的升级说明。



分区二级索引查询


新查询子系统始于Aerospike Database 5.0 的最后两个版本。Server 5.6中添加了Set索引(Set index),这是一种可选的索引类型,可提高特殊查询的性能。使用Set索引可以减少访问位于大型命名空间(Namespace)内小Set中的记录延迟。与主索引一样,Set索引支持快速重启。


Server 5.7通过二级索引和全新的高效垃圾收集能力减少了60%的内存消耗,查询性能和吞吐量也得到了改善。


Aerospike Database 6.0以这些变化为基础,采用与主索引设计相一致的新架构方法。Aerospike每个namespace中的数据均匀分布在4096个逻辑分区中,而这些逻辑分区又均匀分布在集群内各个节点上。每个分区的数据在称为sprigs的多个主索引子树中进行本地存储和建立索引。这使得主索引(PI)查询(以前称为“扫描”)能够大规模并行化。


PI查询可以针对所有分区、一组分区或单个数据分区进行。利用此功能,Spark和Presto (Trino)连接器可以将PI查询拆分为成百上千个分区查询,将数据并行提供给成千上万个worker,并通过水平扩展来响应需要快速处理 TB级数据的工作负载。这种架构非常适合分析系统。该组合创建了一个新一代分布式计算数据平台。


在6.0版本之前,二级索引查询只能在节点级别并行化。这意味着如果一个集群有40个节点,Spark和Presto(Trino)连接器可能实现的最大并行化是40个worker。由于企业可能在生产环境中使用具有数千个内核的Spark集群,不太可能允许其中绝大多数都处于空闲状态,因此这些连接器没有提供对二级索引查询的支持。


在6.0版本中,二级索引的架构进行了重新设计,使其可以单独对每个分区进行索引,从而可以实现二级索引(SI)查询的大规模并行化,并能和PI查询一样支持分页。此外,6.0版中的SI查询可以容忍数据的再平衡,并且不受集群大小变化时发生的数据自动迁移的影响。


因此,Spark和Presto(Trino)连接器以与当前执行PI查询相同的方式来支持SI查询。这为 Aerospike的管理员打开了大门,可以选择用内存换取性能改进。通过向散列程度适宜的数据集(Set)添加二级索引,SI查询的执行速度可以比同样的PI查询快几个数量级。


二级索引架构的变化反映在服务器的查询子系统中,它现在统一了两种类型的查询——主索引和二级索引。这种变化的背后是两者具有相同的执行层;指标已合并并且重新命名;客户端API中弃用了Scan类,统一用Query类来为PI查询和SI查询提供同样丰富的功能。


分区查询是通过客户端-服务器协调实现的,需要新的客户端版本,例如Java client 6.0.0、C client 6.0.0、Go client 6.0.0、C# client 5.0.0或Python client 7.0.0。如果应用程序使用这些客户端的老版本仍然能在Server 6.0上运行,但不会从再平衡容错中受益。同样,新客户端也可以与Server 5.x和Server 6.0节点通信,但需要完成集群升级才能解锁新功能。


后续版本的查询功能


Aerospike 6.0提供了更好的查询性能、更低的索引内存占用、更好的查询稳定性和更高的查询吞吐量。Aerospike Database 6.0后续版本将为查询添加更多功能性和操作性的改进。


在Aerospike Database社区版(CE)中,主索引和二级索引都存储在内存中,这意味着它们必须在需要相对较长时间的冷重启中重建。在 Aerospike Database企业版(EE)中,主索引默认保存在共享内存中,或者可选地保存在持久内存或闪存设备中。这使Aerospike EE服务器能够进行热(快速)重启,这明显更快。Server 6.1将增加在共享内存中存储二级索引的功能,允许在Aerospike守护程序(asd)存在时进行热重启。后续版本将允许二级索引存储在持久内存甚至闪存设备中。


目前二级索引可以建立在Map数据结构的顶级键之上。这通常用于索引JSON文档的顶级字段,这些字段作为Maps存储在Aerospike中。Server 6.1将增加对嵌套在任意深度的元素进行索引的能力。


存储、索引和查询JSON文档


自从引入Map和列表集合数据类型(CDT)以来,开发人员一直在将JSON文档存储在按键值排序的Map中,并把Aerospike作为文档数据库来用。开发人员在多操作事务中使用丰富的Map 和List API在服务器端以原子方式查询和操作文档数据。文档(Map)存储在更节省空间的MessagePack二进制序列化中,便于快速访问。


Aerospike Document API库(2021年年中推出)增加了用流行的JSONPath查询语言存储、修改和查询文档的能力。Document API基于原生Map API将这些查询拆分到服务器端执行,并由JSONPath库进行扩展。


Document API目前可用作Java客户端的包装器,还可用作Aerospike网关(也称为REST客户端)的接口。Document API库将用已有Aerospike客户端的其他编程语言改写。=>Document API库将被移植到具有Aerospike客户端的其他编程语言中。


连同即将推出的索引深度嵌套元素的功能,Aerospike Database 6.0增强了使用文档模型的应用程序的开发能力。结合强一致性、能扩展至PB级数据和数千亿个对象等功能,以及亚毫秒级的事务延迟,Aerospike可以作为一个大规模的文档数据库使用。


批量处理


刚开始,Aerospike客户端支持简单的批量获取命令,以允许根据键列表检索多个记录(或其中的bin)。同样,批处理命令exists命令从指定的键列表中一次性检查多个键是否存在。后来,客户端添加了使用批处理操作命令对键列表并行执行相同多操作事务的能力,但将事务中的操作类型限制为只读操作。


在Server 6.0中,增加了批量写入命令(对事务进行delete和operate操作也不再限制为写),使得开发人员具有在其应用程序中批量处理任何内容的能力,包括读取、写入、更新、删除或 UDF,这样逻辑相关的操作可以一次性地全部发送到数据库集群。


批量写入比在服务器上异步启动一系列命令更高效。


使用批处理可以:

1

减少完成所有操作所需的往返时间 (RTT),从而降低整体延迟

2

减少网络流量,使用更少的连接,并能将操作组合成更少的IP数据包

3

改进并行性,支持更快的数据提取

有着繁重写入或混合工作负载的应用程序开发人员,应考虑从异步写入转变为批处理,以获得更好的性能。


安全性增强


Server 6.0为基于角色的访问控制添加了三个新的细粒度权限。


· sindex-admin权限用于添加和删除二级索引。

· udf-admin权限用于添加和删除UDF模块。


以前,这些权限只有data-admin拥有,而有些用户不愿意让太多人有这一高级权限。


Truncate以前是write权限的一部分,现在是一个独立的权限。代表应用端程序来执行truncate命令的用户,需要被授予这个权限。


重大变化


如前所述,请务必阅读发行说明和升级说明。Server 6.0中的重大更改包括:


1、更改存储格式(每条记录后添加4字节结束标记)需要在升级过程中擦除持久存储设备(PMEM除外);必须将原始SSD设备的标头(前8MiB)归零。请参阅SSD初始化的介绍。


2、几个配置参数已被重命名或删除。


o 少数配置参数被改名:

  • scan-max-done修改为query-max-done

  • scan-threads-limit修改为query-threads-limit

  • background-scan-max-rps修改为background-query-max-rps

  • single-scan-threads修改为single-query-threads


o 以下查询配置参数被删除:

  • query-threads

  • query-worker-threads

  • query-microbenchmark

  • query-batch-size

  • query-in-transaction-thread

  • query-long-q-max-size

  • query-priority

  • query-priority-sleep-us

  • query-rec-count-bound

  • query-req-in-query-thread

  • query-short-q-max-size

  • query-threshold

  • query-untracked-time-ms

o 配置参数batch-without-digests已删除。


3、需要将truncate权限授予使用截断的应用程序。它不再是write特权的一部分。


4、弃用很久的谓词过滤 (PredExp) 已被删除,请使用过滤器表达式。


5、使用“Scan”模块的jobs:命令被删除,请改用“query”模块。


6、请注意,与Scan和query相关的指标已更改。


弃用的命令


早在服务器 5.7中不推荐使用的jobs:被删除,现在使用query-show。

scan-show被弃用,现在用query-show

scan-abort被弃用,现在用query-abort

scan-abort-all命令已弃用,现在用query-abort-all


关于Aerospike

1

Aerospike实时数据平台:使组织能够面对数十亿笔交易规模时实时采取行动,同时将服务器占用空间减少多达80%。

2

Aerospike多云平台:以可预测的亚毫秒级性能为实时应用程序提供支持,数据规模高达PB级,正常运行时间为5个9,并提供全球分布的、强一致的数据存储能力。

3

基于Aerospike实时数据平台构建的应用程序:可用于打击欺诈、面向在线电子商务进行商品推荐、支持全球数字支付等,并为数千万客户提供超个性化的用户体验。

服务客户包括:Airtel、Experian、Nielsen、PayPal、Snap、Wayfair、 Yahoo等。


公司总部位于加利福尼亚州山景城,在伦敦、班加罗尔和特拉维夫设有办事处,目前已在中国开展业务。

猛戳左下角“阅读原文”,既可以下载社区版本,也可以随时提问。欢迎添加小编微信:Aerospike_China,帮你解决更多问题。









文章转载自Aerospike服务号,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论