亚马逊云科技正在为其Aurora PostgreSQL数据库管理系统增加直接查询Apache Iceberg数据湖的能力,使应用程序能够在不复制数据或创建提取/转换/加载管道的情况下,将实时交易数据与历史记录结合使用。
该功能将DuckDB分析引擎嵌入到Aurora PostgreSQL中,以支持存储在Iceberg和Apache Parquet格式中的数据。客户可以使用现有的PostgreSQL应用程序、工具和终端节点,查询运营记录以及存储在Amazon S3(包括S3 Tables)中的数据。
亚马逊云科技上月收购了这款热门开源数据库的开发商DuckLabs B.V.。
亚马逊云科技将这项功能定位为简化应用程序开发、减少维护数据管道所需工程工作量的一种方式。潜在用途包括实时仪表盘、结合历史信息的交易数据,以及需要同时访问当前记录和存档记录的人工智能智能体。
此前,要将Aurora中的近期交易数据与S3中的历史记录结合,通常需要反向ETL管道。这会导致数据重复、增加基础设施成本,并需要持续开展工作以保持记录同步。
亚马逊云科技首席解决方案架构师Esra Kayabali在一篇公告文章中写道:"随着你越来越多地将AI智能体嵌入到应用程序中,这个挑战会不断加剧,因为预测并提前复制智能体可能需要的每个数据集是不切实际的。"
DuckDB在Aurora内部处理分析扫描,避免了查询处理所需的额外网络跳转。一个查询可以同时访问数据湖记录和实时运营数据,包括尚未提交的写入操作。亚马逊云科技表示,这项集成是其将DuckDB引擎广泛应用于各项服务的一个范例。
该功能还通过与AWS Glue无服务器数据集成服务中的数据目录进行联合,支持兼容Iceberg表述性状态传递目录规范的外部目录。客户可以向Glue注册外部目录,并创建引用其数据的外部表。随后,应用程序便可将Aurora记录与跨多个目录注册的Iceberg表进行连接查询。
为限制读取的数据量,Aurora在查询执行期间会过滤记录并选择相关列。它还会缓存频繁访问的数据。开发人员可以查看相关指标,包括扫描的行数、从S3读取的字节数以及缓存命中情况。
在一个金融应用示例中,Kayabali演示了一个查询,将Aurora中七天的客户交易数据与存储在S3中Parquet文件里的五年历史交易数据结合起来。Aurora从文件元数据中推断出历史表的结构,从而无需手动定义列。
对于需要个位数毫秒级延迟的工作负载,客户可以使用标准SQL命令将选定的数据湖记录复制到原生Aurora表中。读取查询可以在集群的写入节点或读取副本上运行,从而将分析扫描从运营工作负载中卸载出来。而物化数据的命令则在写入节点上运行。
客户可通过aurora_analytics扩展程序,以及授予S3和Glue访问权限的AWS身份与访问管理角色来启用此功能。该功能支持Aurora PostgreSQL 17和18版本,分别从17.11和18.6版本开始提供。
亚马逊云科技表示,该功能已在所有商业AWS区域提供,不收取额外的功能费用。客户只需为查询消耗的增量Aurora计算资源以及读取文件所用的S3请求付费。
Q&A
Q1:AWS这次推出的新功能主要解决什么问题?
A:该功能让Aurora PostgreSQL能够直接查询Apache Iceberg数据湖,使应用程序无需复制数据或搭建ETL管道,就能将实时交易数据与历史记录结合使用,省去了维护反向ETL管道的额外成本和工作量。
Q2:这个功能对AI智能体应用有什么帮助?
A:AI智能体往往需要同时访问当前数据和历史存档数据,很难提前预测并复制每个数据集。该功能让智能体可以直接在一次查询中同时访问Aurora中的运营数据和S3数据湖中的历史记录,无需提前准备数据。
Q3:使用这项新功能需要满足什么条件,是否收费?
A:客户需要启用aurora_analytics扩展,并配置具备S3和Glue访问权限的IAM角色,支持Aurora PostgreSQL 17.11及以上、18.6及以上版本。该功能本身不额外收费,只需为实际消耗的Aurora计算资源和S3请求付费。
