歷史記錄模式 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

歷史記錄模式

在歷史記錄模式中,您可以設定零 ETL 整合,直接在 Amazon Redshift 中追蹤來源資料表中記錄的每個版本 (包括更新和刪除)。您可以對所有資料執行進階分析,例如執行歷史分析、建置回顧報告、執行趨勢分析,以及將增量更新傳送至以 Amazon Redshift 為基礎建置的下游應用程式。有多種 Amazon Redshift 零 ETL 整合支援歷史記錄模式,包括 Amazon Aurora MySQL、Amazon Aurora PostgreSQL、Amazon RDS for MySQL 和 Amazon DynamoDB。另外也有數種應用程式支援歷史記錄模式,例如 Salesforce、SAP、ServiceNow 和 Zendesk。

您可以從 Amazon Redshift 主控台 (https://console.aws.amazon.com/redshiftv2/) 開啟和關閉零 ETL 整合的歷史記錄模式。使用歷史記錄模式追蹤整合來源中已刪除或已修改的記錄。追蹤是在目標 Amazon Redshift 資料倉儲中進行。開啟歷史記錄模式不會影響這些資料表上定期分析查詢的效能。

開啟歷史記錄模式後,您在來源內捨棄的資料表並不會在 Amazon Redshift 中捨棄。資料表會改為顯示 DroppedSource 狀態,而您仍然可以查詢這些資料表。您也可以搭配一般 SQL 使用 DROP 和 RENAME 命令。

如果您想要在來源上重複使用相同的資料表名稱,則必須先 DROP 或 RENAME 對應的 DroppedState 資料表,才能將其複寫至 Amazon Redshift。務必先完成上述操作,再於來源上建立資料表。

如需使用歷史記錄模式時應考量事項的相關資訊,請參閱 在目標上使用歷史記錄模式時的考量事項

管理零 ETL 整合的歷史記錄模式
  1. 登入 AWS 管理主控台,開啟位於 https://console.aws.amazon.com/redshiftv2/ 的 Amazon Redshift 主控台。

  2. 從左側導覽窗格選擇無伺服器佈建叢集儀表板。然後,選擇零 ETL 整合

  3. 選取您要管理的零 ETL 整合,然後選擇管理歷史記錄模式管理歷史記錄模式視窗隨即顯示。

  4. 若目標資料表是從包含單一來源資料表 (例如 Amazon DynamoDB) 的來源類型複寫而來,則您可以關閉開啟該資料表的歷史記錄模式。當零 ETL 整合有多個可能的目標資料表時,您可以對所有現有和未來的資料表關閉對所有現有和未來的資料表開啟,或是管理個別資料表的歷史記錄模式。建立零 ETL 整合時,預設值為歷史記錄模式 off

    歷史記錄模式為 on 時,下列欄會新增至目標資料表,以便追蹤來源中的變更。歷史記錄模式 on 會增加每月用量和成本,因為 Amazon Redshift 不會刪除目標資料表中的任何記錄。任何已刪除或變更的來源記錄都會在目標中建立新記錄,導致目標中擁有多個記錄版本的總列數更多。在來源中刪除或修改記錄時,該記錄不會從目標資料表中刪除。您可以藉由刪除非作用中記錄來管理目標資料表。

    欄名稱 資料類型 說明
    _record_is_active Boolean 指出目標中的記錄目前是否在來源中處於作用中狀態。True 表示記錄處於作用中狀態。
    _record_create_time 時間戳記 來源記錄處於作用中狀態的開始時間 (UTC)。
    _record_delete_time 時間戳記 來源記錄更新或刪除時的結束時間 (UTC)。

    您可以藉由篩選欄 _record_is_active 為 false 的記錄,從歷史記錄模式資料表中刪除非作用中的記錄。下列 SQL DELETE 命令會從 id 欄小於或等於 100 的資料表中刪除非作用中的記錄。您刪除記錄後,在自動清空刪除執行時,就會回收已刪除記錄的儲存空間。

    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