データレイク
構造化・非構造化データを生の形式で大量に保存し、後から分析・加工するストレージ基盤
データ分析AWS
データレイクとは
データレイク (Data Lake) は、構造化データ (CSV, JSON)、半構造化データ (ログ)、非構造化データ (画像, 動画) を生の形式で大量に保存し、後から分析・加工するストレージ基盤である。データウェアハウスが「スキーマを定義してからデータを投入」するのに対し、データレイクは「まずデータを保存し、分析時にスキーマを適用」する。
データウェアハウスとの比較
データウェアハウスとの主な違いを以下に比較する。
| 観点 | データレイク | データウェアハウス |
|---|---|---|
| スキーマ | Schema-on-Read | Schema-on-Write |
| データ形式 | 生データ (何でも) | 構造化データのみ |
| ストレージ | S3 (安価) | Redshift (高価) |
| 用途 | 探索的分析、ML | BI、定型レポート |
| データ品質 | 低い (生データ) | 高い (ETL 済み) |
AWS でのデータレイク
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 を直接クエリ
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 のスキャン量を削減しコストを抑える。
基礎から学ぶなら関連書籍が手がかりになる。
この記事は役に立ちましたか?
関連用語
データウェアハウス
分析用に最適化された大規模データストアで、複数のデータソースを統合して意思決定を支援する
Athena
S3 上のデータを標準 SQL で直接クエリできる AWS のサーバーレス分析サービス
AWS Glue
AWS のサーバーレス ETL サービスで、データの抽出・変換・ロードとデータカタログ管理を提供する
Redshift
AWS のペタバイト規模のデータウェアハウスサービスで、大量データの分析クエリを高速に実行する
DynamoDB
AWS のフルマネージド NoSQL データベースで、ミリ秒単位のレイテンシとシームレスなスケーリングを提供する
OLAP vs OLTP
オンライン分析処理 (OLAP) とオンライントランザクション処理 (OLTP) の違いと使い分け