FOR PRACTITIONERS実務向け

Nデータ・AI・移行段3基盤層とは

データレイクとは何か|S3・Glue Data Catalog・Athena の基本形と、データウェアハウスとの違い

データレイクとは何か|S3・Glue Data Catalog・Athena の基本形と、データウェアハウスとの違い

「ログも売上も、とりあえず S3 に置いてある。そこから分析したいと言われたが、データベースに入れ直すべきか、S3 のまま使えるのかが分からない」。データレイクという言葉は聞くのに、S3・Glue・Athena・Lake Formation・Redshift がどうつながるのかが1枚の絵になっていない——実務でこの段階にいる人向けの記事です。

データレイクは、特定の製品の名前ではなく、データを生のまま1か所に置き、台帳を付けて、読むときに形を当てるという置き方の考え方です。この1文を先に持っておくと、どのサービスがどの役割を担っているかを説明できるようになります。

この記事の結論

  • データレイクは、形の決まったデータも決まっていないデータも、生のまま1か所に置いて、読むときに形を当てる置き場です。
  • データウェアハウスは、あらかじめ形(スキーマ)を決めて整えたデータに、速い SQL を繰り返し投げるための置き場です。
  • AWS の基本形は、S3 に置き、AWS Glue Data Catalog に表の定義を登録し、Amazon Athena で SQL を投げる3段です。
  • Athena はスキャンした量で課金されるので、列指向の形式(Parquet)とパーティションで読む量を減らすことが費用の対策になります。
  • 列や行の単位の権限は S3 のポリシーでは引けないので、AWS Lake Formation で Data Catalog のテーブルに対して付与します。

データレイクとは何か

データレイクは、業務システムの表のような構造化されたデータも、アプリのログ・画像・センサーの値のような構造の決まっていないデータも、取り込む時点ではスキーマを決めずにそのまま置いておく中央の置き場です(AWS の解説ページの定義)。どう使うかは、読むときに決めます。

これと対になるのがデータウェアハウスです。業務システムから集めたデータを、分析しやすい形に整えてから入れ、スキーマを先に決めておくことで、速い SQL の集計を繰り返し実行できるようにします。

LAKE OR WAREHOUSE2つの置き場

違いは形を決める時期。読むときか、入れる前か

データレイク

S3 + Glue Data Catalog + Athena

  • 生のまま置く
  • 形は読むときに当てる
  • 構造のないデータも置ける
  • 大量に安く置く

データウェアハウス

Amazon Redshift

  • 整えてから入れる
  • スキーマを先に決める
  • 構造化されたデータが中心
  • 繰り返しの SQL を速く返す
出典: AWS「Data Lake vs Data Warehouse vs Data Mart」
比べる点 データレイク データウェアハウス
置くデータ 構造化・半構造化・非構造化のすべて 主に構造化されたデータ
スキーマを決める時期 読むとき(取り込みでは決めない) 入れる前(先に設計する)
整える手間 置くのは速い。使う側で整える 入れる前に整える(ETL)
得意なこと 大量のデータを安く置く、機械学習や探索的な分析 定型のレポート・ダッシュボードへの速い SQL
AWS での代表 Amazon S3 + AWS Glue Data Catalog + Amazon Athena Amazon Redshift

AWS の解説でも、多くの組織は両方を持ち、用途で使い分けるとしています。「どちらを選ぶか」より「何をどちらに置くか」を決めるものです。

AWS でのデータレイクの基本形とは

AWS でデータレイクを組むとき、最初に押さえる基本形は3段です。

THE BASIC SHAPEAWS の基本形

置いて、整えて、台帳に載せ、SQL で読む

  1. S3

    生のまま置く

  2. Glue ジョブ

    Parquet に整える

  3. Data Catalog

    表の定義を登録

  4. Athena

    SQL でその場で読む

1. 置く: Amazon S3

データの実体は S3 に置きます。容量を先に決める必要がなく、大量のファイルを安く置けるので、データレイクの置き場として定番です。取り込んだままの生データ、整形したデータ、分析用に整えたデータ、のようにプレフィックスで層を分けて置くのがよくある形です。層を分けておくと、変換をやり直したくなったときに生データから作り直せます。

2. 台帳を付ける: AWS Glue Data Catalog

S3 のファイルは、そのままでは「どこに・どんな列の・どの形式のデータがあるか」が分かりません。AWS Glue Data Catalog は、その定義(データベース・テーブル・列・形式・S3 上の場所・パーティション)を持つメタデータの台帳です。Glue のクローラーを S3 に向けて実行すると、ファイルを読んでスキーマとパーティションを推定し、テーブルとして登録・更新します。

Data Catalog は Athena だけでなく、Amazon EMR や Redshift Spectrum からも共通に参照できます。定義を1か所に持つことで、列を足したときに直す場所が1つで済みます。

整形そのもの(CSV を Parquet に変える、不要な列を落とす、日付で分けて書き直す)は、サーバーを管理しない ETL の仕組みである AWS Glue のジョブで行えます。

3. 読む: Amazon Athena

Amazon Athena は、S3 上のデータに標準の SQL を投げるサーバーレスのクエリサービスです。データを取り込まず、Data Catalog の定義に従って S3 のファイルをその場で読みます。サーバーを用意しなくてよい代わりに、クエリがスキャンしたデータの量で課金されるのが基本です。単価は改定されることがあるので、Athena の料金ページで確認してください。

CHECK 1ここまでの確認

S3 に置いたファイルを Athena から表として SQL で読めるのは、何があるから?

答えと解説

答え: 2. AWS Glue Data Catalog にテーブルの定義(列・形式・場所・パーティション)が登録されているから

Athena はデータを取り込まず、S3 のファイルをその場で読みます。どこに何がどんな形で置いてあるかを教えるのが Glue Data Catalog です。「AWS でのデータレイクの基本形とは」の章を読み直してください。

なぜ Parquet とパーティションで読む量が変わるのか

Athena の費用と速さは、クエリがどれだけのデータを読むかでほぼ決まります。読む量を減らす手段は、置き方の側にあります。

列指向の形式にする

CSV や JSON は行ごとにデータが並ぶ形式なので、数列しか使わないクエリでも行全体を読みます。Apache Parquet や ORC のような列指向の形式は、列ごとにまとめて保存するので、クエリが使う列だけを読めます。列ごとに圧縮も効きます。

形式 並び方 数列だけ使うクエリで読む量
CSV / JSON 行ごと 行全体を読む
Parquet / ORC 列ごと(圧縮も効く) 使う列だけを読む

よく絞り込む条件でパーティションを切る

パーティションは、よく使う絞り込みの条件(日付など)ごとに、S3 のプレフィックスを分けて置く方法です。

s3://example-datalake/curated/orders/dt=2026-09-27/part-0000.parquet
s3://example-datalake/curated/orders/dt=2026-09-28/part-0000.parquet

WHERE dt = '2026-09-28' のように絞り込むと、Athena は条件に合うパーティションだけを読みます。実際のクエリで使う条件で切るのが要点で、クエリで使わない値(作成者の名前など)で分けても読む量は減りません。

行単位で直したいなら、テーブル形式を選ぶ

Parquet のファイルは、一部の行だけを書き換えるのが苦手です。個人情報の削除依頼のように、行単位の更新・削除が定期的に発生するなら、Apache Iceberg のようなテーブル形式を使うと、Athena から DELETE や UPDATE で行単位に変更できます。

CHECK 2ここまでの確認

Athena で数百列あるログの数列だけを毎日集計しているとき、読む量を大きく減らせる置き方は?

答えと解説

答え: 2. Parquet のような列指向の形式にし、よく絞り込む日付でパーティションを切る

列指向なら使う列だけを、パーティションがあれば条件に合う場所だけを読めます。Athena はスキャンした量で課金されるので、読む量はそのまま費用になります。「なぜ Parquet とパーティションで読む量が変わるのか」の章を読み直してください。

権限はどこで引くのか

データレイクは部署をまたいで使われるので、「誰に、どのテーブルの、どの列・行まで見せるか」が必ず問題になります。ここで押さえるべきなのは、S3 のバケットポリシーや IAM ポリシーはオブジェクト(ファイル)単位の制御だということです。1つの Parquet ファイルの中の「氏名の列だけ隠す」「自分の地域の行だけ見せる」は、S3 の側では表現できません。

AWS Lake Formation は、S3 上のデータと Glue Data Catalog のメタデータに対して、きめ細かいアクセス制御を一元的に管理するサービスです。IAM の権限モデルを補う独自の権限モデルを持ち、Data Catalog のテーブルに対して権限を付与します。

FINE-GRAINED ACCESS列と行の権限

S3 では引けない列と行の境界を、Lake Formation で引く

Lake Formation の権限

  • 列購買の列 見える分析担当に付与
  • 列氏名・電話 見えない付与していない
  • 行自分の地域 見える行フィルター式
  • 共有事業部のアカウント 参照できるクロスアカウント共有
やりたいこと Lake Formation での手段
個人を特定できる列を見せない 列を指定(または除外)してテーブルの権限を付与する
自分の地域の行だけ見せる データフィルターの行フィルター式を付与する
テーブルが増えても権限を付け直さない LF タグを付け、タグの条件で権限を付与する(LF-TBAC)
別アカウントからコピーなしで参照させる クロスアカウントのデータ共有で権限を付与する

データレイクの権限でやってはいけない3つ

  • 列を隠すために、列を消したコピーのテーブルを作って配る(定義とデータが二重になり、どちらが正しいか分からなくなる)
  • 他部署に見せるために、読み取り用のアクセスキーを渡す(鍵の管理と失効ができなくなる)
  • 共有を急いで、バケットを公開する(S3 のブロックパブリックアクセスで止めておく)

Lake Formation を使うときも、利用者には Athena などを使うための IAM の権限が要ります。IAM は「サービスを使ってよいか」、Lake Formation は「どのテーブルのどこまで読めるか」と、役割を分けて考えると整理しやすくなります。

CHECK 3ここまでの確認

同じテーブルの中で、分析担当者には個人を特定できる列を見せたくないとき、権限を引く場所として合っているのは?

答えと解説

答え: 2. AWS Lake Formation のテーブルの権限

S3 のポリシーはオブジェクト(ファイル)単位の制御です。Lake Formation は Data Catalog のテーブルに対して、列・行を指定した権限を付与できます。「権限はどこで引くのか」の章を読み直してください。

Amazon Redshift はどこに置くのか

Amazon Redshift は AWS のデータウェアハウスです。大量の構造化データに対する複雑な集計や結合を、繰り返し速く返すことに向いています。データレイクと Redshift は、競合ではなく役割の分担です。

比べる点 Amazon Athena(データレイクを直接読む) Amazon Redshift(データウェアハウス)
データの置き場 S3(取り込まない) Redshift の中(COPY でロード)
準備 Data Catalog の定義があればすぐ読める テーブル設計とロードが要る
向いている使い方 探索的な分析、たまに走らせる集計 定型のダッシュボード、同時に多くの人が使う BI

よくある分担は、直近でよく使うデータを Redshift に置き、長期の履歴は Parquet で S3 に置いたままにする形です。Redshift には Redshift Spectrum という機能があり、S3 のデータを Redshift にロードせずに外部テーブルとして読み、Redshift 内のテーブルと結合できます。Spectrum も Glue Data Catalog の定義を使えるので、ここでも「台帳は1か所」が効いてきます。

READ ALSO — 学習中向け・段1 入口 S3 とは何か|バケットとオブジェクト・ストレージクラス・公開設定を「ディスクではない置き場」で理解する

まとめ

  • データレイクは、データを生のまま1か所に置き、読むときに形を当てる置き場です。データウェアハウスは、形を決めて整えたデータに速い SQL を繰り返し投げる置き場です。
  • AWS の基本形は、S3 に置く → Glue Data Catalog に表の定義を登録する → Athena で SQL を投げる、の3段です。
  • Athena の費用はスキャン量で決まるので、Parquet のような列指向の形式と、実際のクエリの条件で切ったパーティションが効きます。
  • 列や行の単位の権限は S3 のポリシーでは引けないので、Lake Formation で Data Catalog のテーブルに対して付与します。
  • Redshift は定型の集計を速く返すデータウェアハウスで、Spectrum を使えば S3 のデータとも結合できます。

次は、データレイクを置くアカウントと、それを使う部署のアカウントをどう分けるかに進むと、クロスアカウントの共有の意味がはっきりします。

参照ソース

SCOREこの記事の確認テスト

0/3問 正解

各章の「ここまでの確認」に答えると、ここに集まります。結果はこの端末のブラウザにだけ残り、サーバには送りません。

PRACTICEこの記事の論点を練習問題で確かめる

この記事が扱うサービスの問題だけを続けて解けます。練習問題は Google でログインした人が使えます(練習問題の一覧)。

HAND IT OVER人に渡すなら

一言で説明するなら

届いた荷物を箱のまま倉庫の棚に置き、中身の台帳だけ付けておく方式です。使う人は台帳を見て必要な箱だけ開けます。先に全部を仕分けて並べ直す倉庫とは、整える時期が違います。

FAQよくある質問

データレイクとデータウェアハウスは、どちらか一方を選ぶものですか?

多くの組織は両方を持ちます。形の決まっていないデータも含めて安く大量に置くのはデータレイク、定型のレポートやダッシュボードのように、形を決めたデータに速い SQL を繰り返し投げるのはデータウェアハウスです。AWS では S3 をデータレイク、Amazon Redshift をデータウェアハウスに使い、Redshift Spectrum で S3 のデータを Redshift から直接読むこともできます。

Athena の料金はどう決まりますか?

基本は、クエリがスキャンしたデータの量に応じた課金です。単価や最小課金単位、ほかの課金方式は改定されることがあるので、AWS の Athena の料金ページで最新の値を確認してください。スキャン量を減らす置き方(列指向の形式・圧縮・パーティション)が、そのまま費用を下げる手段になります。

データレイクを作ったら、次に何を学べばよいですか?

権限とアカウントの分け方です。データレイクは部署をまたいで使われるため、どのアカウントに置き、誰にどこまで見せるかを先に決めておかないと、後からの整理が大変になります。生成 AI の検索(RAG)の元データを S3 に置く構成も増えているので、Amazon Bedrock のナレッジベースとのつながりを押さえるのも次の一歩になります。

SAME TRACK同じ領域の記事

分析サービスの選び方|Athena・Redshift・EMR・Glue を頻度とクエリの形で使い分ける設計
分析サービスの選び方|Athena・Redshift・EMR・Glue を頻度とクエリの形で使い分ける設計 段3 基盤設計
Athena のクエリが S3 を読む仕組み|パーティション・列指向形式・スキャン量で「速さと料金」が決まる理由
Athena のクエリが S3 を読む仕組み|パーティション・列指向形式・スキャン量で「速さと料金」が決まる理由 段3 基盤仕組み
Amazon Bedrock とは何か|モデルの選び方・RAG・エージェント・ガードレールと SageMaker の違い
Amazon Bedrock とは何か|モデルの選び方・RAG・エージェント・ガードレールと SageMaker の違い 段3 基盤とは