Azure Databricks におけるテーブルの概念

Azure Databricksでは、3 つのプライマリ テーブルの種類 (マネージド、外部、および外部) と 2 つのオープン ストレージ形式 (Delta Lake と Apache Iceberg) がサポートされています。 適切な組み合わせを選択すると、データの格納方法、管理方法、最適化方法が決まります。

Azure Databricks テーブルはスキーマ内にあり、データの行が含まれています。 Azure Databricks で作成される既定のテーブルの種類は、Unity カタログのマネージド テーブルです。

ストレージ形式

ストレージ形式は、オブジェクト ストレージでのデータの物理的な構造化と追跡方法を定義します。

Azure Databricks では、次の 2 つのプライマリオープン テーブル ストレージ形式がサポートされています。

  • Delta Lake は、Azure Databricks のマネージド テーブルと外部テーブルの既定のストレージ形式です。 Delta は外部テーブルでもサポートされています。
  • Apache Iceberg は、Azure Databricksのマネージド テーブルと外部テーブルでサポートされています。 この形式は、Iceberg エコシステムと統合する場合に便利です。

どちらの形式でも、メタデータを追跡し、アトミック性、整合性、分離性、持続性 (ACID) コンプライアンス、時間移動、およびその他の機能をサポートするトランザクション ストレージ レイヤーが追加されます。

テーブルの種類

Azure Databricks のテーブルの種類は、データの所有方法とアクセス方法を定義します。

Azure Databricksでは、3 つのプライマリ テーブルの種類がサポートされています。 テーブルの種類は、次の表に示すように、基になるデータ ファイルを所有および管理するカタログによって決まります。

テーブルの種類 カタログの管理 読み取り/書き込みのサポート パフォーマンスの最適化 ストレージ コストの最適化
管理 Unity カタログ イエス イエス イエス
一時 なし (セッションスコープのマネージド テーブル) イエス イエス イエス
エクスターナル なし (ファイルのみ) イエス 手動のみ 手動のみ
外部由来 外部システムまたはカタログ サービス 読み取り専用 いいえ いいえ

ユース ケースに適したテーブルの種類を選択する方法については、「テーブルの 種類を選択する」を参照してください。

マネージド テーブル

マネージド テーブルの場合、Unity Catalog はデータ ファイルとテーブル メタデータの両方を管理します。 データ ファイルは、クラウド ストレージ内の Unity カタログのマネージド ストレージの場所に格納されます。 Azure Databricks でテーブルを作成する場合、Unity カタログのマネージド テーブルが既定です。

Databricks では、新しいテーブルを作成するたびにマネージド テーブルを使用することをお勧めします。 マネージド テーブルでは、パフォーマンスの向上が自動的に実装され、ストレージとコンピューティングのコストが削減され、Trino などの外部システムへのアクセスが可能になります。 「管理テーブル」を参照してください。

次の例は、5 人の従業員に関するデータを含む prod.people_ops_employees という名前のマネージド テーブルを示しています。

従業員データを含むテーブルの例

外部テーブル

外部テーブル ( アンマネージド テーブルとも呼ばれます) は、クラウド オブジェクト ストレージなどの外部ストレージ システムに格納されている参照データです。 Azure Databricksはテーブル メタデータを登録しますが、基になるデータ ファイルは管理しません。 Unity カタログでは、Delta Lake を含む複数の形式の外部テーブルがサポートされています。これにより、外部システムで読み取ることができます。 外部テーブルを参照してください。

外部テーブル

外部テーブルは、Lakehouse フェデレーションを通じて Azure Databricks に接続された外部システムに格納されているデータを表します。 外部テーブルは、Azure Databricks では読み取り専用です。 外部テーブルを参照してください。

一時テーブル

一時テーブルは、Azure Databricks セッションの期間中にデータを格納するセッション スコープのテーブルです。 これらは、カタログに永続的なテーブルを作成せずに中間結果を具体化する場合に役立ちます。 セッションが終了すると、Azure Databricks によって一時テーブルが自動的に削除されます。また、一時テーブルを作成するためにカタログ権限やスキーマ特権は必要ありません。 Databricks SQL と Databricks ランタイムの一時テーブルを参照してください。

テーブルの種類を選択する

ほとんどの新しい テーブルにはマネージド テーブル を使用します。 Azure Databricksは、最適化、ストレージ ライフサイクル管理、外部アクセスを自動化します。

外部テーブルは次の場合に使用します。

  • 既存のデータを移動せずにクラウド ストレージに登録する必要があります。
  • Azure Databricks以外のクライアントからのパスベースの直接アクセスが必要です。
  • CSV や JSON など、マネージド テーブルではサポートされていないファイル形式を使用しています。
  • テーブルを削除すると、基になるデータ ファイルは削除されません。

外部 テーブル は、Hive メタストアや AWS Glue カタログなど、Lakehouse Federation 経由で接続されている外部システム内のデータへの読み取り専用アクセスが必要な場合に使用します。

ストレージ形式の場合、Delta Lake が既定であり、ほとんどのワークロードに推奨されます。 Iceberg 形式を必要とする外部システムと統合する場合は、Apache Iceberg を使用します。

Unity カタログのテーブル

Unity カタログでは、次の図に示すように、テーブルは 3 レベル名前空間 (catalog.schema.table) の 3 番目のレベルに存在します。

テーブルに重点を置いた Unity カタログ オブジェクト モデル図

基本的なテーブルのアクセス許可

ほとんどのテーブル操作には、テーブルを含むカタログとスキーマに対する USE CATALOGUSE SCHEMA のアクセス許可が必要です。

次の表は、Unity カタログの一般的なテーブル操作に必要な追加のアクセス許可をまとめたものです。

Operation Permissions
テーブルの作成 包含元のスキーマに対する CREATE TABLE
テーブルのクエリを実行する テーブルの SELECT
テーブルにデータを更新、削除、マージ、または挿入する SELECT および MODIFY はテーブルの上にあります。 あるいは、 INSERTUPDATEDELETE 権限(ベータ版)でより細かい書き込みアクセスを付与する方法もあります。 きめ細かな DML 権限を参照してください。
テーブルを削除する テーブルの MANAGE
テーブルを置き換える テーブルの MANAGE、包含元のスキーマに対する CREATE TABLE

これらの操作の SQL 構文リファレンスについては、次を参照してください。

Unity カタログのアクセス許可の詳細については、「 Unity カタログでの権限の管理」を参照してください。