Virtuelle Tabellen anlegen

Objective

After completing this lesson, you will be able to legen Sie virtuelle Tabellen in klassischen Schemas und HDI-Containern an, verwalten Sie sie, und nutzen Sie virtuelle Tabellen aus Remote-Quellen.

Virtuelle Tabellen

Zugriff auf Remote-Objekte

Um auf Daten aus bestimmten Objekten eines Remote-Systems (Remote-Objekte) zuzugreifen, implementiert SAP HANA virtuelle Tabellen. Virtuelle Tabellen sind Katalogobjekte und befinden sich in einem Schema.

Eine virtuelle Tabelle gewährt Zugriff auf ein Remote-Objekt (eine Tabelle oder einen View im Beispiel unten).

Auf dieser Folie wird das Konzept virtueller Tabellen erläutert.

Notiz

Hier werden Artefakte auf dem Remote-System aus mindestens zwei Gründen bewusst "Objekte" und nicht "Tabellen" aufgerufen:
  • Zunächst hängt der Typ der Remote-Artefakte vom Remote-System ab. In einem Datenbanksystem können dies natürlich Tabellen sein. In einem Dateisystem gibt es jedoch keine Tabellen, sondern Dateien. Eine CSV- oder TXT-Datei mit einer wohldefinierten Struktur kann sicherlich in eine virtuelle Tabelle konvertiert werden. Dies hängt jedoch von der Fähigkeit des Adapters ab und erfordert eine Metadatendefinition, um unter anderem Spaltentypen zu identifizieren.
  • Außerdem gibt es selbst in einem entfernten Datenbanksystem klassische Tabellen und Views. Die meisten Adapter können auf ähnliche Weise auf Remote-Tabellen und Remote-Views zugreifen.

Sobald virtuelle Tabellen angelegt wurden, können sie von den Datenbankprozessen so konsumiert werden, als ob sie sich physisch in der Zieldatenbank befunden hätten. Das Schlüsselprinzip virtueller Tabellen besteht jedoch darin, dass sie die Daten nicht in der lokalen Datenbank speichern, sondern nur Metadaten. Stattdessen stellen sie Remote-Daten über ihre unterstützende Remote-Quelle bereit, wenn eine Abfrage darüber ausgeführt wird.

Notiz

Ein alternativer Ansatz ist möglich, bei dem Remote-Daten ohne virtuelle Tabellen verwendet werden sollen. Sie heißt Verknüpfte Datenbank und ist nur mit Smart-Data-Access-Remote-Sources verfügbar. Das Konzept, die Vorteile und Einschränkungen werden später besprochen.

Definition der virtuellen Tabelle

Eine virtuelle Tabelle hat zwei Teile in ihren Definitionen:

  • ID der virtuellen Tabelle
  • Die Remote-Objekt-ID, einschließlich der Referenz auf die Remote-Quelle
Diese Folie gibt einen Überblick über die Attribute der virtuellen Tabelle.

Notiz

Der Name der entfernten Datenbank kann <NULL> sein, auch wenn das entfernte System tatsächlich eine Datenbank ist. Dies liegt nur daran, dass in einigen Konfigurationen, z.B. mit SAP HANA als Remote-System, das Remote-Source-Objekt bereits die Datenbank mit dem Host und Port ermittelt.

Bei anderen Remote-Systemtypen kann eine einzelne Remote-Quelle auf einen Datenbankserver verweisen, auf dem mehrere Datenbanken erreicht werden können. Hier wird die Einstellung für die entfernte Datenbank in einer virtuellen Tabellendefinition benötigt.

Sicherheitshinweis für virtuelle Tabellen

Beim Anlegen virtueller Tabellen müssen Sie eine Reihe von Voraussetzungen erfüllen, die nicht nur die Verfügbarkeit der Remote-Source und des Remote-Systems betreffen, sondern auch die Berechtigungen in beiden Systemen. Hier sind sie.

Im lokalen System

Um eine virtuelle Tabelle anzulegen, müssen folgende Voraussetzungen für den lokalen Benutzer erfüllt sein:

  • Der lokale Benutzer, der die Remote-Quelle angelegt hat, erhält automatisch die Berechtigung zum Anlegen virtueller Tabellen in dieser Remote-Quelle.
  • Jede andere Verwendung erfordert die Berechtigung CREATE VIRTUAL TABLE für die Remote-Quelle.
  • In jedem Fall benötigt der lokale Benutzer CREATE ANY Berechtigungen für das Schema, in dem die virtuelle Tabelle gespeichert wird.

Im Remote-System

Die Konfiguration der Anmeldeinformationen der Remote-Quelle (oder ein vorhandenes sekundäres Credential für Ihren Benutzer in dieser Remote-Quelle) bestimmt, welcher Remote-Benutzer auf das Remote-/Quellobjekt zugreift.

Achtung

Wenn für die Remote-Quelle überhaupt keine Anmeldeinformationen vorhanden sind (technischer Benutzer oder sekundäre Anmeldeinformationen), ist kein Zugriff auf die Remote-Objekte möglich. Dies kann für einige Arten von Remote-Quellen umgangen werden, wird jedoch generell nicht empfohlen.

Wenn Sie eine virtuelle Tabelle anlegen, die auf ein entferntes Datenbanksystem verweist, benötigt der Remote-Benutzer, der aus der Remote-Source-Definition abgeleitet wurde (oder ein vorhandenes sekundäres Credential, das mit Ihrem Benutzer verknüpft ist), in der Regel nur dieCATALOG READBerechtigung (SAP HANA) oder ein Äquivalent, aber NICHT unbedingt eine SELECT -Berechtigung für die Remote-Tabelle oder -View (oder deren enthaltendes Schema).

Notiz

Dies ermöglicht eine bequeme Sicherheitskonfiguration bei der Verwendung sekundärer Anmeldeinformationen; tatsächlich kann ein Benutzer mit höchstens der Berechtigung CATALOG READ (oder gleichwertig) virtuelle Tabellen anlegen, ohne die Daten der entsprechenden Quellobjekte auswählen zu können.

Wie lege ich eine virtuelle Tabelle an?

Eine virtuelle Tabelle kann auf zwei verschiedene Arten angelegt werden:

  • Aus dem SAP-HANA-Datenbank-Explorer mithilfe des Katalogs
  • Mit einer SQL-Anweisung

Einrichtung virtueller Tabellen mit der grafischen Benutzungsoberfläche

Mit dem formularbasierten Editor verwenden Sie eine vorhandene Remote-Quelle, um die Objekte aufzulisten, auf die sie Zugriff gewährt, und legen dann virtuelle Objekte für eine oder mehrere davon an.

Diese Folie zeigt, wie Sie die Objektliste der Remote-Quelle verwenden.

Beim formularbasierten Ansatz wählen Sie zuerst Remote-Objekte aus und legen dann fest, wo die virtuelle Tabelle gespeichert werden soll und wie sie benannt werden sollen.

Betrachten wir also zunächst die verschiedenen Elemente, die Remote-Objekte identifizieren.

  • Wie bereits besprochen, ist die Remote-Source ein obligatorisches Element.
  • Das Datenbankelement wird für einige Remote-Source-Typen (d.h. einige Adapter) verwendet, wenn die Remote-Source keine bestimmte Datenbank referenziert.

    Ein häufiger Anwendungsfall ist, wenn ein entferntes Datenbanksystem von einem einzelnen Host und Port aus Zugriff auf mehr als eine Datenbank gewähren kann.

    Für SAP HANA als Remote-System gibt die Remote-Quelle immer eine einzelne Zieldatenbank an. Infolgedessen ist der Datenbankteil immer <NULL>.

  • Schema

    Das Schema ist ein klassisches Artefakt in der Datenbanktopologie. In den meisten Datenbanksystemen, einschließlich SAP HANA, befinden sich Tabellen, Views und viele andere Objekte in Schemas. Das Konzept des Schemas ist jedoch nicht immer vorhanden. Beispielsweise gibt es mit dem SDI-Datei-Adapter kein Schema. Daher ist der Schemateil auch <NULL>.

  • Objekt

    Schließlich wird das entfernte Objekt mit seinem Namen identifiziert. Dieses Element ist in jeder virtuellen Tabellendefinition obligatorisch.

Nachdem Sie ein oder mehrere Objekte ausgewählt haben, für die Sie eine virtuelle Tabelle anlegen möchten, müssen Sie die IDs der virtuellen Tabellen in Ihrem lokalen SAP-HANA-System (Ziel) definieren.

  • Wenn Sie eine einzelne virtuelle Tabelle anlegen, werden Sie im Dialogfenster nach dem Objektnamen gefragt. Wenn Sie hingegen mehrere virtuelle Tabellen anlegen, werden Sie im Dialogfenster – wie im Beispiel gezeigt – nach einem Präfix gefragt, das allen Remote-Objektnamen hinzugefügt wird.

    Hinweis

    Im Allgemeinen wird empfohlen, ein Präfix zu verwenden, das bei der Identifizierung virtueller Tabellen hilft. Zur Erinnerung: Auch wenn virtuelle Tabellen ein dediziertes Symbol im Katalog-Explorer haben, werden sie weiterhin mit anderen klassischen Zeilen- und Spaltentabellen aufgelistet, sodass ein bestimmtes Präfix helfen kann.
  • Zu guter Letzt muss das Schema angegeben werden, in dem die neuen virtuellen Tabellen angelegt werden sollen. Standardmäßig wird das Schema Ihres Benutzers verwendet.

In diesem Video erfahren Sie, wie Sie eine virtuelle Tabelle mit der grafischen Benutzungsoberfläche des SAP-HANA-Datenbank-Explorers anlegen.

Einrichtung virtueller Tabellen mit SQL

Zusätzlich zur Liste der Remote-Source-Objekte im SAP-HANA-Datenbank-Explorer können Sie virtuelle Tabellen mit SQL-Anweisungen anlegen. Dies ist hilfreich, wenn Sie die Remote-Objektidentifikatoren bereits kennen, insbesondere wenn Sie virtuelle Tabellen in Massenverarbeitung anlegen möchten.

Die Anweisung lautet wie folgt:

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

Die Informationen, die bereits besprochen wurden, wie die Remote-Objekte beim Anlegen einer virtuellen Tabelle über die grafische Benutzungsoberfläche definiert werden, gelten auf die gleiche Weise. Wie bei jeder SQL-Anweisung in SAP HANA müssen Bezeichner in doppelte Anführungszeichen gesetzt werden, oder sie werden automatisch als von Groß-/Kleinschreibung unabhängig interpretiert (und in Großbuchstaben gespeichert).

In einigen Szenarien müssen die Remote-<database> und/oder <schema> möglicherweise auf "<NULL>" gesetzt werden.

Achtung

Auch wenn Sie Bezeichner ohne Anführungszeichen für den Remote-Quell- oder Objektnamen verwenden, muss der <NULL> -Wert für eine Datenbank oder ein Schema, sofern zutreffend, IMMER in Anführungszeichen gesetzt werden. Ohne die doppelten Anführungszeichen schlägt die SQL-Anweisung fehl.

Im Folgenden finden Sie ein Beispiel für zwei SQL-Anweisungen, um dieselben virtuellen Tabellen wie zuvor basierend auf Objekten im Remote-Schema EPM_MODEL (Quelle CL_RS_OP_SDA) anzulegen:

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";

Wenn der Sitzungsbenutzer CL_DATA_ENGINEER_FED ist, kann die Angabe dieses Schemas im Identifikator der virtuellen Tabelle ausgelassen werden.

In diesem Video erfahren Sie, wie Sie eine virtuelle Tabelle mit einer SQL-Anweisung anlegen.

Virtuelle Tabellendefinition in einem SAP-Business-Application-Studio-Projekt

Zugriff auf Remote-Objekte aus einem HDI-Container

Wenn Sie in Entwicklungs- oder Modellierungsprojekten in SAP Business Application Studio arbeiten, haben Sie die Möglichkeit, Remote-Sources zu nutzen und virtuelle Tabellen aus einem SAP-HANA-Datenbankmodul (das Entwurfszeitartefakte enthält) anzulegen, das in einem HDI-Container (Laufzeitartefakte) deployt wird.

Zu diesem Zweck wird das dedizierte Entwurfstyp-Artefakt .hdbvirtualtable verwendet.

Zur Erinnerung: Eine Remote-Source in SAP HANA ist kein Schemaobjekt. Daher können Sie keine Remote-Quelle im HDB-Modul eines Projekts anlegen. Sie können Ihr Projekt jedoch so einrichten, dass es eine vorhandene Remote-Quelle verwendet.

Sehen wir uns an, wie das geht.

Remote-Objekte konsumieren

Das Konsumieren von Remote-Objekten aus einem HDI-Container heraus setzt folgende Voraussetzungen voraus:

  • Ein User-Provided Service wird im Cloud-Foundry-Space ausgeführt, in dem Sie Ihr HDI-Container-Service deployen möchten.

    Diesem vom Benutzer bereitgestellten Service muss ein Benutzer mit den folgenden Berechtigungen zugeordnet sein:

    CREATE VIRTUAL TABLE auf der Remote-Quelle, die Sie verwenden möchten.

  • Der vom Benutzer bereitgestellte Service ist an Ihr Projekt in der Abhängigkeitsdefinition der Datei mta.yaml gebunden.
  • Eine .hdbgrants-Datei erteilt dem Benutzer des HDI-Objekteigentümers (#OO), der Eigentümer der HDI-Containerobjekte ist, die entsprechenden Berechtigungen.

Notiz

Das Projekt muss erfolgreich implementiert werden, nachdem diese Änderungen vorgenommen wurden, damit der Objekteigentümer tatsächlich die entsprechenden Berechtigungen erhält, sodass Sie virtuelle Tabellen anlegen können.

Virtuelle Tabellen in SAP Business Application Studio anlegen

Um eine virtuelle Tabelle in SAP Business Application Studio anzulegen, legen Sie eine entsprechende .hdbvirtualtable -Designzeitdatei an. Diese Datei kann entweder in einem Texteditor oder in einem dedizierten Editor bearbeitet werden. Letzteres bietet einen Vorteil, nämlich die Möglichkeit, die Remote-Quellobjekthierarchie zu lesen.

Diese Folie zeigt, wie Sie eine virtuelle Tabelle in SAP Business Application Studio anlegen.

In einem Texteditor sieht dasselbe Design-Zeit-Objekt wie folgt aus:

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

Die Verwendung doppelter Anführungszeichen wird empfohlen, um Inkonsistenzen bei der Verwendung von Groß- und Kleinschreibung zu vermeiden. Abhängig von der von Ihnen gewählten Namenskonvention kann sie auch obligatorisch sein. Wenn Sie beispielsweise planen, Objektnamen in Klein- und Großbuchstaben zu mischen, wenn Sie Namensräume in Objektidentifikatoren verwenden und/oder diese Identifikatoren Punkte enthalten.

Notiz

Unabhängig davon, ob Sie im Allgemeinen doppelte Anführungszeichen verwenden oder nicht, muss das Schlüsselwort "<NULL>" immer in Anführungszeichen gesetzt werden, wenn es in einer virtuellen Tabellendefinition verwendet wird. Dies wird im obigen Beispiel im Feld Datenbankname veranschaulicht.

Im Vergleich zu virtuellen Tabellen, die in einem klassischen Schema angelegt wurden, geben die Tabellen, die Sie mit einer Designzeitdatei in einem SAP-Business-Application-Projekt definieren, KEIN Schema an, wie es in SAP-Business-Application-Studio-Projekten für andere Objekte wie Tabellen, Spaltenansichten usw. der Fall ist.

Wenn Ihre Namenskonvention einen Namensraum im Objektidentifikator enthält, müssen Sie diesen Namensraum wie folgt als Präfix im Feld Virtueller Tabellenname hinzufügen: <name.space.specification>::<virtual_table_name>

Starten Sie dieses Video, um zu erfahren, wie Sie virtuelle Tabellen mit Designzeitdateien in einem SAP-Business-Application-Studio-Projekt anlegen.

Virtuelle Tabelle verwenden

Sobald eine virtuelle Tabelle erfolgreich angelegt wurde, kann sie von jedem Benutzer mit den entsprechenden Berechtigungen verwendet werden. Sehen wir uns die erforderlichen Berechtigungen an:

  • Auf dem lokalen System: SELECT Berechtigung für das virtuelle Objekt.

    Dies ist die klassische Berechtigung, die für den Zugriff auf Daten aus einer Tabelle erforderlich ist. Sie kann einem Benutzer oder (vorzugsweise) einer Rolle entweder für eine bestimmte virtuelle Tabelle oder für das gesamte Schema erteilt werden.

  • Im Remote-System: SELECT auf dem Remote-Objekt

    Um eine virtuelle Tabelle zu verwenden, muss der Remote-Benutzer, der aus der Remote-Source-Definition abgeleitet wurde (technischer Benutzer oder ein Ihnen für diese Remote-Source zugeordnetes sekundäres Credential), Zugriff auf das Remote-Objekt gewähren. In einem entfernten Datenbanksystem wird dies in der Regel über ein Privileg von SELECT erteilt.

    Notiz

    Auf Quellsystemen, die keine Datenbanken sind, z.B. ein Dateisystem, gibt es möglicherweise eine andere Möglichkeit, den Datenzugriff einzurichten. Die Verwendung sekundärer Anmeldeinformationen ist in diesen Fällen nicht immer möglich. Beispielsweise kann der Datei-Adapter von SAP HANA Smart Data Integration einen Token speichern, um den Zugriff auf ein Datei-Repository zu sichern. Dieses Token wird dann in der Sicherheitsdefinition der Remote-Quelle verwendet.

Remote-Source-Administration

Über das Anlegen einer Remote-Source hinaus ist ein Datenbereitstellungsadministrator für seine Wartung verantwortlich. Dazu gehören beispielsweise Remote-Source-Berechtigungen, Änderungen an der Remote-Source-Definition oder an der Sicherheitskonfiguration. Dies kann auch das Löschen einer Remote-Source sein, wenn sie nicht mehr benötigt wird.

Lassen Sie uns einen sehr wichtigen Aspekt dieser Wartung hervorheben. Virtuelle Tabellen hängen von einer Remote-Source ab. Sobald also eine virtuelle Tabelle auf einer Remote-Quelle definiert ist, können Sie die Remote-Quelle NICHT löschen, während die virtuellen Tabellen beibehalten werden.

Glücklicherweise können Sie die Remote-Source-Definition auch dann ändern, wenn darin virtuelle Tabellen definiert sind.

Berechtigungen für eine Remote-Source pflegen

Wenn eine Remote-Source angelegt wird, ist der Benutzer, der sie angelegt hat, zunächst der einzige Benutzer mit Berechtigungen für diese Remote-Source. Diese Berechtigungen können oder müssen anderen Benutzern erteilt werden, je nachdem, wie der Berechtigungsbaum in Ihrer Organisation eingerichtet ist.

Die Remote-Source-Berechtigungen sind Objektberechtigungen (sie beziehen sich auf ein bestimmtes Remote-Quellobjekt) und können in zwei Kategorien unterteilt werden:

  • Administrationsberechtigungen:
    • ALTER
    • DROP
  • Berechtigungen zum Betreiben der Remote-Source:
    • CREATE VIRTUAL TABLE
    • LINKED DATABASE
    • CREATE REMOTE SUBSCRIPTION
    • PROCESS REMOTE SUBSCRIPTION EXCEPTION

Eine weitere Berechtigung ist CREDENTIAL ADMIN, die erforderlich ist, um sekundäre Anmeldeinformationen in einer Remote-Quelle zu verwalten, die Sie NICHT angelegt haben.

Alle diese Berechtigungen werden klassisch im SAP HANA Cockpit oder mit den Anweisungen GRANT und REVOKE in einer SQL-Konsole verwaltet.

Remote-Source ändern

Um eine Remote-Source zu ändern, verwenden Sie die grafische Benutzungsoberfläche im SAP Database Explorer, oder führen Sie eine Anweisung ALTER REMOTE SOURCE in einer SQL-Konsole aus.

Auf diese Weise können Sie alle Elemente einer Remote-Source-Definition ohne ihren Namen ändern.

Notiz

Der Name der Remote-Quelle wird verwendet, um die Beziehung zu den virtuellen Tabellen beizubehalten, die auf der Grundlage der Remote-Quelle angelegt wurden.

Ein typisches Szenario kann ein Remote-System sein, das auf einen anderen Host verschoben wird, die Änderung einer Einstellung wie dem DML-Modus (Lesen oder Lesen/Schreiben) oder ein Alias-Schema. Dies kann auch eine Änderung in der Sicherheitsdefinition sein, z.B. der Wechsel vom technischen Benutzer zu sekundären Anmeldeinformationen, um einen detaillierteren Zugriff auf Remote-Objekte zu ermöglichen.

Remote-Quelle löschen

Im Hinblick auf den Unterschied zwischen dem Ändern und Löschen einer Remote-Source besprechen wir das Löschen einer Remote-Source.

Remote-Source über die grafische Benutzungsoberfläche löschen

  1. Navigieren Sie im SAP-HANA-Datenbank-Explorer zum Katalog zum Abschnitt Remote-Sources.
  2. Klicken Sie mit der rechten Maustaste auf die Remote-Quelle, und wählen Sie Löschen.
  3. Wählen Sie die entsprechende Option:
    • Remote-Quelle löschen, wenn keine anderen Objekte davon abhängen
    • Remote-Quelle und alle anderen davon abhängigen Objekte löschen
  4. Wählen Sie Löschen.

Achtung

Verwenden Sie die zweite Option sehr sorgfältig, da Sie viele virtuelle Tabellen verlieren können, wenn Sie die falsche Remote-Quelle löschen.

Remote-Source mit SQL löschen

In einer SQL-Konsole löschen Sie eine Remote-Quelle, indem Sie eine der folgenden Anweisungen ausführen:

  • So löschen Sie die Remote-Source, wenn keine anderen Objekte davon abhängen:
    Code Snippet
    1
    DROP REMOTE SOURCE <remote_source_name>;
  • So löschen Sie die Remote-Quelle und alle anderen davon abhängigen Objekte:
    Code Snippet
    1
    DROP REMOTE SOURCE <remote_source_name> CASCADE;

Achtung

Auch hier sollten Sie die Option CASCADE sehr sorgfältig verwenden.