依存関係データベース:クロスデータベース参照の管理

|declarative-app-plural|を使用すると、プロバイダーはマニフェスト駆動型モデルを使用してデータ製品を共有できます。多くのアプリでは、セキュアビューは他のプロバイダーデータベースのオブジェクトを参照します。従来の安全な共有では、共有に参照される各データベースに対してあなた(プロバイダー)がREFERENCE_USAGEを付与します。|declarative-app-short-plural|では、:code:`required_databases`を使用してマニフェストでこれらの依存関係データベースを宣言します。これにより、特に他のリージョンでのインストールにおいて、データベース間の参照を確実に解決できます。これは、セマンティックビュー、ユーザー定義関数(UDFs)、またはセキュアビューで使用されるプロシージャにも適用されます。

required_databasesを使用するタイミング

:code:`shared_content`の共有オブジェクトが、:code:`shared_content/databases`にリストされていないデータベース内のオブジェクトを参照する場合は常に、そのデータベースを:code:`required_databases`に含める必要があります。これは、これらの依存関係の存在を想定できないクロスリージョンの展開において不可欠です。たとえば、次のような場合です。

  • 他のプロバイダーデータベースのテーブルまたはビューからJOIN/SELECTを行う共有データベースのセキュアビュー

  • UDFsを参照しているビューまたは他のデータベースにあるプロシージャ

  • :code:`application_content`経由で含まれるノートブック(ノートブックのロジックやノートブックがクエリするビューが、他のデータベースのオブジェクトに依存している場合)

  • 基礎となる物理テーブルやビューが別のデータベースにあるセマンティックビュー

クロスデータベースの依存関係は一般的です。外部データベースを明示的に宣言しない場合、アプリはプロバイダーのリージョンでは検証またはインストールが成功しても、他のリージョンでは必要な参照を解決できずに失敗する可能性があります。:code:`required_databases`は、アプリがビルド、リリース、インストールされるあらゆる場所で、存在し解決可能でなければならない依存関係データベースの宣言的リストを提供することによって、このあいまいさを防ぎます。

依存関係データベースが`required_databases`で明示的に宣言されていない場合、パッケージバージョンのリリースはブロックされます。.BUILD、COMMIT、RELEASEの時点でエラーメッセージが生成され、参照されるデータベースがマニフェストの`required_databases`セクションから欠落していることが具体的に示されます。

required_databasesを使用しない場合

:code:`required_databases`にデータベースを含めることは以下のケースには適用されません。

  • :code:`shared_content/databases`にリストされているデータベースに完全に含まれるオブジェクト

  • マニフェスト宣言ではなく権限の付与を使用した共有(REFERENCE_USAGEを含む)

複製の制限

`required_databases`でのデータベースの宣言では、これらのデータベースやそのコンテンツを複製しません。依存関係を登録し、フレームワークとリストのワークフローが参照を適切に準備および解決できるようにします。

マニフェストが`required_databases`を使用する際にクロスリージョンインストールとフェイルオーバーをサポートするには、次のようにします。

  • 依存関係データベースを特定する。`shared_content.required_databases`の各エントリに対して、ソースアカウントでどのプロバイダーが所有するデータベースにマップされているかを確認します。

  • 依存関係ごとに複製を構成します。アプリをビルド、リリース、インストールする予定のリージョンとアカウントに対し、すべての依存関係データベースについて、データベース(またはアカウント)の複製を設定します。このステップでは、標準のSnowflake複製機能を使用します。

  • 名前を一貫性のあるものにします。ターゲットリージョンのデータベース名が、required_databases.で宣言する名前と完全に一致していることを確認してください。名前の不一致があると、BUILD/COMMIT/RELEASE が失敗し、参照されているデータベースが`required_databases`から欠落していることを示すエラーが発生します。

  • 複製の完了後に検証します。最初の複製と後続の更新が完了したら、ターゲットリージョンでBUILD、COMMIT、またはRELEASEのコマンドを実行します。依存関係データベースについて、未解決または欠落に関するエラーが表示される場合は、次を確認してください。

    • データベースが複製され、ターゲットアカウントとリージョンで利用できるようになります。

    • データベース名は`required_databases`の値と一致します。

    • それらのデータベースが依存する連鎖依存関係も複製され、正しい名前が付けられます。

データベースとアカウントの複製を構成する際のエンドツーエンドのステップとオプションについては、:doc:`/user-guide/account-replication-intro`をご参照ください.