Skip to content
Latchkey

データレイクとは?大規模な生データストレージの解説

データレイクは、あらゆる種類の生データを大規模に保持する低コストのストレージであり、構造はデータが読み取られるときに適用されるよう委ねられます。

データレイクはウェアハウスとは異なる賭けをします。今はすべてを安価に保存し、使い方は後で決めるのです。ログ、画像、JSON、Parquetといった構造化・半構造化・非構造化の生データをオブジェクトストレージに保持し、多くのエンジンからクエリできるようにします。

データレイクとは

データレイクは、通常はAmazon S3のようなオブジェクトストレージ上に構築された集約リポジトリで、生データをオープンなファイルフォーマットで格納します。ウェアハウスとは異なり、書き込み前にスキーマを定義する必要はありません - 構造は読み取り時に適用され、多様で非構造化なデータに適しています。

レイクとウェアハウス

ウェアハウスは、SQL分析に最適化されたクレンジング済み・モデル化済み・構造化済みのデータを格納します。レイクはあらゆる形状の生データをより低コストで格納します。多くのチームは両方を使います。すべてをレイクに取り込み、その後、価値ある部分をウェアハウスへと洗練させます。

レイクハウス

Delta Lake、Apache Iceberg、Hudiのようなテーブルフォーマットは、レイクストレージの上にウェアハウスのような機能 - トランザクション、スキーマの進化、タイムトラベル - を追加します。この「レイクハウス」パターンは、レイクとウェアハウスの境界を曖昧にします。

データレイクとCI

レイクから読み取りレイクへ書き込むpipelineは、一時パス上のサンプルファイルに対してCIでテストすべきです。そうすれば、変換のバグが共有レイクに不正なデータを書き込む前に検出されます。

Testing a lake pipeline in CI
steps:
  - run: aws s3 cp s3://lake/sample/ ./data --recursive
  - run: pytest tests/transforms
  - run: python write_parquet.py --out s3://lake/ci-run/

Latchkeyに関する注記

レイクのjobは大きなファイルをオブジェクトストレージとの間で移動させます。Latchkeyでは、実行間でサンプルデータセットをcacheすることで繰り返しのダウンロードを回避でき、一時的なS3読み取りに対するauto-retryにより、長時間のjobが単一の不調で失敗するのを防ぎます。

重要なポイント

  • データレイクは、あらゆる種類の生データをオープンフォーマットで大規模に格納し、読み取り時に構造を適用します。
  • ウェアハウスを補完します。すべてを安価に取り込み、価値あるデータを構造化テーブルへと洗練させます。
  • レイクハウスのテーブルフォーマットは、レイクストレージの上にトランザクションとスキーマの進化を追加します。

関連ガイド