データレイクとは?大規模な生データストレージの解説
データレイクは、あらゆる種類の生データを大規模に保持する低コストのストレージであり、構造はデータが読み取られるときに適用されるよう委ねられます。
データレイクはウェアハウスとは異なる賭けをします。今はすべてを安価に保存し、使い方は後で決めるのです。ログ、画像、JSON、Parquetといった構造化・半構造化・非構造化の生データをオブジェクトストレージに保持し、多くのエンジンからクエリできるようにします。
データレイクとは
データレイクは、通常はAmazon S3のようなオブジェクトストレージ上に構築された集約リポジトリで、生データをオープンなファイルフォーマットで格納します。ウェアハウスとは異なり、書き込み前にスキーマを定義する必要はありません - 構造は読み取り時に適用され、多様で非構造化なデータに適しています。
レイクとウェアハウス
ウェアハウスは、SQL分析に最適化されたクレンジング済み・モデル化済み・構造化済みのデータを格納します。レイクはあらゆる形状の生データをより低コストで格納します。多くのチームは両方を使います。すべてをレイクに取り込み、その後、価値ある部分をウェアハウスへと洗練させます。
レイクハウス
Delta Lake、Apache Iceberg、Hudiのようなテーブルフォーマットは、レイクストレージの上にウェアハウスのような機能 - トランザクション、スキーマの進化、タイムトラベル - を追加します。この「レイクハウス」パターンは、レイクとウェアハウスの境界を曖昧にします。
データレイクとCI
レイクから読み取りレイクへ書き込むpipelineは、一時パス上のサンプルファイルに対して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が単一の不調で失敗するのを防ぎます。
重要なポイント
- データレイクは、あらゆる種類の生データをオープンフォーマットで大規模に格納し、読み取り時に構造を適用します。
- ウェアハウスを補完します。すべてを安価に取り込み、価値あるデータを構造化テーブルへと洗練させます。
- レイクハウスのテーブルフォーマットは、レイクストレージの上にトランザクションとスキーマの進化を追加します。