データレイク
構造化・非構造化データを生の形式で大量に保存し、後から分析・加工するストレージ基盤
データ分析AWS
データレイクとは
データレイク (Data Lake) は、構造化データ (CSV, JSON)、半構造化データ (ログ)、非構造化データ (画像, 動画) を生の形式で大量に保存し、後から分析・加工するストレージ基盤である。データウェアハウスが「スキーマを定義してからデータを投入」するのに対し、データレイクは「まずデータを保存し、分析時にスキーマを適用」する。
データウェアハウスとの比較
| 観点 | データレイク | データウェアハウス |
|---|---|---|
| スキーマ | Schema-on-Read | Schema-on-Write |
| データ形式 | 生データ (何でも) | 構造化データのみ |
| ストレージ | S3 (安価) | Redshift (高価) |
| 用途 | 探索的分析、ML | BI、定型レポート |
| データ品質 | 低い (生データ) | 高い (ETL 済み) |
AWS でのデータレイク
[データソース]
DynamoDB Streams → Kinesis Firehose → S3 (Raw)
CloudWatch Logs → Kinesis Firehose → S3 (Raw)
外部 API → Lambda → S3 (Raw)
[S3 データレイク]
s3://data-lake/raw/ ← 生データ
s3://data-lake/processed/ ← ETL 済みデータ
s3://data-lake/curated/ ← 分析用データ
[分析]
Athena → SQL でアドホッククエリ
Glue → ETL ジョブ
Redshift Spectrum → S3 のデータを Redshift から直接クエリ
SageMaker → 機械学習
Athena で S3 を直接クエリ
-- S3 上の JSON ファイルを SQL でクエリ (サーバーレス)
CREATE EXTERNAL TABLE orders (
order_id STRING,
user_id STRING,
amount DOUBLE,
created_at TIMESTAMP
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://data-lake/raw/orders/';
SELECT user_id, SUM(amount) as total
FROM orders
WHERE created_at > DATE '2026-01-01'
GROUP BY user_id
ORDER BY total DESC
LIMIT 10;
データレイクのアンチパターン: データスワンプ
データレイクにデータを投入するだけで、カタログ化やガバナンスを行わないと「データスワンプ (データの沼)」になる。
| 問題 | 対策 |
|---|---|
| どのデータがどこにあるか分からない | Glue Data Catalog でメタデータ管理 |
| データの品質が不明 | Glue DataBrew でプロファイリング |
| アクセス制御がない | Lake Formation で権限管理 |
| 重複データが大量にある | パーティショニングとライフサイクルポリシー |
パーティショニング
s3://data-lake/orders/year=2026/month=03/day=15/data.parquet
日付でパーティショニングすることで、Athena のスキャン量を削減しコストを抑える。
基礎から学ぶなら関連書籍が手がかりになる。