历史记录模式
利用历史记录模式,您可以将零 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 Web Services Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/
。 -
从左侧导航窗格中,选择无服务器或预置集群控制面板。然后,选择零 ETL 集成。
-
选择要管理的零 ETL 集成,然后选择管理历史记录模式。这将显示管理历史记录模式窗口。
您可以为从具有单一源表(例如 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 将您的表重命名为
以供您使用。如果您不再需要表的副本,则可以将其删除。可以使用 ALTER TABLE 命令重命名这些表。例如:table-name
_historical_timestamp
ALTER TABLE
[schema-name.]
table-name_historical_timestamp
RENAME TOnew_table_name
;有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 ALTER TABLE。
也可以使用 SQL 命令 CREATE DATABASE 和 ALTER DATABASE 管理历史记录模式。有关如何设置 HISTORY_MODE 的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 CREATE DATABASE 和 ALTER DATABASE。