通过 Amazon S3 生命周期优化 Snowflake 的数据管理和处理时间
关键要点
Snowflake 利用 Amazon S3 生命周期规则管理临时对象的过期,自动化数据管理过程。采用对象标签,Snowflake 能够有效删除不再需要的临时对象,进而提升处理速度达 80。通过使用 Amazon S3 生命周期,Snowflake 简化了其临时数据管理服务,使工程师能够专注于更高价值的工作。Snowflake,作为 APN 伙伴,帮助组织转型、整合和分析其数据。自 2012 年以来,通过在 AWS 上运行,公司及时应对了快速增长的客户基础截至 2024 年 1 月实现 22 年增长率。随着客户数量的增加,可管控的高效数据管理成为 Snowflake 的首要任务,以管理运营开销和成本。

在数据存储方面,Snowflake 使用 Amazon S3,该对象存储服务提供行业领先的可扩展性、数据可用性、安全性和性能。为了删除不需要的数据,Snowflake 开发了内部数据管理服务,但该服务需要不断维护,产生计算成本,也不易于扩展。因此,Snowflake 转向了 Amazon S3 生命周期,允许 S3 客户设置规则,自动将数据过渡到其他存储类或到期对象,从而有效控制 S3 的存储费用。
在本文中,我们讨论了 Snowflake 如何利用 Amazon S3 生命周期与对象标签自动化不再需要的临时对象过期。通过减少未使用的对象,Snowflake 提升了处理时间达 80,并让团队能够将精力集中在对客户有更大影响的项目上。
大规模数据管理
Snowflake 为其客户管理 Amazon S3 中的数据,每天处理数十亿个对象。当 Snowflake 客户执行需要大量内存的查询时,通常会在 S3 上创建临时数据。查询完成后,不再需要这些临时对象,因此会将其清理以优化存储成本。随着操作规模的扩大,这些操作会生成大量的临时数据,与持久性表数据一起存储在 Amazon S3 中。
为管理这一过程,Snowflake 开发了一项名为 临时数据管理器 的服务。该服务可以检测并删除其 S3 桶中的临时对象。此服务会列出 Snowflake 桶中的对象,识别临时对象,并利用 Amazon S3 多对象删除 API 将其删除。
这种方法面临以下挑战:
维护:Snowflake 必须承担临时数据管理器服务的维护和工程工作,包括打补丁、更新应用程序以及维护底层的 Amazon EC2 基础设施。另外,为识别待删除的临时对象而所需的业务逻辑也需仔细实施。计算成本:临时数据管理器的列表和删除逻辑需要计算资源,因此增加了运行大查询的成本。扩展性:客户查询的激增要求临时数据管理器服务快速扩展,这可能会导致处理延迟和意外存储成本。选择 Amazon S3 生命周期
Snowflake 寻求一种更高效的解决方案来管理这些临时对象的过期。他们最终选择了 Amazon S3 生命周期,因为它帮助管理对象,使得它们在整个生命周期内以具成本效益的方式进行存储,通过自动化规则到期对象或将其过渡到另一个存储类,消除了管理自定义应用程序的繁重工作。
解决方案概述
Amazon S3 生命周期规则可以适用于桶中所有或部分对象。客户可以根据对象所在的前缀,或根据应用于其对象的标签,选择对生命周期规则进行过滤。由于 Snowflake 仅想删除临时对象,而这些临时对象与永久数据存储在相同前缀中,他们决定使用对象标签进行过滤。
为实施这一变更,Snowflake 完成了以下两项任务:
在所有临时对象的 PUT 操作中添加对象标签,以便通过 S3 生命周期过滤器进行识别。更新 Amazon S3 生命周期配置,以包括对象标签作为过滤器。PUT 操作中的对象标签
为了在 PUT 操作中实现标签创建自动化,Snowflake 开始使用 xamztagging 请求头 创建已附加标签的临时对象。这种方式下的标记操作是免费的。以下是 PUT 操作的示例:
电脑版免费加速器bashaws s3api putobject bucket temporarydatamanager key dir1/myimagestarbz2 body emediavideosfsharp3dataservicesmp4 tagging ObjectType=temp
基于标签过滤的 Amazon S3 生命周期配置
接着,Snowflake 更新了其 S3 生命周期配置,以包括对象标签作为过滤器。在以下示例中,生命周期规则指定了基于标签键=ObjectType和值值=temp的过滤器。因此,生命周期规则仅适用于桶中的部分对象。过期设置为 7 天,这意味着 S3 会在对象创建后 7 天采取行动。以下是 S3 生命周期配置的示例:
xml
deleteobjectwithTag ObjectTypetemp Enabled 7
标签值只是您可以在 S3 生命周期策略中应用的众多过滤器之一。您可以在 Amazon S3 文档 中了解更多关于生命周期过滤器的信息。
结论
在本文中,我们讨论了 Snowflake 如何通过使用 Amazon S3 生命周期规则和 S3 对象标签实施高效的存储生命周期策略。这种实现简化了他们的临时数据管理服务,并使 Snowflake 的工程师能够专注于更高价值的工作。基于 S3 生命周期的系统使临时对象的处理时间提高了 80,得以在没有任何人工干预或管理开销的情况下,过期数十亿对象或数十 PB 数据。
如需进一步的 S3 生命周期策略支持,请联系 AWS 支持 和您的 AWS 账户团队。
标签: Amazon S3 生命周期、亚马逊简单存储服务 (Amazon S3)、AWS 云存储、AWS 合作伙伴网络 (APN)