View a markdown version of this page

GAMESUS01-BP02 使用生命周期策略或 TTL 到期时间删除不必要的游戏用户数据、日志文件或过时的资产 - 游戏行业镜头

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

GAMESUS01-BP02 使用生命周期策略或 TTL 到期时间删除不必要的游戏用户数据、日志文件或过时的资产

您可以使用标签和数据类型来创建生命周期策略,或使用TTL将数据移动到存档存储空间或从服务中完全删除。这可能包括临时配置、过期的存档内容和不再需要的历史日志。大多数服务都支持标记。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

对于存储在 S3 中的数据,您可以使用生命周期策略将数据移动到不经常访问和存档的存储层。在 S3 生命周期配置中,您可以定义用于将对象从一个存储类转换为另一个存储类的规则,以节省存储成本。如果您不知道对象的访问模式,或者您的访问模式随着时间的推移而发生变化,则可以将对象转换到 S3 Intelligent-Tiering 存储类以自动节省成本。

Amazon S3 支持用于在存储类之间进行转换的瀑布模型,如下图所示。

可以向 S3 生命周期配置中添加转换操作,来指示 Amazon S3 在对象生命周期结束时删除对象。当对象根据其生命周期配置达到其生命周期结束时,Amazon S3 将根据存储桶所处的 S3 版本控制状态采取到期操作:

  • Non-versioned 存储桶:Amazon S3 将对象排队等待移除,然后异步将其移除,永久移除该对象。

  • Versioning-enabled 存储桶:如果当前对象版本不是删除标记,则 Amazon S3 会添加具有唯一版本 ID 的删除标记。这会使当前对象版本变为非当前版本,并使删除标记变为当前版本。

  • Versioning-suspended存储桶:亚马逊 S3 使用空值作为版本 ID 创建删除标记。此删除标记使用版本层次结构中的空版本 ID 替换对象版本,从而有效地删除该对象。

  • 当您向存储桶添加生命周期配置时,配置规则将应用到现有对象以及您在以后添加的对象。例如,如果您今天添加生命周期配置规则,其过期操作导致带有特定前缀的对象在创建 30 天后过期,则 Amazon S3 将排队移除已超过 30 天且具有指定前缀的现有对象。

DynamoDB 的生存时间(TTL)是一种经济实惠的方法,用于删除不再相关的项目。通过 TTL,您可以定义每个项目的过期时间戳,指示何时不再需要某个项目。DynamoDB 会在项目过期时间到期后的几天内自动将其删除,而不会消耗写入吞吐量。

  • 要使用 TTL,请先在表上启用它,然后定义一个特定的属性来存储 TTL 过期时间戳。时间戳必须用 Unix 纪元时间格式以秒为单位进行存储。每次创建或更新项目时,您都可以计算过期时间并将其保存在 TTL 属性中。

  • 具有有效过期 TTL 属性的商品通常会在到期后的几天内被系统删除。您仍然可以更新待删除的过期项目,包括更改或删除其 TTL 属性。更新过期项目时,我们建议您使用条件表达式来确保该项目随后未被删除。使用筛选表达式从扫描查询结果中删除过期的项目。

  • 已删除项目的工作原理与通过典型删除操作删除的项目类似。删除后,项目将以服务删除而不是用户删除的形式进入 DynamoDB Streams,并像其他删除操作一样从本地二级索引和全局二级索引中移除。 

使用 ElastiCache for Redis,您可以使用 TTL 或缓存密钥的到期时间来控制缓存数据的新鲜度。在设定的时间过后,密钥将从缓存中删除,并且需要访问原始数据存储库并访问更新的数据。 

  • 两个原则决定了要应用的适当的 TTL 以及要实现的缓存模式的类型。首先,了解基础数据的变化率很重要。其次,评估过时数据返回到应用程序而不是更新后的应用程序的风险非常重要。

  • 对于经常更改的动态数据,您可能需要应用较低的 TTL,使数据过期,其变化速率与主数据库的变化速率相匹配。这降低了返回过时数据的风险,同时仍提供缓冲区来减轻数据库请求的负担。

  •  同样重要的是要认识到,即使你只缓存几分钟或几秒钟的数据,而不是更长的持续时间,适当地将 TTL 应用于缓存的密钥也可以提高性能并改善游戏的整体玩家体验。 

实施步骤

  • 使用 Amazon S3 生命周期策略将对象转移到不经常访问或存档层,并配置过期操作以根据生命周期规则删除不必要的对象。

  • 在 DynamoDB 表中启用生存时间 (TTL) 以在不消耗写入吞吐量的情况下自动删除过期项目,以 Unix 纪元时间定义过期时间戳。

  • 根据数据更改率和过时数据的风险承受能力为 ElastiCache 密钥设置适当的 TTL,从而提高缓存数据的新鲜度并改善玩家体验。