Amazon Timestream for LiveAnalytics と同様の機能については、Amazon Timestream for InfluxDB を検討してください。リアルタイム分析のために、簡略化されたデータ取り込みと 1 桁ミリ秒のクエリ応答時間を提供します。詳細については、こちらを参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ターゲットとしての Aurora/RDS Postgres
このセクションでは、S3 ステージングされた時系列データを Amazon RDS/Aurora PostgreSQL に取り込む方法について説明します。取り込みプロセスは主に、Postgres に取り込むために Timestream のエクスポートツールから生成された CSV ファイルに焦点を当てます。PostgreSQL スキーマとテーブルは、時間ベースのクエリに適したインデックス作成戦略で設計することをお勧めします。任意の ETL プロセスを使用して、Timestream の特殊な構造を、特定の要件に最適化されたリレーショナルテーブルに変換します。Timestream データをリレーショナルデータベースに移行するときは、プライマリタイムインデックスとしてタイムスタンプ列、Timestream の measure_name から派生した測定識別子列、Timestream のディメンションと実際のメジャーからのディメンション列を使用してスキーマを構築します。時間範囲と頻繁にクエリされるディメンションの組み合わせに関する戦略的インデックスを作成して、データ変換とロードプロセス中のパフォーマンスを最適化します。時系列データを PostgreSQL に移行する場合、クエリパフォーマンスを大規模に維持するには、適切なインスタンスサイズ設定が重要です。インスタンスクラスを選択するときは、予想されるデータ量、クエリの複雑さ、および同時実行要件を考慮します。特に、時系列集計ワークロードのメモリ割り当てに注意してください。数千万行を超えるデータセットの場合、PostgreSQL のネイティブパーティショニング機能と高度なインデックス作成戦略を活用して、時系列アクセスパターンを最適化します。
機能テストとパフォーマンステストを実行して適切なインスタンスを選択し、PostgreSQL データベースを調整してパフォーマンスのボトルネックに対処することをお勧めします。移行が成功し、クエリの正確性を維持するためには、ソース Timestream データベースとターゲットシステム間のサンプルクエリ比較を通じて厳密なデータ整合性チェックを実行することが重要です。両方のシステムに対して同一のクエリを実行し、レコード数、集計、外れ値などの結果を比較することで、変換エラー、データ損失、またはクエリ解釈の意味的違いを示す可能性のある不一致を特定できます。この検証プロセスでは、データが移行後に分析値を維持していることを検証し、これらのインサイトに依存する利害関係者の間で新しいシステムの信頼性を構築し、プラットフォーム間の構文や機能の違いに対応するために必要なクエリ調整を特定し、移行が完了して成功と見なされるタイミングを決定するための定量化可能なベースラインを確立します。これらの体系的なチェックを行わないと、わずかなデータの不整合が検出されず、誤ったビジネス上の意思決定や移行プロジェクト全体の信頼の低下につながる可能性があります。
取り込み
ソースを S3 とし (CSV と Parquet の両方がサポートされています)、ターゲットを PostgreSQL とする AWS Database Migration Service (DMS) を使用することをお勧めします。 AWS DMS が特定の要件に適さないシナリオでは、S3 から PostgreSQL に CSV データを移行するための補足的な Python ベースのユーティリティ (PostgreSQL CSV Ingestion Tool
PostgreSQL CSV 取り込みツールの概要
PostgreSQL CSV Ingestion Tool は、CSV ファイルを PostgreSQL データベースに効率的にロードするように設計された高性能ユーティリティです。マルチスレッドと接続プーリングを活用して複数のファイルを並行して処理し、データのロード時間を大幅に短縮します。EC2 インスタンスを使用してこのスクリプトを実行することをお勧めします。C5N などのネットワークオペレーションに最適化されたインスタンスタイプを使用することを検討してください。
主な特徴
-
マルチスレッド処理: 複数の CSV ファイルを同時にロードします。
-
接続プーリング: データベース接続を効率的に管理します。
-
自動列検出: CSV ヘッダーから列名を動的に抽出します。
-
再試行ロジック: エクスポネンシャルバックオフで一時的なエラーを処理します。
-
ファイル管理: 処理されたファイルを指定されたディレクトリに移動するため、再試行は再開されますが、再起動はされません。
-
包括的なログ記録: モニタリングとトラブルシューティングの詳細ログ。
-
エラー通知: 障害に対するオプションの SNS 通知。
-
Secure Credentials: AWS Secrets Manager からデータベースパスワードを取得します。
前提条件とインストール
GitHub の PostgreSQL CSV Ingestion Tool Readme
使用方法
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>'
検証
Timestream のエクスポートツールによって生成されたエクスポートされた行またはログに DynamoDB を使用し、PostgreSQL Ingestion オートメーションログから取り込まれた行と比較できます。移行プロセス中にデータが継続的に取り込まれている場合、ソーステーブルとターゲットテーブルに対して一貫したエクスポートおよびインポート時間でカウントを選択できます。カウントは異なるため、エクスポートされた行とログ記録から重要な行を比較することをお勧めします。
クリーンアップ
-
Timestream for LiveAnalytics エクスポートツールの一部として作成されたアンロードされたデータをクリーンアップします。
-
EC2 でダウンロードしたデータとログを削除して、スペースを再利用します。
-
Timestream for LiveAnalytics エクスポートツールの一部としてログ記録に使用する場合は、DynamoDB テーブルを削除します。