DEAデータの取り込みと変換
ある金融データ分析企業は、Amazon Kinesis Data Streams でリアルタイムの市場価格データを受信しています。このデータをAmazon Redshiftのテーブルでほぼリアルタイム(30秒以内のレイテンシ)に利用可能にし、BIダッシュボードから直接クエリしたいと考えています。S3への中間保存を避け、インフラの複雑性を最小化したいという要件もあります。最も適切なアーキテクチャはどれですか?
AAmazon Data Firehose でS3にデータをバッファリングして書き込み、Amazon Redshift の自動COPYコマンドでS3からRedshiftテーブルへロードする
Amazon Data Firehose のS3バッファリングは最短でも60秒以上のレイテンシが生じ、COPYコマンドの実行間隔を合わせると30秒以内の要件を満たすことが困難です。S3への中間保存も発生し、要件に反します。
BAWS Glue Streaming ETLジョブでKinesis Data Streamsを読み込み、JDBC経由でAmazon Redshiftのテーブルにリアルタイム書き込みする
AWS Glue Streaming ETLはApache SparkベースでKinesisからの読み込みが可能ですが、JDBCによるRedshiftへの書き込みはレイテンシ・スループットの面で課題があり、Glueクラスターの管理コストも増加します。
CAmazon Redshift Streaming Ingestion を設定し、Kinesis Data Streams を参照する外部スキーマとマテリアライズドビューを作成して直接クエリする
✓ 正解
Redshift Streaming Ingestionを使用してKinesis Data Streamsに直接接続し、外部スキーマとマテリアライズドビューにより数秒〜数十秒のレイテンシでデータを取り込めます。S3への中間保存が不要でアーキテクチャもシンプルです。
DAmazon Kinesis Data StreamsをトリガーにAWS LambdaでデータをAmazon Redshiftへ直接INSERTする
LambdaによるRedshiftへの直接INSERTは小規模では動作しますが、高スループット環境ではLambdaの同時実行数とRedshiftの接続数管理が複雑化し、大規模ストリーミングには推奨されません。
解説
Amazon Redshift Streaming Ingestion は、Amazon Kinesis Data Streams(またはAmazon MSK)から直接Redshiftへデータを取り込む機能です。Kinesis Data Streamsを参照する外部スキーマを作成し、その上にマテリアライズドビューを定義して `REFRESH MATERIALIZED VIEW` を実行することで、S3などの中間ストレージを介さずに数秒から数十秒のレイテンシでRedshiftにデータを反映できます。S3への書き込みやCOPYコマンドが不要でアーキテクチャがシンプルになります。
選択肢AのAmazon Data FirehoseはS3へのバッファリング(最小60秒)とCOPYコマンドの実行間隔を合わせるとレイテンシが数分以上になることが多く、30秒以内の要件を満たすことが困難です。またS3への中間保存も発生します。
選択肢BのAWS Glue Streaming ETLはApache Sparkベースの柔軟なストリーミング処理が可能ですが、JDBCによるRedshiftへの書き込みはスループットやレイテンシの面で課題があり、クラスター管理コストも発生します。
選択肢DのAWS Lambdaを経由したINSERTは小規模では機能しますが、高スループット環境ではLambdaの同時実行数管理とRedshiftへの接続数管理が複雑になり、本番環境での大規模ストリーミングには推奨されません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →