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

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はデータファイルとテーブルメタデータの両方を管理します。データファイルは、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

テーブルを削除する

MANAGE テーブルの上

テーブルを置き換える

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

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

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