【DEA-C01】WEB問題集:データストア管理編

WEB問題集

DEA-C01#1(data-store)

ある企業では Amazon S3 上にデータレイクを構築する計画です。データのアクセス頻度はオブジェクトごとに大きく異なり、頻繁にアクセスするホットデータと、ほとんどアクセスしないコールドデータが混在しています。コスト最適化のため最も適切な S3 ストレージクラスはどれですか。

ディスカッション 0

正解:D

正解の根拠

S3 Intelligent-Tiering はオブジェクト単位でアクセスパターンを自動監視し、Frequent / Infrequent / Archive Instant Access の各階層へ自動移行するストレージクラスです。最低保管期間や取得料金が階層ごとに異なる Standard / IA を手動で運用する代わりに、月額わずかなモニタリング料金のみで最適階層を維持できるため、アクセス頻度が予測困難なデータレイクに最適となります。

S3 ストレージクラス比較

クラス取得遅延最低保管期間用途
Standardミリ秒なし頻繁アクセス
Intelligent-Tieringミリ秒〜数時間なし (移行自動)不規則なアクセス
Standard-IAミリ秒30 日低頻度アクセス
Glacier Instant Retrievalミリ秒90 日四半期程度のアクセス
Glacier Deep Archive12 時間180 日長期アーカイブ

Intelligent-Tiering 設定例

aws s3api put-object   --bucket my-data-lake   --key data/2026/file.parquet   --body file.parquet   --storage-class INTELLIGENT_TIERING

不正解の理由

  • A: 全データを Standard で保持するとコールドデータの保管コストが過大となり、データレイク用途には不適です。
  • B: 全 Glacier Deep Archive はホットデータの取得に 12 時間かかるため、業務利用に支障が出てしまいます。
  • C: 手動切替えはスクリプト保守と判定ロジックの運用負荷が高く、誤判定時の影響も大きくなります。

参考:Amazon S3 ストレージクラス

DEA-C01#2(data-store)

ある企業では Amazon Redshift でデータウェアハウスを運用しています。クラスター構築にあたり RA3 ノードタイプを選択する主な利点を 2 つ選んでください。

(2つ選択)

ディスカッション 0

正解:A, D

正解の根拠

RA3 ノードタイプは Redshift Managed Storage (RMS) と組合せて動作するアーキテクチャであり、(A) コンピュートとストレージを独立してスケーリングできる利点と、(D) Data Sharing 機能によりコピーレスで他クラスターとライブデータを共有できる利点を備えています。これによりストレージ容量に縛られないノード選定や、複数チームでの並列分析が効率化されます。

Redshift ノードタイプ比較

ノードストレージ分離Data Sharing
RA3RMS (S3 ベース)Compute / Storage 分離対応
DC2ローカル SSDCompute と Storage 一体非対応
ServerlessRMS (S3 ベース)分離対応

Data Sharing の SQL 例

-- Producer 側
CREATE DATASHARE sales_share;
ALTER DATASHARE sales_share ADD SCHEMA public;
GRANT USAGE ON DATASHARE sales_share TO ACCOUNT '123456789012';

-- Consumer 側
CREATE DATABASE sales_db FROM DATASHARE sales_share OF ACCOUNT '111111111111';

不正解の理由

  • B: RMS は S3 ベースの永続ストレージで自動バックアップされるため、コンピュート障害でデータが失われることはありません。
  • C: Compute と Storage を必ず一緒に増減するのは DC2 ノードの仕様で、RA3 はその逆の分離アーキテクチャです。
  • E: ノードタイプ変更は Elastic Resize で短時間 (数分〜数十分) で完了するため、24 時間ダウンタイムは発生しません。

参考:Redshift クラスタータイプ

DEA-C01#3(data-store)

ある企業では変動する分析ワークロード対応として Amazon Redshift の利用を検討しています。日中は重い分析クエリが集中する一方、夜間はほとんど利用がありません。運用負荷を最小化しコスト最適化したい場合、最適な選択肢はどれですか。

ディスカッション 0

正解:A

正解の根拠

Redshift Serverless はクラスター管理を意識せず、ワークロードに応じて RPU (Redshift Processing Unit) を自動でスケールするサービスです。利用していない時間は課金されず、Base Capacity と Max Capacity を設定するだけで運用可能となります。日中ピーク・夜間ゼロのような大きな利用変動があるワークロードでは、運用負荷とコストの両面で大きな利点が得られます。

Provisioned vs Serverless

項目ProvisionedServerless
キャパシティ単位ノード数RPU (8 RPU 単位)
課金ノード稼働時間RPU-hour (秒単位)
アイドル時課金ありなし
Pause/Resume手動自動
運用負荷中 (ノード設計必要)低 (Base/Max のみ)

Serverless 作成例

aws redshift-serverless create-workgroup   --workgroup-name analytics-wg   --namespace-name analytics-ns   --base-capacity 32   --max-capacity 256

不正解の理由

  • B: 常時最大ノード固定は夜間の過剰プロビジョンとなり、コスト効率が大きく悪化してしまいます。
  • C: Pause/Resume スクリプトは実装可能ですが、起動遅延と運用スクリプト管理の負荷が継続的に発生します。
  • D: ハイブリッド構成は分析データの分断と運用複雑化を招き、Associate レベルの最適解とは言えません。

参考:Amazon Redshift Serverless

DEA-C01#4(data-store)

AWS のデータベースサービスの中で、ミリ秒以下の低レイテンシで大量の読み書きを行うキー・バリュー型ストアが必要なユースケースに、最適な選択肢はどれですか。

ディスカッション 0

正解:D

正解の根拠

DynamoDB はミリ秒以下の応答性能を持つフルマネージドな NoSQL キー・バリューストアです。Partition Key (オプションで Sort Key) によるアクセスパターンに最適化されており、テーブルサイズや TPS に応じて自動でパーティション分割・スケールします。Global Tables、DAX キャッシュ、Streams 連携など、低レイテンシかつ大規模なキー・バリューワークロードに必要な機能が標準で揃っているため、本問の要件に最適な選択肢となります。

主要 DB サービスのレイテンシと設計

サービスモデルレイテンシ用途
DynamoDBKey-Value / Document1 桁ミリ秒低レイテンシ NoSQL
RDS PostgreSQLRDB数〜数十ミリ秒OLTP / 関係モデル
Redshift列指向 DWH秒〜分OLAP / 分析
ElastiCacheインメモリマイクロ秒〜ミリ秒揮発キャッシュ

DynamoDB 操作例 (boto3)

import boto3
table = boto3.resource('dynamodb').Table('Users')
table.put_item(Item={'user_id': 'U001', 'name': 'Taro', 'score': 95})
resp = table.get_item(Key={'user_id': 'U001'})

不正解の理由

  • A: RDS PostgreSQL は RDB であり、ミリ秒以下のキー・バリュー特化用途では DynamoDB に劣る性能特性です。
  • B: Redshift は OLAP 用途の DWH のため、低レイテンシ Key-Value ストアとしては設計目的が異なります。
  • C: ElastiCache は揮発性キャッシュであり、永続ストレージとしての利用は設計思想に反するアンチパターンです。

参考:Amazon DynamoDB の概要

DEA-C01#5(data-store)

DynamoDB のキャパシティモードについて、Provisioned と On-Demand の違いと適切な使い分けに関する記述で、正しい組合せはどれですか。

ディスカッション 0

正解:C

正解の根拠

DynamoDB の Provisioned モードは事前設定した RCU/WCU 単位で課金される方式で、安定したワークロードに対して低コストとなります。一方 On-Demand モードはリクエスト単位課金 (per-request pricing) で、キャパシティの事前設定が不要となるため、突発的な負荷や予測困難なトラフィックに最適です。本問では (C) のとおり「Provisioned = 予測可能な負荷」「On-Demand = 予測困難な負荷」が正しい使い分けとなります。

キャパシティモード比較

項目ProvisionedOn-Demand
課金単位RCU/WCU 時間リクエスト数
事前設定必要不要
自動スケールAuto Scaling 設定時のみ標準で自動
適性予測可能で安定変動が大きく予測困難
コスト目安稼働率 70% 超で割安低稼働率や急変動で割安

モード切替 CLI

aws dynamodb update-table   --table-name Orders   --billing-mode PAY_PER_REQUEST

不正解の理由

  • A: 課金単位の説明が逆転しており、Provisioned がキャパシティ単位、On-Demand がリクエスト単位となります。
  • B: On-Demand はキャパシティの事前設定が不要であり、自動スケールが標準で動作するモードです。
  • D: Provisioned は事前設定値に基づき動作するため、Auto Scaling を別途有効化しない限り自動スケールしません。

参考:DynamoDB のキャパシティモード