Création de tables virtuelles

Objective

After completing this lesson, you will be able to créez et administrez des tables virtuelles dans les schémas classiques et les conteneurs HDI et utilisez des tables virtuelles à partir de sources distantes.

Tables virtuelles

Accès aux objets distants

Pour accéder aux données d'objets spécifiques d'un système distant (objets distants), SAP HANA implémente des tables virtuelles. Les tables virtuelles sont des objets de catalogue et se trouvent dans un schéma.

Une table virtuelle donne accès à un objet distant (une table ou une vue dans l'exemple ci-dessous).

Cette diapositive explique le concept de Tables virtuelles.

Remarque

Ici, nous appelons délibérément des artefacts dans le système distant "objets", et non "tables", pour au moins deux raisons :
  • Tout d'abord, le type d'artefacts distants dépend du système distant. Dans un système de base de données, il peut s'agir de tables. Mais dans un système de fichiers, il n'y a pas de tables, mais des fichiers. Un fichier .csv ou .txt avec une structure bien définie peut très certainement être converti en table virtuelle, mais cela dépend de la capacité de l'adaptateur et nécessite une définition de métadonnées pour identifier les types de colonnes, entre autres.
  • En outre, même dans un système de base de données distant, il existe classiquement des tables et des vues. La plupart des adaptateurs peuvent accéder aux tables distantes et aux vues distantes de la même manière.

Une fois les tables virtuelles créées, elles peuvent être utilisées par les processus de base de données comme si elles étaient physiquement situées dans la base de données cible. Cependant, le principe clé des tables virtuelles est qu'elles ne stockent pas les données dans la base de données locale, mais uniquement les métadonnées. Au lieu de cela, ils exposent les données distantes via leur source distante prise en charge chaque fois qu'une requête est exécutée au-dessus d'elles.

Remarque

Une approche alternative est possible, qui consiste à consommer des données distantes sans tables virtuelles. Elle est appelée Base de données liée et est disponible uniquement avec les sources distantes Smart Data Access. Le concept, les avantages et les limitations sont abordés ultérieurement.

Définition de table virtuelle

Une table virtuelle comporte deux parties dans ses définitions :

  • Identifiant de la table virtuelle
  • Identifiant de l'objet distant, y compris la référence à la source distante
Cette diapositive présente une synthèse des attributs de la table virtuelle.

Remarque

Le nom de la base de données distante peut être <NULL> même si le système distant est bien une base de données. En effet, dans certaines configurations, par exemple avec SAP HANA comme système distant, l'objet source distant détermine déjà la base de données avec l'hôte et le port.

Avec d'autres types de systèmes distants, une seule source distante peut faire référence à un serveur de base de données dans lequel plusieurs bases de données peuvent être atteintes. C'est là que le paramètre de base de données distante est requis dans une définition de table virtuelle.

Prise en compte de la sécurité pour les tables virtuelles

Lors de la création de tables virtuelles, vous devez remplir un certain nombre de conditions préalables concernant non seulement la disponibilité du système source distant et du système distant, mais également les autorisations en place dans les deux systèmes. Les voici.

Dans le système local

Pour créer une table virtuelle, les conditions préalables pour l'utilisateur local sont les suivantes :

  • L'utilisateur local qui a créé la source distante dispose automatiquement du droit de créer des tables virtuelles sur cette source distante.
  • Toute autre utilisation requiert le privilège CREATE VIRTUAL TABLE sur la source distante.
  • Dans tous les cas, l'utilisateur local a besoin CREATE ANY privilèges sur le schéma dans lequel la table virtuelle sera stockée.

Dans le système distant

La configuration des identifiants de la source distante (ou un identifiant secondaire existant pour votre utilisateur sur cette source distante) détermine quel utilisateur distant accède à l'objet distant/source.

Attention

Si aucun identifiant n'existe pour la source distante (utilisateur technique ou identifiants secondaires), aucun accès aux objets distants n'est possible. Cela peut être réalisé pour certains types de sources distantes, mais généralement non recommandé.

En règle générale, lorsque vous créez une table virtuelle pointant vers un système de base de données distant, l'utilisateur distant dérivé de la définition de la source distante (ou d'un identifiant secondaire existant associé à votre utilisateur) a uniquement besoin duCATALOG READprivilège (SAP HANA) ou d'un droit équivalent, mais PAS nécessairement d'un droit SELECT sur la table ou la vue distante (ou son schéma contenant).

Remarque

Cela permet une configuration de sécurité pratique lors de l'utilisation d'identifiants secondaires ; en effet, un utilisateur ne disposant que du privilège CATALOG READ (ou équivalent) peut créer des tables virtuelles sans pouvoir sélectionner les données des objets source correspondants.

Comment créer une table virtuelle ?

Une table virtuelle peut être créée de deux façons différentes :

  • À partir de l'explorateur de base de données SAP HANA, à l'aide du catalogue
  • Avec une instruction SQL

Configuration de tables virtuelles avec l'interface utilisateur graphique

Avec l'éditeur basé sur un formulaire, vous utilisez une source distante existante pour répertorier les objets auxquels elle donne accès, puis créer des objets virtuels pour un ou plusieurs d'entre eux.

Cette diapositive montre comment utiliser la liste d'objets source distante.

Avec l'approche basée sur un formulaire, vous sélectionnez d'abord les objets distants, puis vous définissez où stocker la table virtuelle et comment les nommer.

Parlons donc des différents éléments qui identifient d'abord les objets distants.

  • La source distante est un élément obligatoire, comme indiqué précédemment.
  • L'élément Base de données est utilisé pour certains types de sources distantes (c'est-à-dire certains adaptateurs), lorsque la source distante ne fait pas référence à une base de données spécifique.

    Un cas d'utilisation courant est lorsqu'un système de base de données distant peut donner accès à plusieurs bases de données à partir d'un seul hôte et d'un seul port.

    Pour SAP HANA en tant que système distant, la source distante spécifie toujours une seule base de données cible. Par conséquent, la partie Base de données est toujours <NULL>.

  • Schéma

    Le schéma est un artefact classique dans la topologie de base de données. Dans la plupart des systèmes de base de données, y compris SAP HANA, les tables, les vues et de nombreux autres objets sont situés dans des schémas. Cependant, le concept de schéma n'existe pas toujours. Par exemple, avec l'adaptateur de fichier SDI, il n'y a pas de schéma. La partie Schéma est donc également <NULL>.

  • Objet

    Enfin, l'objet distant est identifié par son nom. Cet élément est obligatoire dans toute définition de table virtuelle.

Une fois que vous avez sélectionné un ou plusieurs objets pour lesquels créer une table virtuelle, vous devez définir les identifiants des tables virtuelles dans votre système SAP HANA local (cible).

  • Si vous créez une seule table virtuelle, la boîte de dialogue vous demande le nom de l'objet. Au contraire, si vous créez plusieurs tables virtuelles, la boîte de dialogue, comme illustré dans l'exemple, vous demande un préfixe qui sera ajouté aux noms de tous les objets distants.

    Astuce

    En général, il est recommandé d'utiliser un préfixe qui permet d'identifier les tables virtuelles. Pour rappel, même si les tables virtuelles ont une icône dédiée dans l'explorateur de catalogues, elles sont toujours répertoriées avec d'autres tables de lignes et de colonnes classiques, de sorte qu'un préfixe spécifique peut vous aider.
  • Enfin, et ce n'est pas le moins important, le schéma dans lequel créer les nouvelles tables virtuelles doit être indiqué. Par défaut, il s'agit du schéma de votre utilisateur.

Lancez cette vidéo pour apprendre à créer une table virtuelle avec l'interface utilisateur graphique de l'explorateur de base de données SAP HANA.

Configuration de la table virtuelle avec SQL

En plus de la liste des objets source distants dans l'explorateur de base de données SAP HANA, vous pouvez créer des tables virtuelles avec des instructions SQL. Cela est utile lorsque vous connaissez déjà les identifiants d'objets distants, en particulier si vous voulez créer des tables virtuelles en masse.

L'instruction est la suivante :

Code Snippet
12
CREATE VIRTUAL TABLE <schema>.<virtual_table_name> AT <remote_source>.<database>.<schema>.<object_name>;

Les informations déjà discutées sur la manière de définir les objets distants lors de la création d'une table virtuelle à partir de l'interface utilisateur graphique s'appliquent de la même manière. Comme dans toute instruction SQL dans SAP HANA, les identifiants doivent être entre guillemets doubles ou sont automatiquement interprétés comme non sensibles à la casse (et stockés en majuscules).

Dans certains scénarios, il peut être nécessaire de définir <database> et/ou <schema> à distance sur "<NULL>".

Attention

Même si vous utilisez des identifiants sans guillemets pour le nom de la source ou de l'objet distant, la valeur <NULL> d'une base de données ou d'un schéma, le cas échéant, doit TOUJOURS être mise entre guillemets. Sans les guillemets doubles, l'instruction SQL échouera.

Voici un exemple de deux instructions SQL pour créer les mêmes tables virtuelles que celles que nous avons créées précédemment sur la base des objets du schéma EPM_MODEL distant (source CL_RS_OP_SDA) :

Code Snippet
12345
CREATE VIRTUAL TABLE "CL_DATA_ENGINEER_FED"."VT_SNWD_PO" AT "CL_RS_OP_SDA"."<NULL>"."EPM_MODEL"."SNWD_PO"; CREATE VIRTUAL TABLE "CL_DATA_ENGINEER_FED"."VT_SNWD_PO_I" AT "CL_RS_OP_SDA"."<NULL>"."EPM_MODEL"."SNWD_PO_I";

Si l'utilisateur de session est CL_DATA_ENGINEER_FED, la mention de ce schéma dans l'identifiant de table virtuelle peut être omise.

Lancez cette vidéo pour apprendre à créer une table virtuelle avec une instruction SQL.

Définition de table virtuelle dans un projet SAP Business Application Studio

Accès aux objets distants à partir d'un conteneur HDI

Lorsque vous travaillez dans des projets de développement ou de modélisation dans SAP Business Application Studio, vous avez la possibilité d'utiliser des sources distantes et de créer des tables virtuelles à partir d'un module de base de données SAP HANA (contenant des artefacts de conception), qui est déployé dans un conteneur HDI (artefacts d'exécution).

Un artefact de type conception dédié, .hdbvirtualtable, est utilisé à cette fin.

Pour rappel, une source distante dans SAP HANA n'est pas un objet de schéma. Ainsi, vous ne pouvez pas créer de source distante dans le module HDB d'un projet. Cependant, vous pouvez configurer votre projet de sorte qu'il consomme une source distante existante.

Voyons comment faire ceci.

Comment utiliser des objets distants

La consommation d'objets distants à partir d'un conteneur HDI repose sur les conditions préalables suivantes :

  • Un service fourni par l'utilisateur s'exécute dans l'espace Cloud Foundry dans lequel vous prévoyez de déployer votre service conteneur HDI.

    Un utilisateur disposant des droits suivants doit être affecté à ce service fourni par l'utilisateur :

    CREATE VIRTUAL TABLE sur la source distante que vous souhaitez utiliser.

  • Le service fourni par l'utilisateur est lié à votre projet dans la définition de dépendance du fichier mta.yaml.
  • Un fichier .hdbgrants accorde les droits appropriés à l'utilisateur du propriétaire de l'objet HDI (#OO) qui sera propriétaire des objets conteneur HDI.

Remarque

Le projet doit être déployé avec succès après avoir apporté ces modifications, de sorte que le propriétaire de l'objet dispose réellement des droits pertinents, ce qui vous permet de créer des tables virtuelles.

Création de tables virtuelles dans SAP Business Application Studio

Pour créer une table virtuelle dans SAP Business Application Studio, vous créez un fichier de conception .hdbvirtualtable correspondant. Ce fichier peut être édité soit dans un éditeur de texte, soit dans un éditeur dédié. Ce dernier apporte un avantage, à savoir la possibilité de lire la hiérarchie d'objets source distante.

Cette diapositive montre comment créer une table virtuelle dans SAP Business Application Studio.

Dans un éditeur de texte, le même objet de conception se présente comme suit :

Code Snippet
12
VIRTUAL TABLE "CL_V_SNWD_PO" AT "CL_RS_OP_SDA"."<NULL>"."EPM_MODEL"."SNWD_PO"

L'utilisation de guillemets doubles est recommandée pour éviter des incohérences dans l'utilisation des majuscules et des minuscules. Selon la convention d'appellation que vous avez sélectionnée, elle peut également être obligatoire. Par exemple, si vous prévoyez d'utiliser des noms d'objets combinant des minuscules et des majuscules, si vous utilisez des espaces noms dans les identificateurs d'objet et/ou si ces identifiants incluent des points.

Remarque

Que vous utilisiez des guillemets doubles ou non en général, le mot-clé "<NULL>" doit toujours être mis entre guillemets chaque fois qu'il est utilisé dans une définition de table virtuelle. Cela est illustré dans la zone Nom de la base de données dans l'exemple ci-dessus.

Par rapport aux tables virtuelles créées dans un schéma classique, celles que vous définissez avec un fichier de conception dans un projet SAP Business Application ne spécifient PAS de schéma, comme c'est le cas dans les projets SAP Business Application Studio pour d'autres objets tels que des tables, des vues de colonnes, etc.

Si votre convention d'appellation inclut un espace nom dans l'identifiant d'objet, vous devez ajouter cet espace nom comme préfixe dans la zone Nom de table virtuelle, comme suit : <name.space.specification>::<virtual_table_name>

Lancez cette vidéo pour apprendre à créer des tables virtuelles avec des fichiers de conception dans un projet SAP Business Application Studio.

Utilisation d'une table virtuelle

Une fois qu'une table virtuelle est correctement créée, elle peut être utilisée par n'importe quel utilisateur disposant des droits appropriés. Examinons les droits requis :

  • Sur le système local : privilège SELECT sur l'objet virtuel.

    Il s'agit du privilège classique requis pour accéder aux données d'une table. Elle peut être accordée à un utilisateur ou (de préférence) à un rôle, soit sur une table virtuelle spécifique, soit sur l'ensemble du schéma.

  • Dans le système distant : SELECT sur l'objet distant

    L'utilisation d'une table virtuelle requiert que l'utilisateur distant dérivé de la définition de la source distante (utilisateur technique ou identifiant secondaire qui vous est affecté pour cette source distante) donne accès à l'objet distant. Dans un système de base de données distant, cela est généralement accordé via un privilège SELECT.

    Remarque

    Dans les systèmes sources qui ne sont pas des bases de données, par exemple un système de fichiers, il peut y avoir un autre moyen de configurer l'accès aux données. L'utilisation d'identifiants secondaires n'est pas toujours possible dans ces cas. Par exemple, l'adaptateur de fichier de l'intégration des données intelligentes SAP HANA peut stocker un jeton pour sécuriser l'accès à un référentiel de fichiers. Ce jeton est ensuite utilisé dans la définition de sécurité de la source distante.

Administration des sources distantes

Au-delà de la création d'une source distante, un administrateur de mise à disposition de données est responsable de sa maintenance. Cela inclut, par exemple, les droits de source distante, les modifications apportées à la définition de la source distante ou à la configuration de sécurité. Il peut également s'agir de la suppression d'une source distante lorsqu'elle n'est plus nécessaire.

Soulignons un aspect très important de cette maintenance. Les tables virtuelles dépendent d'une source distante. Ainsi, dès qu'une table virtuelle est définie sur une source distante, vous NE POUVEZ PAS supprimer la source distante tout en conservant les tables virtuelles.

Heureusement, vous pouvez modifier la définition de la source distante même si des tables virtuelles y sont définies.

Gestion des droits sur une source distante

Lorsqu'une source distante est créée, l'utilisateur qui l'a créée est initialement le seul avec des droits sur cette source distante. Ces privilèges peuvent ou doivent être accordés à d'autres utilisateurs, selon la configuration de l'arborescence des autorisations dans votre organisation.

Les droits de source distante sont des droits d'objet (ils font référence à un objet source distant spécifique) et ils peuvent être classés en deux catégories :

  • Droits d'administration :
    • ALTER
    • DROP
  • Droits d'utilisation de la source distante :
    • CREATE VIRTUAL TABLE
    • LINKED DATABASE
    • CREATE REMOTE SUBSCRIPTION
    • PROCESS REMOTE SUBSCRIPTION EXCEPTION

Un autre privilège est CREDENTIAL ADMIN, qui est requis pour administrer les identifiants secondaires sur une source distante que vous n'avez PAS créée.

Tous ces droits sont administrés de manière classique dans le cockpit SAP HANA ou avec des instructions GRANT et REVOKE dans une console SQL.

Modification d'une source distante

Pour modifier une source distante, vous utilisez l'interface utilisateur graphique dans SAP Database Explorer ou exécutez une instruction ALTER REMOTE SOURCE dans une console SQL.

Cela vous permet de modifier tous les éléments d'une définition de source distante, SAUF son nom.

Remarque

En effet, le nom de la source distante est celui utilisé pour conserver la relation avec les tables virtuelles créées en plus de la source distante.

Un scénario typique peut être un système distant se déplaçant vers un hôte différent, la modification d'un paramètre tel que le mode DML (lecture ou lecture/écriture), ou un schéma d'alias. Il peut également s'agir d'une modification de la définition de sécurité, par exemple le passage d'identifiants d'utilisateur technique à des identifiants secondaires pour permettre un accès plus précis aux objets distants.

Suppression d'une source distante

En gardant à l'esprit la différence entre la modification et la suppression d'une source distante, voyons comment supprimer une source distante.

Suppression d'une source distante à l'aide de l'interface utilisateur graphique

  1. Dans l'explorateur de base de données SAP HANA, accédez au catalogue et accédez à la section Sources distantes.
  2. Cliquez avec le bouton droit de la souris sur la source distante et sélectionnez Supprimer.
  3. Sélectionnez l'option pertinente :
    • Supprimer la source distante si aucun autre objet n'y dépend
    • Supprimer la source distante et tous les autres objets qui en dépendent
  4. Sélectionnez Supprimer.

Attention

Utilisez la deuxième option très attentivement, car vous pourriez perdre beaucoup de tables virtuelles si vous supprimez la mauvaise source distante.

Suppression d'une source distante avec SQL

Dans une console SQL, vous supprimez une source distante en exécutant l'une des instructions suivantes :

  • Pour supprimer la source distante si aucun autre objet n'y dépend :
    Code Snippet
    1
    DROP REMOTE SOURCE <remote_source_name>;
  • Pour supprimer la source distante et tout autre objet qui en dépend :
    Code Snippet
    1
    DROP REMOTE SOURCE <remote_source_name> CASCADE;

Attention

Encore une fois, vous devez utiliser l'option CASCADE très soigneusement.