Bases de données de dépendances : Gestion des références entre bases de données¶
Avec les Snowflake Declarative Native Apps, les fournisseurs peuvent partager des produits de données à l’aide d’un modèle basé sur un manifeste. Dans de nombreuses applications, les vues sécurisées font référence à des objets dans d’autres bases de données de fournisseurs. Dans le partage sécurisé classique, vous (le fournisseur) accordez REFERENCE_USAGE sur chaque base de données référencée au partage. Dans les Declarative Native Apps, vous déclarez ces bases de données de dépendances dans le manifeste en utilisant required_databases, garantissant ainsi que les installations (en particulier dans d’autres régions) puissent résoudre de manière fiable les références entre bases de données. Ceci s’applique également aux vues sémantiques, aux fonctions définies par l’utilisateur (UDFs), ou procédures utilisées par les vues sécurisées.
Quand utiliser required_databases¶
Vous devez inclure une base de données dans required_databases chaque fois qu’un objet partagé dans shared_content fait référence à des objets dans une base de données qui n’est pas répertoriée sous shared_content/databases. Ceci est essentiel pour les déploiements interrégionaux où la présence de ces dépendances ne peut être supposée, par exemple dans les situations suivantes :
Vues sécurisées dans la base de données partagée qui effectuent des opérations JOIN/SELECT à partir de tables ou de vues dans d’autres bases de données de fournisseurs
Vues faisant référence à des UDFs ou des procédures résidant dans d’autres bases de données
Notebooks inclus via
application_contentsi la logique des notebooks ou les vues interrogées par le notebook dépendent d’objets situés dans d’autres bases de donnéesVues sémantiques dont les tables ou vues physiques sous-jacentes se trouvent dans une autre base de données
Les dépendances entre bases de données sont courantes. Si vous ne déclarez pas explicitement les bases de données externes, une application peut être validée ou installée correctement dans la région du fournisseur, mais échouer dans d’autres régions, car les références requises ne peuvent pas être résolues. required_databases supprime cette ambiguïté en fournissant une liste déclarative des bases de données de dépendances qui doivent être présentes et résolvables partout où l’application est créée, publiée et installée.
La version du paquet sera bloquée si des bases de données de dépendances ne sont pas explicitement déclarées dans required_databases. Un message d’erreur sera généré au moment de BUILD,COMMIT ou RELEASE, indiquant spécifiquement que la base de données référencée est absente de la section du manifeste required_databases.
Quand ne pas utiliser required_databases¶
Notez que l’inclusion d’une base de données dans:code:required_databases ne s’applique pas à :
Objets entièrement contenus dans les bases de données répertoriées sous
shared_content/databasesPartage classique, qui utilise des privilèges sur les partages (y compris REFERENCE_USAGE) au lieu de déclarations de manifestes
Limites de la réplication¶
Déclarer des bases de données dans required_databases ne réplique pas ces bases de données ou leur contenu. Elle enregistre la dépendance afin que le framework et les workflows d’annonces puissent préparer et résoudre les références de manière appropriée.
Pour prendre en charge les installations interrégionales et le basculement lorsque votre manifeste utilise required_databases :
Identifier les bases de données de dépendances : Pour chaque entrée sous
shared_content.required_databases, confirmez la base de données appartenant au fournisseur à laquelle il est mappé dans votre compte source.Configurez la réplication pour chaque dépendance : Configurez la réplication de bases de données (ou de comptes) pour chaque base de données de dépendances vers les régions et les comptes où vous prévoyez de créer, de publier et d’installer l’application. Utilisez les fonctionnalités de réplication Snowflake standard pour cette étape.
Maintenir la cohérence des noms : Assurez-vous que les noms des bases de données dans les régions cibles correspondent exactement aux noms que vous déclarez dans
required_databases. Les discordances de noms entraîneront l’échec de BUILD/COMMIT/RELEASE avec une erreur indiquant que la base de données référencée est absente derequired_databases.Valider une fois la réplication terminée : Une fois la réplication initiale et les actualisations ultérieures terminées, exécutez vos commandes BUILD, COMMIT ou RELEASE dans la région cible. Si vous constatez des erreurs concernant des bases de données de dépendances non résolues ou manquantes, vérifiez :
La base de données est répliquée et disponible dans le compte et la région cibles.
Le nom de base de données correspond à la valeur dans ` required_databases`.
Toutes les dépendances chaînées dont dépendent ces bases de données sont également répliquées et correctement nommées.
Pour connaître les étapes et les options de bout en bout lors de la configuration de la réplication des bases de données et des comptes, consultez Présentation de la réplication et du basculement à travers plusieurs comptes.