Abhängigkeitsdatenbanken: Verwalten von datenbankübergreifenden Referenzen

Mit Snowflake Declarative Native Apps können Anbietende Datenprodukte mithilfe eines Manifest-gesteuerten Modells freigeben. In vielen Apps referenzieren sichere Ansichten Objekte in anderen Anbieterdatenbanken. Bei der klassischen sicheren Freigabe erteilen Sie (der Anbietende) der Freigabe REFERENCE_USAGE für jede referenzierte Datenbank. In Declarative Native Apps deklarieren Sie diese Abhängigkeitsdatenbanken im Manifest mit required_databases. Somit stellen Sie sicher, dass Installer – insbesondere in anderen Regionen – datenbankübergreifende Referenzen zuverlässig auflösen können. Dies gilt auch für semantische Ansichten, benutzerdefinierte Funktionen (UDFs ) oder Prozeduren, die von sicheren Ansichten verwendet werden.

Wann required_databases verwendet werden sollte

Sie müssen immer dann eine Datenbank in required_databases einschließen, wenn ein freigegebenes Objekt in shared_content auf Objekte in einer Datenbank verweist, die nicht unter shared_content/databases aufgeführt ist. Dies ist wichtig für regionsübergreifende Bereitstellungen, bei denen das Vorhandensein dieser Abhängigkeiten nicht vorausgesetzt werden kann, zum Beispiel in den folgenden Situationen:

  • Sichere Ansichten in der freigegebenen Datenbank, die JOIN/SELECT-Anweisungen für Tabellen oder Ansichten anderer Anbieterdatenbanken ausführen

  • Ansichten, die auf UDFs oder Prozeduren verweisen, die sich in anderen Datenbanken befinden

  • Notebooks, die über application_content eingebunden werden, wenn die Notebook-Logik oder die vom Notebook abgefragten Ansichten von Objekten in anderen Datenbanken abhängen

  • Semantische Ansichten, deren zugrunde liegende physische Tabellen oder Ansichten sich in einer anderen Datenbank befinden

Datenbankübergreifende Abhängigkeiten gibt es häufig. Wenn Sie externe Datenbanken nicht explizit deklarieren, kann es vorkommen, dass eine App in der Region des Anbietenden erfolgreich validiert oder installiert wird, aber in anderen Regionen fehlschlägt, weil die erforderlichen Referenzen nicht aufgelöst werden können.:code:required_databases beseitigt diese Mehrdeutigkeit, indem es eine deklarative Liste von Abhängigkeitsdatenbanken bereitstellt, die überall dort vorhanden und auflösbar sein müssen, wo die App erstellt, veröffentlicht und installiert wird.

Die Freigabe der Paketversion wird blockiert, wenn Datenbanken mit Abhängigkeiten nicht ausdrücklich in ` required_databases` deklariert sind. Zum Zeitpunkt von BUILD,COMMIT oder RELEASE wird eine Fehlermeldung mit dem ausdrücklichen Hinweis generiert, dass die referenzierte Datenbank im Abschnitt required_databases des Manifests fehlt.

Wann required_databases nicht verwendet werden sollte

Beachten Sie, dass das Einfügen einer Datenbank in required_databases nicht gilt für:

  • Objekte, die vollständig in den unter aufgeführten shared_content/databases Datenbanken enthalten sind

  • Klassische Freigaben, bei der Berechtigungen für Freigaben (einschließlich REFERENCE_USAGE) anstelle von Manifest-Deklarationen verwendet werden

Einschränkungen für die Replikation

Das Deklarieren von Datenbanken in required_databases bedeutet nicht, dass diese Datenbanken oder deren Inhalt repliziert werden. Es wird die Abhängigkeit registriert, sodass die Framework- und Freigabeangebot-Workflows Verweise entsprechend vorbereiten und auflösen können.

Zur Unterstützung von regionsübergreifenden Installationen und Failover, wenn Ihr Manifest ` required_databases` verwendet:

  • Identifizieren von Abhängigkeitsdatenbanken: Bestätigen Sie für jeden Eintrag unter shared_content.required_databases, welcher anbietereigenen Datenbank sie in Ihrem Quellkonto zugeordnet ist.

  • Konfigurieren der Replikation für jede Abhängigkeit: Richten Sie die Datenbank- (oder Konto-) Replikation für jede Abhängigkeitsdatenbank in die Regionen und Konten ein, in denen Sie die App erstellen, freigeben und installieren möchten. Verwenden Sie für diesen Schritt die Standard-Replikationsfeatures von Snowflake.

  • Sorgen Sie dafür, dass die Namen konsistent sind: Stellen Sie sicher, dass die Datenbanknamen in den Zielregionen genau mit den Namen übereinstimmen, die Sie in`required_databases` deklarieren. Konflikte mit Namen führen dazu, dass BUILD/COMMIT/RELEASE mit einem Fehler fehlschlagen, der angibt, dass die referenzierte Datenbank in required_databases fehlt.

  • Überprüfung nach Abschluss der Replikation: Nachdem die erste Replikation und alle nachfolgenden Aktualisierungen abgeschlossen sind, führen Sie Ihre BUILD-, COMMIT- oder RELEASE-Befehle in der Zielregion aus. Wenn Sie Fehlermeldungen zu ungelösten oder fehlenden Abhängigkeitsdatenbanken erhalten, überprüfen Sie Folgendes:

    • Die Datenbank wird repliziert und ist im Zielkonto und in der Region verfügbar.

    • Der Datenbankname stimmt mit dem Wert in required_databases überein.

    • Alle verketteten Abhängigkeiten, auf die sich die Datenbanken stützen, werden ebenfalls repliziert und korrekt benannt.

Umfassende Schritte und Optionen beim Konfigurieren der Datenbank- und Kontoreplikation finden Sie unter:doc:/user-guide/account-replication-intro.