In einem Modellierungsprojekt arbeiten

Deployment von Modellen

Objective

After completing this lesson, you will be able to modellierungsinhalt in der Laufzeitumgebung deployen.

Die SAP HANA Deployment Infrastructure

Die SAP HANA Deployment Infrastructure (HDI) ist eine Reihe von Services, die das Deployment von Datenbankobjekten in isolierte HDI-Container ermöglichen.

HDI-Container sind einfach Datenbankschemas, aber sie enthalten zusätzliche Funktionen wie einen dedizierten Eigentümer des Containers sowie Metadaten, um ihre Datenbankobjekte zu verwalten. Betrachten Sie einen Container als Smart Schema.

Die in den Containern enthaltenen Objekte werden in den HDB-Modulen Ihres Projekts mithilfe von Quelldateien definiert. Während des Deployments werden die Laufzeitobjekte angelegt und dem Container hinzugefügt.

HDI kümmert sich um das Abhängigkeitsmanagement und bestimmt die Reihenfolge des Deployments; es bietet auch Unterstützung für das Upgrade vorhandener Laufzeitartefakte, wenn ihre entsprechenden Design-Zeit-Artefakte geändert werden.

Ein Schlüsselkonzept von HDI-Containern ist die Tatsache, dass der gesamte Lebenszyklus (Anlegen, Ändern und Löschen) von Datenbankobjekten ausschließlich von der HDI durchgeführt wird. Daher können Sie Datenbankartefakte wie Tabellen oder Views nicht direkt mit DDL-Anweisungen (Data Definition Language) mithilfe von SQL anlegen.

Datenquellen für Calculation Views

Wenn Sie Calculation Views entwickeln, müssen die von Ihnen ausgewählten Datenquellen als Designzeitdateien im Container Ihres HDB-Moduls vorhanden sein. Daher müssen sie einen der folgenden Typen aufweisen:

  • "Echte" Datenbankobjekte (Tabelle, View, Tabellenfunktion, virtuelle Tabellen usw.), die im Container vorhanden sind und eine entsprechende Designzeitdatei im HDB-Modul haben
  • Synonyme, die Datenbankobjekte referenzieren, die sich in einem anderen Schema als dem Container selbst befinden. Später erfahren Sie mehr über Synonyme.

Achtung

Eine Calculation View, die sich auf eine Datenquelle bezieht, die direkt mit SQL in Ihrem Container erstellt wurde (also ohne Quelldatei), kann nicht erstellt werden. Der Build schlägt fehl und gibt eine Fehlermeldung aus, z.B.:
Code Snippet
1
The file requires "db://HA300::TABLE_SQL" which is not provided by any file

Schlüsseleigenschaften von HDI-Containern

  • Ein Container wird automatisch angelegt, wenn Sie Ihr Datenbankmodul zum ersten Mal deployen.

  • Ein Container generiert ein Datenbankschema in dem Moment, in dem ein Container zum ersten Mal angelegt wird.

  • Datenbankobjekte werden in diesem Schema deployt.

  • Quelldateidefinitionen müssen schemafrei geschrieben werden.

  • Direkte Referenzen auf Objekte außerhalb Ihres Containers sind nicht zulässig. Sie müssen Synonyme verwenden.

HDI-Container-Konfigurationsdatei

In jedem HDB-Modul eines Projekts finden Sie eine sehr wichtige und obligatorische Datei, die im Ordner src mit dem Suffix .hdiconfig vorhanden ist. Dies ist die HDI-Container-Konfigurationsdatei, die verwendet wird, um die Designzeitdateien Ihres Projekts an das entsprechende installierte Build-Plug-In zu binden.

Bildschirmaufnahme der Konfigurationsdatei für den Container. Sie enthält die erforderlichen Plug-Ins und in diesem Beispiel die Mindest-Plug-In-Version, die für alle Plug-Ins gilt.

Ohne das Build-Plug-In ist es nicht möglich, die Laufzeitobjekte aus den Designzeitdateien zu deployen. Diese Konfigurationsdatei leitet jede Quelldatei in Ihrem Projekt an das richtige Build-Plug-In weiter.

In der Regel gibt es nur eine .hdiconfig-Datei in einem HDB-Modul, die sich im Ordner src des HDB-Moduls befinden muss. Diese Datei enthält eine Liste aller Bindungen für alle Quelldateitypen.

Der minimum_feature_version-Eintrag dieser Datei ist vorhanden, um zu verhindern, dass Ihre HDB-Modulobjekte mit einer Version von SAP HANA Cloud erstellt werden, die niedriger ist als das, was angegeben ist und/oder was Ihr Code erfordert. Wenn Sie beispielsweise Ihr HDB-Modul mit Version 1004 der Build-Plug-Ins entwickelt und getestet haben, wird dies nicht auf einer SAP-HANA-Cloud-Instanz deployt, in der Version 1002 vorhanden ist.

In der Container-Konfigurationsdatei finden Sie für jeden Quelldateityp zwei Einträge:

  • Suffixname, z.B. "hdbcalculationview"

  • Plug-In-Name, z.B. „com.sap.hana.di.calculationview"

Beachten Sie, dass beim Importieren eines Projekts in Ihre Landschaft eine eigene .hdiconfig -Datei enthalten ist, die sich auf die Funktionsversion bezieht, die bei der ersten Entwicklung verwendet wurde. Wenn Sie dann planen, die Quelldatei mit neueren Funktionen von SAP HANA zu aktualisieren (z.B. wenn Sie einer Calculation View, die erst mit der neueren Version von SAP HANA verfügbar wurde, eine neue Funktion hinzufügen möchten), wird die neue Funktion im Quelleditor nicht angezeigt, wenn die .hdiconfig-Datei nicht für die Verwendung der späteren Funktionsversion angepasst wurde.

Achtung

Die HDI-Container-Konfigurationsdatei ist eine unbenannte Datei und darf nur aus dem Suffix .hdiconfig bestehen. Wenn Sie versuchen, einen Namen hinzuzufügen, schlägt der Build der .hdiconfig-Datei fehl. Lassen Sie es so, wie es ist.

Die Sicht „SAP HANA PROJECTS"

Wenn ein Projekt in SAP Business Application Studio ein SAP-HANA-DB-Modul enthält, ist eine dedizierte Sicht SAP-HANA-Projekte verfügbar (neben der Explorer-Sicht).

Bildaufnahme der SAP-HANA-PROJEKTS-View in Business Application Studio. Verwenden Sie sie, um ein einzelnes Objekt, einen Ordner oder das Modul zu implementieren. Sie müssen eine Verbindung zu einem vorhandenen HDI-Container oder einer Verbindung hinzufügen, die Sie als Teil des Bindings anlegen.

Die SAP-HANA-Projects-View bzw. der SAP-HANA-Projects-Bereich ist die Materialisierung der HDB-Module, die in Ihren Projekten definiert sind. Der obere Teil stellt die Ordnerstruktur des HDB-Moduls dar. Das Wurzelelement entspricht dem Pfad zum HDB-Modul im Projekt. Um die Laufzeitobjekte innerhalb des verbundenen HDI-Container-Schemas anzulegen, können Sie ein Deployment ausführen. Dieses Deployment kann auf verschiedenen Ebenen ausgelöst werden: eine einzelne Datei, ein Ordner oder das gesamte HDB-Modul.

Notiz

Sie können Ihre Designzeitdateien aus der SAP-HANA-PROJEKTS-View nicht bearbeiten (verschieben, kopieren, löschen usw.), aber Sie können sie in ihrem entsprechenden Editor öffnen.

In der Dateistruktur identifiziert Implementierung ausstehend, wo eine Implementierung für neue oder geänderte Dateien erforderlich ist. Für gelöschte Designzeitdateien müssen Sie die Löschung von Laufzeitobjekten aktivieren, indem Sie den Ordner deployen, in dem sie enthalten sind.

Der untere Teil stellt die Datenbankverbindungen zwischen dem HDB-Modul und den HDI-Containern oder -Services dar, die Zugriff auf externe Ressourcen bieten.

Ein Projekt mit einem SAP-HANA-Datenbankmodul benötigt mindestens einen entsprechenden HDI-Container, um seine Laufzeitobjekte zu deployen. Dies wird in der Abbildung „The SAP HANA PROJECTS View" dargestellt.

Im Verbindungsteil können Sie ein vorhandenes HDB-Modul an einen neuen oder vorhandenen HDI-Container binden. Sie können auch neue Verbindungen hinzufügen (z.B. zu einem anderen Container) und

Datenbank-Explorer

Von SAP Business Application Studio aus können Sie die Anwendung Datenbank-Explorer starten, um die Datenbankartefakte (Tabellen, Views, Prozeduren, Spaltensichten) eines oder mehrerer Container anzuzeigen.

Wenn Sie dies tun, erfolgt der Zugriff auf den Container über einen technischen SBSS-Benutzer (Service Broker Security Support), der transparent angelegt wird, wenn Sie den Container zum Datenbank-Explorer hinzufügen, auch wenn Sie mit Ihrem üblichen SAP-Business-Application-Studio-Benutzer an SAP Business Application Studio angemeldet sind. Dieser technische Benutzer interagiert in Ihrem Auftrag mit den Datenbankobjekten, z.B. um den Inhalt einer Tabelle anzuzeigen oder eine Vorschau der Daten einer Calculation View anzuzeigen.

Wenn Ihr Container Daten aus einem externen Schema konsumiert, muss der technische Benutzer auch Berechtigungen für die externen Schemaobjekte erhalten, z.B. um die Daten einer externen Tabelle anzuzeigen, die von einem Synonym referenziert wird. Weitere Informationen hierzu finden Sie im Kapitel Sicherheit in der SAP-HANA-Modellierung.

Modellierungsobjekte deployen

Während der Entwicklung müssen Sie die Laufzeitobjekte aus den Designzeitobjekten im Containerschema anlegen oder aktualisieren. Dazu verwenden Sie die Funktion Deploy, die in der Sicht SAP HANA PROJECTS verfügbar ist.

Das Deployment basiert auf dem HDI-Containerservice (einem Cloud-Foundry-Service), der die Interaktion zwischen SAP Business Application Studio, der HANA Deployment Infrastructure und der SAP-HANA-Datenbank verwaltet.

Wenn Sie ein HDB-Modul an einen HDI-Container-Service binden, legt dieser Datenfluss das entsprechende Containerschema an, falls es nicht vorhanden ist. Anschließend können Design-Zeit-Objekte im HDI-Container deployt werden.

Aufbau des Modellierungsinhalts

Wenn Sie ein HANA-Datenbankmodul deployen, füllt der HDI-Deployer den HDI-Container, d.h. ein Schema, das sich in der SAP-HANA-Cloud-Datenbank befindet, mit den im Modul definierten Laufzeitobjekten.

Ein Deployment-Vorgang kann auf den folgenden Ebenen einer Projektstruktur ausgeführt werden:

  • Ein gesamtes HDB-Modul

  • Ein Unterordner des HDB-Moduls

  • ein oder mehrere Einzelobjekte

Notiz

Der oben beschriebene Deploy-Vorgang sollte nicht mit dem in Cloud Foundry auch Deploy genannten Vorgang verwechselt werden. In Cloud Foundry gilt der Befehl deploy (cf deploy) für eine gesamte Anwendung (z.B. eine gesamte MTA, einschließlich möglicherweise mehr als nur des HDB-Moduls). Sie wird hauptsächlich verwendet, wenn Sie Ihr Projekt in eine andere Umgebung transportieren und importieren/aktivieren möchten. Zum Beispiel von der Entwicklungsumgebung in die Qualitätssicherungs- oder Produktivumgebung.

Unabhängig davon, was Sie implementieren (HDB-Modul, Unterordner oder einzelnes Objekt), wird immer eine durchgängige Abhängigkeitsprüfung auf jedes Objekt angewendet, das Teil des Build-Umfangs ist. Selbst wenn Sie ein einzelnes Objekt erstellen, gibt es eine rekursive Prüfung aller Objekte, auf die es verweist, um sicherzustellen, dass diese Objekte bereits als Laufzeitobjekte vorhanden sind oder in einem Entwurfszeitobjekt definiert und gleichzeitig erstellt werden.

Deployment-Fehler

Wenn Sie Modelle implementieren, die in einem HDB-Modul definiert sind, können verschiedene Probleme auftreten, die im Protokoll beschrieben werden, das Sie in der Konsole aufrufen können. Einige beziehen sich auf die soeben besprochenen Abhängigkeitsprüfungen. Andere haben mit der Konsistenz von Design-Zeit-Objekten zu tun (z.B. den Namensraumeinstellungen von Design-Zeit-Ordnern). Ein weiterer klassischer Build-Fehler ist, wenn zwei verschiedene Design-Zeit-Dateien eine Definition für dasselbe Laufzeitobjekt bereitstellen.

Im Folgenden finden Sie eine Liste der häufigen Ursachen für Deployment-Fehler.

Häufigste Fehler bei Build-Vorgängen

  • Die Definition eines Objekts, von dem ein anderes Objekt abhängt, wird nicht bereitgestellt, oder es wurde bereitgestellt, aber dieses Objekt wurde noch nicht aktiviert.

  • Die Definition eines Laufzeitobjekts wird durch mehrere Design-Zeit-Dateien bereitgestellt.

  • Es besteht eine Namensrauminkonsistenz zwischen dem Inhalt einer Designzeitdatei und der Namensraum-Eigenschaft des Ordners, in dem sie sich befindet.

  • Der Service für den Zugriff auf externe Schemas ist im Ziel-Space nicht definiert oder nicht verfügbar.

  • Die Synonyme für den externen Schemazugriff wurden noch nicht deployt.

  • Es liegt ein objektspezifischer Designfehler vor.

    Beispielsweise ist in einer Cube Calculation View keine Kennzahl definiert.

  • Es liegt eine Inkonsistenz zwischen dem Objekt, das Sie erstellen, und einem referenzierten Objekt vor.

    Beispielsweise gibt es eine Inkonsistenz in einem Spaltennamen zwischen zwei Objekten mit einer Abhängigkeit.

Behelfslösung für Build-Probleme durch eine Designdatei

Wenn eine Calculation View aus irgendeinem Grund nicht erstellt werden kann, verhindert sie in der Regel die Erstellung des enthaltenen Ordners und eines beliebigen oberen Ordners. Es gibt mehrere Ansätze, mit denen Sie dieses Problem vorübergehend beheben und mit der Arbeit an den übrigen Modellen fortfahren können, ohne die vorhandene Designzeitdatei vollständig zu verlieren.

  • Exportieren Sie die Calculation View an einen sicheren Ort, und löschen Sie dann die Calculation View aus Ihrem Arbeitsbereich.

    Wenn Sie den Build ausführen, verursacht die entfernte Calculation View kein Problem. Wenn Sie mit der Arbeit an dieser Sicht fortfahren möchten, müssen Sie sie nur wieder an ihren ursprünglichen Speicherort importieren.

  • Fügen Sie der Designzeitdatei .txt hinzu. Beispielsweise wird SALES.hdbcalculationview zu SALES.hdbcalculationview.txt.

    In diesem Szenario entfernen Sie die Datei nicht aus dem Arbeitsbereich, sondern ändern ihre Erweiterung so, dass sie (vorübergehend) nicht als Designzeitdatei der Calculation View, sondern als Nur-Text-Datei betrachtet wird. Es wird keine spezifische Prüfung für eine .txt-Datei beim Erstellen durchgeführt, sodass sie den gleichen Effekt wie das Entfernen der Datei hat, aber es ist dann viel einfacher, sie rückgängig zu machen: Sie müssen nur die zusätzliche .txt-Erweiterung entfernen.