Aurora/RDS Postgres 做為目標 - Amazon Timestream

自 2025 年 6 月 20 日起,Amazon Timestream for LiveAnalytics 將不再向新客戶開放。如果您想要使用 Amazon Timestream for LiveAnalytics,請在該日期之前註冊。現有客戶可以繼續正常使用服務。如需詳細資訊,請參閱 Amazon Timestream for LiveAnalytics 可用性變更

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Aurora/RDS Postgres 做為目標

本節說明將 S3 階段時間序列資料擷取至 Amazon RDS/Aurora PostgreSQL。擷取程序主要著重於從 Timestream 匯出工具產生的 CSV 檔案,以擷取至 Postgres。針對以時間為基礎的查詢,我們建議您使用適當的索引策略來設計 PostgreSQL 結構描述和資料表。使用任何 ETL 程序,將 Timestream 的特殊結構轉換為針對您的特定需求最佳化的關聯式資料表。將 Timestream 資料遷移至關聯式資料庫時,請以時間戳記資料欄做為主要時間索引、從 Timestream 的 measure_name 衍生的測量識別符資料欄,以及 Timestream 維度和實際量值的維度資料欄來建構結構描述。在時間範圍和經常查詢的維度組合上建立策略索引,以在資料轉換和載入過程中最佳化效能。將時間序列資料遷移至 PostgreSQL 時,適當的執行個體大小對於大規模維護查詢效能至關重要。選取執行個體類別時,請考慮您的預期資料量、查詢複雜性和並行需求,並特別注意時間序列彙總工作負載的記憶體配置。對於超過數百萬列的資料集,請利用 PostgreSQL 的原生分割功能和進階索引策略來最佳化時間序列存取模式。

我們建議您執行功能和效能測試,以選擇正確的執行個體並調校 PostgreSQL 資料庫,以解決任何效能瓶頸。透過來源 Timestream 資料庫和目標系統之間的範例查詢比較執行嚴格的資料完整性檢查,對於確保遷移成功和維護查詢正確性至關重要。透過對兩個系統執行相同的查詢並比較結果,包括記錄計數、彙總和極端值,您可以識別任何可能表示轉換錯誤、資料遺失或查詢解釋中的語意差異的差異。此驗證程序會驗證您的資料在遷移後維持其分析值、在依賴這些洞察的利益相關者之間建立對新系統的信心、協助識別任何必要的查詢調整,以適應平台之間的語法或功能差異,並建立可量化的基準,以判斷遷移何時可視為完成和成功。如果沒有這些系統性檢查,則可能未偵測到細微的資料不一致,這可能會導致業務決策不正確或破壞整個遷移專案的信心。

擷取

建議使用 AWS Database Migration Service (DMS) 搭配來源做為 S3 (支援 CSV 和 Parquet),搭配 PostgreSQL 做為目標。對於 AWS DMS 可能不適合您特定需求的案例,我們提供以 Python 為基礎的補充公用程式 (PostgreSQL CSV 擷取工具),用於將 CSV 資料從 S3 遷移至 PostgreSQL。

PostgreSQL CSV 擷取工具概觀

PostgreSQL CSV 擷取工具是一種高效能公用程式,旨在有效地將 CSV 檔案載入 PostgreSQL 資料庫。它利用多執行緒和連線集區平行處理多個檔案,大幅縮短資料載入時間。我們建議您使用 EC2 執行個體執行此指令碼。請考慮使用針對網路操作最佳化的執行個體類型,例如 C5N。

主要功能

  • 多執行緒處理:同時載入多個 CSV 檔案。

  • 連線集區:有效率地管理資料庫連線。

  • 自動資料欄偵測:從 CSV 標頭動態擷取資料欄名稱。

  • 重試邏輯:使用指數退避處理暫時性錯誤。

  • 檔案管理;將處理的檔案移至指定的目錄,讓重試繼續但不重新啟動。

  • 全面記錄:監控和故障診斷的詳細日誌。

  • 錯誤通知:故障的選用 SNS 通知。

  • 安全登入資料:從 AWS Secrets Manager 擷取資料庫密碼。

先決條件和安裝

請參閱 GitHub 中 PostgreSQL CSV 擷取工具讀我檔案的先決條件和安裝。

用途

python copy_postgres.py \ --database 'postgres_testing' \ --table 'demolarge_restored' \ --csv-files-dir '/data/csv_files/*partition*/*.csv' \ --host database-1.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com \ --secret-arn 'arn:aws:secretsmanager:<region>:<account_id>:secret:rds!cluster-xxxxx-xx-xx-xx-xxxxxxxx-xxxxx' \ --sns-topic-arn 'arn:aws:sns:<region>:<account_id>:<topic_name>'

驗證

您可以使用 DynamoDB 處理 Timestream 匯出工具產生的匯出資料列或日誌,並與從 PostgreSQL 擷取自動化日誌擷取的資料列進行比較。您可以針對具有一致匯出和匯入時間的來源和目標資料表選取計數,如果資料在遷移程序期間持續擷取,則計數會有所不同,因此建議比較匯出的資料列和記錄的重要資料列。

清除

  • 清除作為 Timestream for LiveAnalytics 匯出工具一部分建立的卸載資料。

  • 刪除 EC2 上下載的資料和日誌以回收空間。

  • 如果用於記錄作為 Timestream for LiveAnalytics 匯出工具的一部分,請刪除 DynamoDB 資料表。