Concevoir des gestionnaires qui respectent les contraintes imposées par Snowflake

Pour assurer la stabilité dans l’environnement Snowflake, Snowflake impose les contraintes suivantes au code du gestionnaire. Sauf indication contraire, ces limitations sont appliquées lorsque le gestionnaire est exécuté, et non lors de sa création.

Dans ce chapitre :

Évitez de consommer trop de mémoire.

Évitez les éléments suivants, qui peuvent consommer de grandes quantités de mémoire :

  • Grandes valeurs de données. Il peut s’agir de valeurs binaires, ainsi que de grands tableaux, d’objets ou de variantes.

    Snowflake convertit les types de données SQL en types correspondants dans le langage du gestionnaire. Pour plus d’informations, voir Mappage des types de données entre SQL et les langages de traitement.

  • Profondeur excessive de la pile. Snowflake a testé des appels de fonction simples imbriqués dans 50 niveaux de profondeur sans erreur. La limite maximale pratique dépend de la quantité d’informations placées sur la pile.

Le code du gestionnaire renvoie une erreur s’il consomme trop de mémoire. La limite spécifique est sujette à changement.

Évitez les algorithmes qui prennent beaucoup de temps par appel.

Si un gestionnaire prend trop de temps pour se terminer, Snowflake arrête l’instruction SQL et renvoie une erreur à l’utilisateur. Cela limite l’impact et le coût d’erreurs telles que les boucles infinies.

N’utilisez pas de bibliothèques qui pourraient introduire des vulnérabilités en matière de sécurité

Bien que votre gestionnaire puisse utiliser les fonctionnalités des bibliothèques externes, les restrictions de sécurité de Snowflake désactivent certaines capacités, comme l’écriture dans des fichiers. Pour plus de détails sur les restrictions de la bibliothèque, voir Pratiques de sécurité pour UDFs et procédures.