Delta Lake について理解する
Delta Lake は、Spark ベースのデータ レイク処理にリレーショナル データベースのセマンティクスを追加する、オープンソースのストレージ レイヤーです。 Microsoft Fabric レイクハウスのテーブルは Delta テーブルであり、レイクハウスのユーザー インターフェイスではテーブルの三角形の Delta (Δ) アイコンによって示されます。
Delta テーブルは、Delta 形式で格納されているデータ ファイルに対するスキーマの抽象化です。 各テーブルについては、レイクハウスには、Parquet データ ファイルを含むフォルダーと、トランザクションの詳細が JSON 形式でログに記録されている _delta_Log フォルダーが格納されます。
Delta テーブルを使用する利点は次のとおりです。
- クエリの実行とデータの変更をサポートするリレーショナル テーブル。 Apache Spark を使用すると、CRUD (作成、読み取り、更新、削除) 操作をサポートする Delta テーブルにデータを格納できます。 つまり、リレーショナル データベース システムと同じ方法で、データ行の "選択"、"挿入"、"更新"、"削除" を行うことができます。
- ACID トランザクションのサポート。 リレーショナル データベースはトランザクション データの変更をサポートするように設計されており、"原子性" (トランザクションが 1 つの作業単位として完了する)、"一貫性" (トランザクション後にデータベースの一貫した状態が保たれる)、"分離性" (インプロセス トランザクションは相互に干渉できない)、"持続性" (トランザクションが完了すると、行われた変更は保持される) を備えています。 Delta Lake は、トランザクション ログを実装し、同時実行操作にシリアル化可能な分離を適用することで、この同じトランザクション サポートを Spark にもたらします。
- データのバージョン管理と "タイム トラベル"。 すべてのトランザクションがトランザクション ログに記録されるため、各テーブル行の複数のバージョンを追跡することができ、"タイム トラベル" 機能を使ってクエリ内の行の以前のバージョンを取得することもできます。
- バッチ データとストリーミング データのサポート。 ほとんどのリレーショナル データベースには静的データを格納するテーブルが含まれていますが、Spark には Spark Structured Streaming API を使用したストリーミング データのネイティブ サポートが含まれています。 Delta Lake テーブルは、ストリーミング データの "シンク" (宛先) と "ソース" の両方として使用できます。
- 標準の形式と相互運用性。 Delta テーブルの基になるデータは Parquet 形式で格納されます。これは、データ レイク インジェスト パイプラインでよく使用されます。 さらに、Microsoft Fabric レイクハウスの SQL 分析エンドポイントを使用して、SQL 内の Delta テーブルのクエリを実行することもできます。