あるeコマース企業は、Amazon Aurora MySQLで稼働するOLTPデータベースのデータをAmazon Redshiftにほぼリアルタイムで反映させるシステムを構築しようとしています。以下の要件があります。 ・ソースデータベース(Aurora MySQL)への処理負荷を最小限に抑えること ・INSERT・UPDATE・DELETEの変更差分のみを継続的にRedshiftに反映すること ・初回全件移行の完了後は差分同期のみを行うこと 最も適切な方法はどれか?
AWS DMS CDCは、ソースデータベースのトランザクションログ(MySQLのバイナリログ)を読み取ることでINSERT・UPDATE・DELETEの変更差分のみを継続的に取得します。ログベースの読み取りはソースDBへの追加負荷を最小限に抑え、Aurora MySQLからRedshiftへのCDCは正式サポートされています。初回フルロードタスクと継続的レプリケーションタスクを組み合わせることで要件を満たせます。 選択肢AのGlue ETLジョブによるタイムスタンプ差分抽出は、DELETEされたレコードを捕捉できず、バッチ実行のため遅延が生じます。またタイムスタンプ列の存在が前提となる設計上の制約があります。 選択肢BのDMSフルロードを定期実行する方法は、毎回全件データを転送するためソースDBへの負荷が高く、大規模テーブルでは処理時間も長くなり「ほぼリアルタイム」の要件を満たしません。 選択肢DはKinesis Data Streamsへのイベント発行にアプリケーション層の改修が必要であり、ETLインフラではなくアプリケーションコードへの侵襲的な変更を伴います。