概要
Databricks では、テーブルのデータを Delta Lake の形式で保存するのが基本です。Delta Lake は、クラウドストレージ上のデータファイルに「トランザクションログ」を組み合わせることで、データベースのような ACID トランザクションや、過去の状態へのアクセスを実現します。
データエンジニアの資格では、こうした操作と保守の考え方が、データの変換や最適化の分野の土台になります。
押さえるべきポイント
一、トランザクションログが変更の履歴を記録する
Delta テーブルへの書き込みは、すべてトランザクションログ(_delta_log)にバージョンとして記録されます。DESCRIBE HISTORY で、いつ・誰が・どの操作をしたかを確認できます。
二、タイムトラベルで過去の状態を読む・戻す
SELECT ... VERSION AS OF(または TIMESTAMP AS OF)で過去のバージョンを読み、RESTORE TABLE で過去の状態に戻せます。誤った更新を取り消すときに使います。
三、MERGE INTO でアップサートする
変更データを既存のテーブルに反映するときは MERGE INTO を使います。一致した行の更新と、一致しない行の挿入を、1 つのアトミックな操作で行えます。
四、OPTIMIZE で小さなファイルをまとめる
小さなファイルが大量にあると、読み取りが遅くなります。OPTIMIZE はファイルをまとめて(コンパクション)読み取りの性能を改善します。データの配置を工夫する方法として、Z-ORDER やリキッドクラスタリングもあります。
五、VACUUM で不要なファイルを削除する
VACUUM は、現在のバージョンから参照されず、保持期間(既定は 7 日)を過ぎたデータファイルを削除します。削除したファイルを必要とする古いバージョンには、タイムトラベルできなくなります。
重要な用語
| 用語 | 意味 |
|---|---|
| Delta Lake | データファイルとトランザクションログで、ACID トランザクションやタイムトラベルを実現するテーブルの形式。 |
| トランザクションログ | テーブルへの変更をバージョンとして記録するログ(_delta_log)。 |
| タイムトラベル | 過去のバージョンやタイムスタンプを指定して、テーブルを読む機能。 |
| OPTIMIZE | 小さなファイルをまとめて、読み取りの性能を上げる操作。 |
| VACUUM | 参照されなくなった古いデータファイルを削除する操作。 |
| リキッドクラスタリング | CLUSTER BY でクラスタリングのキーを指定し、データの配置を最適化する仕組み。 |
おすすめの教材
いずれも公式の情報です。内容は更新されることがあるため、最新の版を確認してください。
問題で確かめる
- Data Engineer Associate 問題集分野:Delta Lake(4問)この分野を解く