Datenbanken verwenden

Objective

After completing this lesson, you will be able to sQLite-Datenbank für die Verwendung während der Entwicklung konfigurieren

Datenbankunterstützung

Unterstützte Datenbanken untersuchen

Die CAP-Node.js-Laufzeit bietet sofort einsatzbereite Unterstützung für verschiedene Datenbanken.

Sehen Sie sich das Video an, um mehr über unterstützte Datenbanken zu erfahren.

Automatisch verkabelte Konfiguration

In CAP wird die sogenannte CDS-Plugin-Technik verwendet, um eine Datenbank in eine Anwendung zu integrieren. Im Wesentlichen handelt es sich bei diesen Datenbank-Plugins um Node.js-Pakete, mit denen CAP eine Verbindung zu einer bestimmten Datenbank herstellen und mit dieser interagieren kann, ohne dass eine zusätzliche Konfiguration erforderlich ist. Jede unterstützte Datenbank verfügt über ein entsprechendes CDS-Plugin-Paket.

Notiz

Der Plug-In-Mechanismus von CAP durchsucht die in package.json konfigurierten Projektabhängigkeiten nach Paketen, die ein Modul namens cds-plugin.js enthalten, und lädt es, falls verfügbar. Der Hauptvorteil besteht darin, dass das Hinzufügen einer Funktion zu einem Projekt, wie in diesem Fall einer Datenbank, nur eine einfache npm adderfordert.

Durch die Verwendung dieser Datenbank-Plug-Ins können Entwickler während der Entwicklung und Produktion problemlos zwischen verschiedenen Datenbanken wechseln, ohne den Anwendungscode ändern zu müssen.

Um SQLite automatisch für die Entwicklung zu konfigurieren, installieren Sie das entsprechende Datenbankpaket mit dem folgenden Befehl im Terminal:

Code Snippet
1
npm add @cap-js/sqlite -D

Führen Sie den folgenden Befehl aus, um SAP HANA Cloud for production zu verwenden:

Code Snippet
1
npm add @sap/cds-hana

Benutzerdefinierte Konfiguration

Die Node.js-Datenbankpakete verbinden Dinge automatisch über Konfigurationsstandardwerte, die über den CDS-Plugin-Mechanismus festgelegt werden. Sie können die von den Paketen bereitgestellte Standardkonfiguration für Ihre Anwendung verwenden oder einzelne Eigenschaften übersteuern. Wie das geht, erfahren wir später in dieser Learning Journey.

Um die effektive Datenbankkonfiguration anzuzeigen, können Sie den Befehl cds env für den Schlüssel cds.requires.db im Stammordner Ihres Projekts ausführen, wie in der Abbildung „Effektive Konfiguration prüfen" dargestellt.

Der Befehl gibt folgende Konfigurationsoptionen zurück:

  • impl - der Modulname der Implementierung eines CAP-Datenbankservice
  • Credentials - ein Objekt mit db-spezifischen Konfigurationen, meist URL
  • kind - Name einer Voreinstellung, z.B. sqlite oder hana

Ausgangsdaten

Sie können die Datenbanktabellen, die für Ihre CAP-Anwendung angelegt wurden, mit Ausgangsdaten füllen.

Gehen Sie wie folgt vor, um initiale Daten in diese Tabellen zu laden, sobald die Anwendung gestartet wird: Legen Sie für jede über das CDS-Modell definierte Tabelle eine .csv-Datei mit einem Dateinamen an, der mit dem vollqualifizierten Namen der entsprechenden Entitätsdefinition in Ihrem CDS-Modell übereinstimmt. Aus kosmetischen Gründen können Sie optional einen Bindestrich (-) anstelle eines Punkts (.) verwenden.

In dem hier besprochenen Szenario können Sie beispielsweise die Dateien com.sap.learning-Authors.csv und com.sap.learning-Books.csv für die Model-Entitäten com.sap.learning.Authors und com.sap.learning.Books anlegen.

Die angelegten .csv-Dateien müssen dann mit Standard-CSV gefüllt werden, wobei die Spaltentitel den deklarierten Elementnamen im CDS-Modell entsprechen müssen, wie das Beispiel in der Abbildung „Bereitstellen von Ausgangsdaten" zeigt.

Speicherort der .csv-Dateien

Häufig müssen Sie zwischen Beispieldaten und echten Ausgangsdaten unterscheiden. CAP unterstützt dies durch die Möglichkeit, initiale Daten an zwei Stellen zur Verfügung zu stellen.

CSV-Dateien, die im Test-/Datenordner angelegt werden, werden nur implementiert, wenn die Anwendung nicht produktiv ausgeführt wird. Dieser Ordner kann daher verwendet werden, um Beispieldaten für Tests und Demos zu speichern.

.csv-Dateien, die im Ordner db/data erstellt werden, werden dagegen in jeder Umgebung, einschließlich Produktivumgebung, implementiert. Dieser Ordner eignet sich daher beispielsweise für initiale Konfigurationsdaten und Daten für Codelisten.

Generierung von .csv-Dateien

Wenn Sie den folgenden Befehl im Terminal eingeben, werden im Ordner db/data entsprechende CSV-Dateien für die Tabellen angelegt, die über Ihr CDS-Modell definiert wurden:

Code Snippet
1
cds add data

Die generierten Dateien enthalten noch keine Daten, aber Spaltentitel basierend auf Ihrem CDS-Modell (siehe Abbildung „Generierte CSV-Dateien für modellierte Entitäten").

SQLite für die Entwicklung verwenden

SAP empfiehlt dringend, SQLite während der Entwicklung und beim Testen so weit wie möglich zu verwenden. CAP bietet umfangreiche Unterstützung für diese Datenbank, wodurch Projekte die Entwicklung beschleunigen und Kosten minimieren können.

In dieser Learning Journey folgen wir dieser Empfehlung und verwenden SQLite als Datenbank während der Entwicklung. Wie Sie zu SAP HANA Cloud als Datenbank für die Produktion wechseln, erfahren Sie in der CAP-Dokumentation.

Notiz

Für SAP Business Application Studio ist SQLite bereits installiert und kann direkt verwendet werden. Wenn Sie VS Code als Entwicklungsumgebung wählen, müssen Sie sicherstellen, dass SQLite lokal installiert ist.

Rüsten

Wie oben erwähnt, müssen Sie den folgenden Befehl im Terminal ausführen, um SQLite für die Entwicklung zu verwenden:

Code Snippet
1
npm add @cap-js/sqlite -D

Dieser Befehl fügt der Datei package.json eine Abhängigkeit ähnlich der folgenden hinzu:

In-Memory-Datenbanken

Das @cap-js/sqlite-Paket verwendet die cds-Plugin-Technik, um eine In-Memory-SQLite-Datenbank für Ihre Anwendung standardmäßig automatisch zu konfigurieren. Sie können dies in der Protokollausgabe sehen, wenn Sie Ihre Anwendung mit cds watchstarten:

Hinweis

Die Verwendung von In-Memory-Datenbanken ist die am meisten empfohlene Option für Testlaufwerke und Testpipelines.

Notiz

Da eine In-Memory-SQLite-Datenbank ihre Daten nicht im Dateisystem speichert, gehen alle Datenänderungen verloren, sobald der mit cds watch gestartete Server gestoppt wird.

Persistente Datenbanken

Sie können auch persistente SQLite-Datenbanken verwenden. Führen Sie dazu die folgenden Schritte aus:

  1. Geben Sie einen Datenbankdateinamen in der DB-Konfiguration in package.json wie folgt an:

    Zusammenfassend lässt sich sagen, dass diese Konfiguration dem CAP-Framework mitteilt, dass es während der Entwicklung eine SQLite-Datenbank verwenden sollte, die sich in einer Datei namens db.sqlite am Stamm des Projekts befindet.

  2. Führen Sie den folgenden Befehl im Terminal aus:
    Code Snippet
    1
    cds deploy

Dies bewirkt Folgendes:

  1. Erstellen Sie eine Datenbankdatei mit dem angegebenen Namen im Stammordner Ihres Projekts.
  2. Legen Sie die Tabellen und Views gemäß Ihrem CDS-Modell in der Datenbank an.
  3. Geben Sie die Ausgangsdaten aus den bereitgestellten CSV-Dateien ein.

Wenn dies der Fall ist, verwendet der Server diese vorbereitete Datenbank, anstatt beim Start eine In-Memory-Datenbank zu starten. Sie können dies in der Protokollausgabe sehen, wenn Sie den Server über cds watchstarten:

Notiz

Denken Sie daran, Ihre Datenbank erneut zu implementieren, wenn Sie Ihre Modelle oder Daten ändern. Führen Sie dazu einfach cds deploy erneut aus.

Drop-Create-Schema

Wenn Sie Ihre persistente Datenbank mit cds deployerneut implementieren, werden zuerst alle Tabellen und Ansichten gelöscht und dann neu erstellt. Dies eignet sich am besten für Entwicklungsumgebungen, in denen Schemaänderungen sehr häufig und umfassend sind.

Schemaentwicklung

cds deployunterstützt jedoch auch die automatische Schemaentwicklung für persistente Datenbanken. In diesem Fall werden geänderte Tabellen nicht einfach gelöscht und während des erneuten Deployments neu angelegt. Stattdessen werden die Änderungen über ALTER TABLE übernommen.

Beachten Sie jedoch, dass die automatische Schemaentwicklung nur Änderungen ohne möglichen Datenverlust zulässt. Details zur Schemaentwicklung finden Sie in der CAP-Dokumentation. Der verlinkte Abschnitt in der Dokumentation bezieht sich auf die PostgreSQL-Datenbank. Die dortigen Informationen gelten jedoch auch für SQLite mit persistenten Datenbanken.

Demonstration & Übung: Einrichten einer persistenten SQLite-Datenbank mit Ausgangsdaten für die Entwicklung

Notiz

Führen Sie als Übung die Schritt-für-Schritt-Anleitung in der folgenden Demonstration selbst im SAP Business Application Studio durch.

Verwenden Sie als Ausgangspunkt für die Übung das Ergebnis der vorherigen Übung Service definieren, wenn Sie es erfolgreich abgeschlossen haben. Alternativ können Sie auch den Branch 3_service_definition aus dem folgenden GitHub-Repository als Ausgangspunkt verwenden:

https://github.com/SAP-samples/cap-development-learning-journey

Die vollständige Implementierung der Simulation finden Sie im Branch 4_SQLite_database des GitHub-Repositorys.

Detaillierte Informationen zum Inhalt des Repositorys und dessen Verwendung finden Sie hier.

Sehen Sie sich das Video an, um zu sehen, wie Sie eine persistente SQLite-Datenbank mit initialen Daten für die Entwicklung einrichten.