Snowflakeで Snowflake Open Catalog を使用して Apache Iceberg™ テーブルを使用する¶
Snowflakeの Apache Iceberg™ テーブルを使用して、 Snowflake Open Catalog を操作します。
Snowflake Open Catalog とは何ですか?¶
Open Catalog は、オープンソースのApache Iceberg REST プロトコルをベースに構築されたIcebergのカタログ実装です。詳細については、 Snowflake Open Catalog のドキュメントを参照してください。
Snowflakeは、 Open Catalog で作業するための以下のオプションをサポートしています。
考慮事項¶
Snowflakeを Open Catalog と併用する場合は、以下の点にご注意ください。
ストレージ
- Snowflake管理Icebergテーブル と同様に、 Open Catalog で管理するIcebergテーブルを外部クラウドストレージに格納します。 
- SnowflakeのIcebergテーブルは 外部ボリューム を使用してクラウドストレージへのアクセスを提供し、 Open Catalog で管理されるテーブルは ストレージ構成 を使用します。 
Snowflake管理Icebergテーブルを同期するための構成
- Snowflake管理テーブルを Open Catalog と同期するには、まずSnowflakeで外部ボリュームを作成し、 Open Catalog で外部ボリュームと同じ場所を指す外部カタログを作成する必要があります。詳細については、 Snowflakeで管理されたテーブルを Snowflake Open Catalog と同期する をご参照ください。 
テーブルアクセス
- Open Catalog と同期したSnowflake管理Icebergテーブルは、 Open Catalog では読み取り専用です。 
- Snowflakeはクエリはできますが、 Open Catalog が管理するテーブルへの書き込みはできません。 
用語の違い¶
このセクションでは、Snowflakeと Open Catalog の用語の主な違いをまとめます。
| Snowflake用語 | Open Catalog 用語 | 
|---|---|
| Open Catalog では、Snowflakeのデータベースのようなものである カタログ を使用します。Open Catalog では、1つまたは複数のカタログ リソースを作成して、Icebergテーブルを名前空間の下に整理します。詳細については、 Open Catalog ドキュメントの カタログ をご参照ください。 Snowflake管理のテーブルを Open Catalog と同期する際、Snowflakeは2つの親名前空間を使用して、テーブルのカタログ統合に関連するカタログとテーブルを同期します。名前空間は、Snowflakeにおけるテーブルのデータベースとスキーマに対応します。たとえば、Snowflakeに  | |
| Open Catalog では、スキーマと名前空間の概念は同義であり、互換的に使用できます。 Namespace は Open Catalog ユーザーインターフェイスに表示されます。Open Catalog はオブジェクトのコレクションを保持するために名前空間を使用しており、 _namespace_ という用語は主に Open Catalog ドキュメントで使用されます。名前空間の詳細については、 名前空間 をご参照ください。 ただし、Apache Sparkなどのサードパーティのクエリエンジンを使用していて、 CREATE SCHEMA または CREATE DATABASE コマンドを実行すると、 Open Catalog に名前空間が作成されます。CREATE NAMESPACE コマンドを実行して名前空間を作成することもできます。 | |
| Snowflakeと同様に、 Open Catalog も名前空間を使用しますが、Snowflakeの名前空間の使用方法と比較して重要な違いがあります。 Open Catalog のカタログは、ユーザーが定義する最上位の名前空間と、その下に定義する任意の数の入れ子になった名前空間から構成されます。 入れ子になった名前空間を使用すると、同じカタログ内で同じ名前のテーブルを登録できます。例えば、  
 また、 Open Catalog では、最上位の名前空間を含め、名前空間階層内の任意の名前空間の下にテーブルをグループ化できます。 サンプル Open Catalog 構造の概念図など、名前空間についての詳細については、 Open Catalogの主要な概念 をご参照ください。 | |
| Open Catalog の プリンシパルロール はSnowflakeのロールのようなものですが、重要な違いがあります。プリンシパルロールに権限を付与することはできません。代わりに、カタログロールに権限を付与し、それをプリンシパルロールに付与し、プリンシパルロールをサービスプリンシパルに付与して、サービスプリンシパルに権限を付与します。また、プリンシパルロールを他のプリンシパルロールに割り当てることはできません。サービスプリンシパルに付与できるプリンシパルロールは1つだけです。 プリンシパルロールを使用すると、サービスプリンシパルを論理的にグループ化できます。プリンシパルロールの範囲はすべてのカタログに及びます。また、プリンシパルロールにタイプの相違はありません。詳細については、 Open Catalog ドキュメントの プリンシパルロール をご参照ください。 | |
| Open Catalog は カタログロール を使用しますが、これはSnowflakeのデータベースロールのようなものです。カタログロールは、カタログまたはカタログ内のオブジェクトに対するアクションの権限セットを指定します。カタログロールの範囲は、それが作成されたカタログになります。 Open Catalog では、カタログロールに権限を付与します。次に、カタログロールをプリンシパルロールに付与し、プリンシパルロールをサービスプリンシパルに付与してリソースへのアクセス権を付与します。プリンシパルロールには複数のカタログロールを付与できますが、サービスプリンシパルには1つのプリンシパルロールしか付与できません。詳細については、 Open Catalog ドキュメントの カタログロール をご参照ください。 | |
| アクセス制御の文脈では、 Open Catalog にユーザーという概念はありません。 Open Catalog では、権限はユーザーではなく サービスプリンシパル に与えられます。クエリエンジンはサービスプリンシパルを使用してカタログに接続します。詳細については、 Open Catalog ドキュメントの サービスプリンシパル をご参照ください。 | 
法的通知¶
Apache®、Apache Iceberg™、Apache Spark™、Apache Flink®、Flink®は、米国およびその他の国におけるApache Software Foundationの登録商標または商標です。