Utilisation d'un projet de modélisation

Déploiement de modèles

Objective

After completing this lesson, you will be able to déployez le contenu de modélisation dans l'environnement d'exécution.

Infrastructure de déploiement SAP HANA

SAP HANA Deployment Infrastructure (HDI) est un ensemble de services qui permet le déploiement d'objets de base de données dans des conteneurs HDI isolés.

Les conteneurs HDI sont simplement des schémas de base de données, mais ils incluent des fonctionnalités supplémentaires telles qu'un propriétaire dédié du conteneur et des métadonnées pour gérer leurs objets de base de données. Considérez un conteneur comme un schéma intelligent.

Les objets inclus dans les conteneurs sont définis dans les modules HDB de votre projet à l'aide de fichiers source et, lors du déploiement, les objets d'exécution sont créés et ajoutés au conteneur.

HDI prend en charge la gestion des dépendances et détermine l'ordre de déploiement. Elle prend également en charge la mise à niveau des artefacts d'exécution existants lorsque leurs artefacts de conception correspondants sont modifiés.

Un concept clé des conteneurs HDI est le fait que l'intégralité du cycle de vie (création, modification et suppression) des objets de base de données est exécutée exclusivement par HDI. Par conséquent, vous ne pouvez pas créer directement d'artefacts de base de données, tels que des tables ou des vues, avec des instructions Data Definition Language (DDL) à l'aide de SQL.

Sources de données pour les vues de calcul

Lorsque vous développez des vues de calcul, les sources de données que vous sélectionnez doivent exister en tant que fichiers de conception dans le conteneur de votre module HDB. Ils doivent donc être de l'un des types suivants :

  • Objets de base de données "réels" (table, vue, fonction de table, tables virtuelles, etc.) existants dans le conteneur et ayant un fichier de conception correspondant dans le module HDB
  • Synonymes faisant référence à des objets de base de données situés dans un schéma autre que le conteneur lui-même. Vous en apprendrez plus sur les synonymes plus tard.

Attention

Une vue de calcul qui fait référence à une source de données qui a été créée directement à l'aide de SQL dans votre conteneur (sans fichier source) ne peut donc pas être générée. La compilation échoue et génère un message d'erreur, par exemple :
Code Snippet
1
The file requires "db://HA300::TABLE_SQL" which is not provided by any file

Propriétés clés des conteneurs HDI

  • Un conteneur est créé automatiquement lorsque vous déployez votre module de base de données pour la première fois.

  • Un conteneur génère un schéma de base de données au moment où un conteneur est créé pour la première fois.

  • Les objets de base de données sont déployés dans ce schéma.

  • Les définitions de fichiers source doivent être écrites sans schéma.

  • Les références directes à des objets en dehors de votre conteneur ne sont pas autorisées. Vous devez utiliser des synonymes.

Fichier de configuration du conteneur HDI

Dans chaque module HDB d'un projet, vous trouverez un fichier très important et obligatoire qui existe sous le dossier src avec le suffixe : .hdiconfig. Il s'agit du fichier de configuration du conteneur HDI utilisé pour lier les fichiers de conception de votre projet au plug-in de build installé correspondant.

Capture d'écran du fichier de configuration pour le conteneur. Il contient les plug-ins requis et, dans cet exemple, la version minimale du plug-in qui s'applique à tous les plug-ins.

Sans le plug-in de build, il n'est pas possible de déployer les objets d'exécution à partir des fichiers de conception. Ce fichier de configuration dirige chaque fichier source de votre projet vers le plug-in de build approprié.

Habituellement, il n'y a qu'un seul fichier .hdiconfig dans un module HDB, et celui-ci doit se trouver dans le dossier src du module HDB. Ce fichier contient une liste de toutes les liaisons pour tous les types de fichiers source.

L'entrée minimum_feature_version de ce fichier est là pour empêcher la compilation de vos objets de module HDB avec une version de HANA Cloud inférieure à ce qui est spécifié et/ou ce dont votre code a besoin. Par exemple, si vous avez conçu et testé votre module HDB avec la version 1004 des plug-ins de build, cela ne se déploiera pas sur une instance SAP HANA Cloud où la version 1002 est en place.

Dans le fichier de configuration du conteneur, vous trouverez, pour chaque type de fichier source, deux entrées :

  • Nom du suffixe, par exemple "hdbcalculationview"

  • Nom du plug-in, par exemple "com.sap.hana.di.calculationview"

Il est très important de se rappeler que lorsque vous importez un projet dans votre paysage, il apporte avec lui son propre fichier .hdiconfig qui fait référence à la version de fonctionnalité qui a été utilisée lors de son premier développement. Si vous prévoyez ensuite de mettre à jour le fichier source à l'aide de fonctionnalités plus récentes de SAP HANA (par exemple, vous souhaitez ajouter une nouvelle fonctionnalité à une vue calculée qui vient de devenir disponible avec la version la plus récente de SAP HANA), vous ne verrez pas la nouvelle fonctionnalité dans l'éditeur source si le fichier .hdiconfig n'a pas été ajusté pour utiliser la version de fonctionnalité ultérieure.

Attention

Le fichier de configuration du conteneur HDI est un fichier sans nom et doit uniquement contenir le suffixe .hdiconfig. Si vous essayez d'ajouter un nom, la compilation du fichier .hdiconfig échouera. Laissez-le tel quel.

Vue SAP HANA PROJECTS

Dans SAP Business Application Studio, lorsqu'un projet inclut un module de base de données SAP HANA, une vue dédiée PROJETS SAP HANA est disponible (à côté de la vue Explorateur).

Capture d'écran de la vue SAP HANA PROJECTS dans Business Application Studio. Utilisez-le pour déployer un seul objet, un seul dossier ou le module. Vous devez ajouter une connexion à un conteneur HDI existant ou à un conteneur que vous créez dans le cadre de la liaison.

La vue/le panneau Projets SAP HANA est la matérialisation des modules HDB définis dans vos projets. La partie supérieure représente la structure de dossiers du module HDB. L'élément racine correspond au chemin d'accès au module HDB dans le projet. Pour créer les objets d'exécution dans le schéma de conteneur HDI connecté, vous pouvez exécuter un déploiement. Ce déploiement peut être déclenché à différents niveaux : un seul fichier, un seul dossier ou l'ensemble du module HDB.

Remarque

Vous ne pouvez pas manipuler (déplacer, copier, supprimer, etc.) vos fichiers de conception à partir de la vue PROJETS SAP HANA, mais vous pouvez les ouvrir dans leur éditeur respectif.

Dans la structure de fichier, En attente de déploiement identifie où un déploiement est requis pour les fichiers nouveaux ou modifiés. Pour les fichiers de conception supprimés, vous devez activer la suppression de l'objet d'exécution en déployant le dossier qui les contenait.

La partie inférieure représente les connexions à la base de données entre le module HDB et les conteneurs ou services HDI fournissant l'accès aux ressources externes.

Un projet avec un module SAP HANA Database a besoin d'au moins un conteneur HDI correspondant pour déployer ses objets d'exécution. C'est ce qui est affiché dans l'image Vue des projets SAP HANA.

Dans la partie connexion, vous pouvez lier un module HDB existant à un nouveau conteneur HDI ou à un conteneur HDI existant. Vous pouvez également ajouter de nouvelles connexions (par exemple à un autre conteneur) et

Explorateur de base de données

À partir de SAP Business Application Studio, vous pouvez lancer l'application Explorateur de bases de données pour afficher les artefacts de base de données (tables, vues, procédures, vues de colonne) d'un ou plusieurs conteneurs.

Dans ce cas, même si vous êtes connecté à SAP Business Application Studio avec votre utilisateur SAP Business Application Studio habituel, l'accès au conteneur est effectué par un utilisateur technique SBSS (Service Broker Security Support) qui est créé de manière transparente lorsque vous ajoutez le conteneur à l'Explorateur de bases de données. Cet utilisateur technique interagit avec les objets de base de données pour votre compte, par exemple pour afficher le contenu d'une table ou afficher un aperçu des données d'une vue calculée.

Si votre conteneur utilise des données d'un schéma externe, l'utilisateur technique doit également disposer d'autorisations pour les objets de schéma externes, par exemple pour afficher les données d'une table externe référencée par un synonyme. Pour en savoir plus à ce sujet, reportez-vous au chapitre Sécurité dans la modélisation SAP HANA.

Déploiement d'objets de modélisation

Lors du développement, vous devez créer ou mettre à jour les objets d'exécution à partir des objets de conception dans le schéma conteneur. Pour ce faire, vous utilisez la fonction Déployer disponible dans la vue PROJETS SAP HANA.

Le déploiement de repose sur le service conteneur HDI (un service Cloud Foundry), qui gère l'interaction entre SAP Business Application Studio, l'infrastructure de déploiement HANA et, à son tour, la base de données SAP HANA.

Lorsque vous liez un module HDB à un service conteneur HDI, cette liaison crée le schéma de conteneur correspondant s'il n'existe pas. Ensuite, les objets de conception peuvent être déployés dans le conteneur HDI.

Structure de création du contenu de modélisation

Lorsque vous déployez un module de base de données HANA, l'outil de déploiement HDI renseigne le conteneur HDI, c'est-à-dire un schéma situé dans la base de données SAP HANA Cloud, avec les objets d'exécution définis dans le module.

Une opération de déploiement peut être exécutée aux niveaux suivants d'une structure de projet :

  • Un module HDB entier

  • Un sous-dossier du module HDB

  • Un ou plusieurs objets individuels

Remarque

L'opération de déploiement décrite ci-dessus ne doit pas être confondue avec ce qui est également appelé Déployer dans Cloud Foundry. Dans Cloud Foundry, la commande deploy (cf deploy) s'applique à l'ensemble d'une application (par exemple, à l'intégralité d'un MTA, y compris potentiellement plus que le seul module HDB). Il est utilisé principalement lorsque vous voulez transporter et déployer/activer votre projet dans un autre environnement. Par exemple, du DEV à l'environnement QA ou PROD.

Indépendamment de ce que vous déployez (module HDB, sous-dossier ou objet unique), il existe toujours un contrôle de dépendance de bout en bout appliqué à chaque objet faisant partie de l'étendue de compilation. Ainsi, même si vous compilez un seul objet, il y aura un contrôle récursif de tous les objets qu'il référence pour s'assurer que ces objets existent déjà en tant qu'objets d'exécution ou sont définis dans un objet de conception et créés en même temps.

Erreurs de déploiement

Lorsque vous déployez des modèles définis dans un module HDB, vous pouvez rencontrer différents problèmes, qui sont décrits dans le journal que vous pouvez consulter dans la console. Certains sont liés aux contrôles de dépendance dont nous venons de parler. D'autres concernent la cohérence des objets de conception (par exemple, les options d'espace nom des dossiers de conception). Une autre erreur de compilation classique est lorsque deux fichiers de conception différents fournissent une définition pour le même objet d'exécution.

Voici une liste des causes profondes fréquentes des erreurs de déploiement.

Erreurs les plus courantes lors des opérations de compilation

  • La définition d'un objet dont dépend un autre objet n'est pas fournie, ou bien elle est fournie mais cet objet n'a pas encore été déployé.

  • La définition d'un objet d'exécution est fournie par plusieurs fichiers de conception.

  • Il existe une incohérence d'espace nom entre le contenu d'un fichier de conception et la propriété de l'espace nom du dossier dans lequel il se trouve.

  • Le service permettant d'accéder aux schémas externes n'est pas défini ou n'est pas disponible dans l'espace cible.

  • Les synonymes pour l'accès au schéma externe ne sont pas encore déployés.

  • Il existe une erreur de conception spécifique à l'objet.

    Par exemple, aucune mesure n'est définie dans une vue de calcul Cube.

  • Il existe une incohérence entre l'objet que vous compilez et un objet référencé.

    Par exemple, il existe une incohérence dans un nom de colonne entre deux objets avec une dépendance.

Mettre de côté un fichier de conception pour résoudre les problèmes de création

Lorsqu'une vue de Calcul ne peut pas être compilée pour quelque raison que ce soit, elle empêche généralement la compilation de son dossier contenant et de tout dossier supérieur. Il existe plusieurs approches que vous pouvez utiliser pour résoudre temporairement ce problème et continuer à travailler sur le reste de vos modèles, sans perdre complètement le fichier de conception existant.

  • Exportez la vue de Calcul en lieu sûr, puis supprimez la vue de Calcul de votre espace de travail.

    Lors de l'exécution de la compilation, la vue de calcul supprimée n'entraînera aucun problème. Lorsque vous voulez reprendre le travail sur cette vue, il vous suffit de la réimporter à son emplacement d'origine.

  • Ajoutez .txt au fichier de conception. Par exemple, SALES.hdbcalculationview deviendra SALES.hdbcalculationview.txt.

    Dans ce scénario, vous ne supprimez pas le fichier de l'espace de travail, mais vous modifiez son extension de sorte qu'il ne soit (temporairement) pas considéré comme un fichier de conception Vue de calcul, mais comme un fichier texte brut. Aucun contrôle spécifique n'est effectué sur un fichier .txt lors de la compilation, il aura donc le même effet que la suppression du fichier, mais il est alors beaucoup plus facile d'annuler : il vous suffit de supprimer l'extension .txt supplémentaire.