历史记录模式 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

历史记录模式

利用历史记录模式,您可以将零 ETL 集成配置为直接在 Amazon Redshift 中跟踪源表中记录的每个版本(包括更新和删除)。您可以对所有数据运行高级分析,例如运行历史分析、生成回顾报告、执行趋势分析以及向基于 Amazon Redshift 构建的下游应用程序发送增量更新。多个 Amazon Redshift 零 ETL 集成支持历史记录模式,包括 Amazon Aurora MySQL、Amazon Aurora PostgreSQL、Amazon RDS for MySQL 和 Amazon DynamoDB。

您可以从 Amazon Redshift 控制台 (https://console.aws.amazon.com/redshiftv2/) 启用和禁用零 ETL 集成的历史记录模式。使用历史记录模式跟踪集成来源中已删除或修改的记录。跟踪在目标 Amazon Redshift 数据仓库中执行。启用历史记录模式不会影响针对这些表的常规分析查询的性能。

有关使用历史记录模式时的注意事项的信息,请参阅在目标上使用历史记录模式时的注意事项

管理零 ETL 集成的历史记录模式
  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/

  2. 从左侧导航窗格中,选择无服务器预置集群控制面板。然后,选择零 ETL 集成

  3. 选择要管理的零 ETL 集成,然后选择管理历史记录模式。这将显示管理历史记录模式窗口。

  4. 您可以为从具有单一源表(例如 Amazon DynamoDB)的来源类型复制的目标表禁用启用历史记录模式。当零 ETL 集成具有多个可能的目标表时,您可以为所有现有表和将来表禁用为所有现有表和将来表启用为单个表管理历史记录模式。创建零 ETL 集成时,默认值为历史记录模式 off

    在将历史记录模式设置为 on 后,会将以下列添加到目标表中以跟踪来源中的更改。历史记录模式 on 会增加每月使用量和成本,因为 Amazon Redshift 不会删除目标表中的任何记录。删除或更改任何源记录都会在目标记录中创建一条新记录,这会增加包含多个记录版本的目标中的总行数。在源表中删除或修改记录时,不会从目标表中删除该记录。您可以通过删除非活动记录来管理目标表。

    列名称 数据类型 描述
    _record_is_active 布尔值 指示目标中的记录当前在源中是否处于活动状态。True 指示记录处于活动状态。
    _record_create_time Timestamp 源记录处于活动状态时的起始时间(UTC)。
    _record_delete_time Timestamp 更新或删除源记录时的结束时间(UTC)。

    通过筛选列 _record_is_active 为 false 的记录,可以从历史记录模式表中删除非活动记录。以下 SQL DELETE 命令从 id 列小于或等于 100 的表中删除非活动记录。删除记录后,在自动 vacuum 操作删除运行时,将回收已删除记录的存储空间。

    DELETE FROM myschema.mytable where not _record_is_active AND id <= 100;

    在将历史记录模式设置为 off 后,Amazon Redshift 会在目标数据库中创建表副本,其中包含活动记录,但不包含添加的历史记录列。Amazon Redshift 将您的表重命名为 table-name_historical_timestamp 以供您使用。如果您不再需要表的副本,则可以将其删除。可以使用 ALTER TABLE 命令重命名这些表。例如:

    ALTER TABLE [schema-name.]table-name_historical_timestamp RENAME TO new_table_name;

    有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 ALTER TABLE

也可以使用 SQL 命令 CREATE DATABASE 和 ALTER DATABASE 管理历史记录模式。有关如何设置 HISTORY_MODE 的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 CREATE DATABASEALTER DATABASE