メインコンテンツまでスキップ

Databricks テーブルの概念

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

Databricks テーブルはスキーマに存在し、データの行を含みます。Databricks で登録されるデフォルトテーブルタイプは、マネージドテーブルUnity Catalogです。

ストレージ形式

ストレージフォーマットは、オブジェクトストレージにおいてデータが物理的にどのように構造化され、追跡されるかを定義します。

Databricks では、次の 2 つの主要なオープン テーブル ストレージ形式がサポートされています。

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

両フォーマットとも、メタデータを追跡し、原子性、一貫性、アイソレーション、耐久性(ACID)コンプライアンス、タイムトラベルなどの機能をサポートするトランザクションストレージ層を追加しています。

テーブルタイプ

Databricksにおけるテーブルタイプは、データがどのように所有され、アクセスされるかを定義します。

Databricksは3つの主要なテーブルタイプをサポートしています。テーブルタイプは、以下の表に示されているように、どのカタログが基になるデータファイルを所有および管理するかによって決定されます。

テーブルタイプ

カタログの管理

読み取り/書き込みのサポート

パフォーマンスの最適化

ストレージコストの最適化

マネージド

Unity Catalog

Yes

Yes

Yes

TEMPORARY

なし (セッションスコープのマネージドテーブル)

Yes

Yes

Yes

外部

なし (ファイルのみ)

Yes

マニュアルのみ

マニュアルのみ

外部

外部システムまたはカタログ・サービス

読み取り専用

No

No

テーブルタイプ

カタログの管理

読み取り/書き込みのサポート

パフォーマンスの最適化

ストレージコストの最適化

マネージド

Unity Catalog

Yes

Yes

Yes

TEMPORARY

なし (セッションスコープのマネージドテーブル)

Yes

Yes

Yes

外部

なし (ファイルのみ)

Yes

マニュアルのみ

マニュアルのみ

外部

外部システムまたはカタログ・サービス

読み取り専用

No

No

使用ケースに適したテーブルタイプを選択する方法に関する情報については、テーブルタイプを選択を参照してください。

マネージドテーブル

マネージドテーブルの場合、Unity Catalogはデータファイルとテーブルメタデータの両方を管理します。データファイルは、Unity Catalogのクラウドストレージにあるマネージドストレージの場所に保存されます。Databricksでテーブルを作成する場合、Unity Catalog マネージドテーブルがデフォルトです。

Databricksは、新しいテーブルを作成する際は常にマネージドテーブルを使用することを推奨しています。マネージドテーブルは、パフォーマンスの向上を自動的に実装し、ストレージとコンピュートのコストを削減し、Trinoなどの外部システムからのアクセスを可能にします。See マネージドテーブル.

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

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

外部テーブル

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

フォーリンテーブル

フォーリンテーブルは、レイクハウスフェデレーションを介して Databricks に接続された外部システムに保存されたデータを表します。 フォーリンテーブルは Databricksで読み取り専用です。 フォーリンテーブルを参照してください。

一時テーブル

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

テーブルタイプを選択してください

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

Use 外部テーブル when:

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

レイクハウスフェデレーションを介して接続された外部システム(Hive metastoreやAWS Glueカタログなど)のデータへの読み取り専用アクセスが必要な場合は、 フォーリンテーブル を使用します。

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

Unity Catalog のテーブル

Unity Catalogでは、テーブルは3レベル名前空間(catalog.schema.table)の3番目のレベルに存在し、以下の図に示されています。

テーブルに焦点を当てた Unity Catalog オブジェクト モデル図

基本的なテーブル権限

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

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

オペレーション

権限

テーブルを作成

CREATE TABLE を含むスキーマで

テーブルのクエリ

SELECT テーブルの上

テーブルへのデータの更新、削除、マージ、または挿入

SELECT およびテーブルに対する MODIFY。あるいは、INSERTUPDATE、および DELETE 権限を使用して、よりきめ細かな書き込みアクセス権を付与することもできます(ベータ版)。きめ細かなDML権限を参照してください。

テーブルを削除する

MANAGE テーブルの上

テーブルを置き換える

MANAGE テーブルで、 CREATE TABLE を含むスキーマで

オペレーション

権限

テーブルを作成

CREATE TABLE を含むスキーマで

テーブルのクエリ

SELECT テーブルの上

テーブルへのデータの更新、削除、マージ、または挿入

SELECT およびテーブルに対する MODIFY。あるいは、INSERTUPDATE、および DELETE 権限を使用して、よりきめ細かな書き込みアクセス権を付与することもできます(ベータ版)。きめ細かなDML権限を参照してください。

テーブルを削除する

MANAGE テーブルの上

テーブルを置き換える

MANAGE テーブルで、 CREATE TABLE を含むスキーマで

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

Unity Catalog権限の詳細については、 Unity Catalogでの権限の管理を参照してください。