データレイク

構造化・非構造化データを生の形式で大量に保存し、後から分析・加工するストレージ基盤

データ分析AWS

データレイクとは

データレイク (Data Lake) は、構造化データ (CSV, JSON)、半構造化データ (ログ)、非構造化データ (画像, 動画) を生の形式で大量に保存し、後から分析・加工するストレージ基盤である。データウェアハウスが「スキーマを定義してからデータを投入」するのに対し、データレイクは「まずデータを保存し、分析時にスキーマを適用」する。

データウェアハウスとの比較

観点 データレイク データウェアハウス
スキーマ Schema-on-Read Schema-on-Write
データ形式 生データ (何でも) 構造化データのみ
ストレージ S3 (安価) Redshift (高価)
用途 探索的分析、ML BI、定型レポート
データ品質 低い (生データ) 高い (ETL 済み)

AWS でのデータレイク

[データソース]
  DynamoDB StreamsKinesis FirehoseS3 (Raw)
  CloudWatch LogsKinesis FirehoseS3 (Raw)
  外部 APILambdaS3 (Raw)

[S3 データレイク]
  s3://data-lake/raw/        ← 生データ
  s3://data-lake/processed/  ← ETL 済みデータ
  s3://data-lake/curated/    ← 分析用データ

[分析]
  AthenaSQL でアドホッククエリ
  GlueETL ジョブ
  Redshift SpectrumS3 のデータを 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 のスキャン量を削減しコストを抑える。

基礎から学ぶなら関連書籍が手がかりになる。

関連用語