Utilisation de bases de données

Objective

After completing this lesson, you will be able to configurer une base de données SQLite à utiliser pendant le développement

Prise en charge de la base de données

Exploration des bases de données prises en charge

L'environnement d'exécution CAP Node.js fournit une prise en charge prête à l'emploi pour différentes bases de données.

Regardez la vidéo pour en savoir plus sur les bases de données prises en charge.

Configuration par câble automatique

Dans CAP, la technique dite cds-plugin est utilisée pour intégrer une base de données dans une application. Essentiellement, ces plugins de base de données sont des paquets Node.js qui permettent à CAP de se connecter et d'interagir avec une base de données spécifique, sans configuration supplémentaire requise. Chaque base de données prise en charge possède un package cds-plugin correspondant.

Remarque

Le mécanisme de plug-in de CAP recherche dans les dépendances de projet configurées dans package.json les packages qui contiennent un module appelé cds-plugin.js et le charge si disponible. L'avantage principal est que l'ajout d'une fonctionnalité à un projet, comme une base de données dans ce cas, nécessite simplement un simple npm add.

En utilisant ces plug-ins de base de données, les développeurs peuvent facilement basculer entre les différentes bases de données pendant le développement et la production sans avoir à modifier le code de l'application.

Pour configurer automatiquement SQLite pour le développement, installez le package de base de données correspondant à l'aide de la commande suivante dans le terminal :

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

Exécutez la commande suivante pour utiliser SAP HANA Cloud pour la production :

Code Snippet
1
npm add @sap/cds-hana

Configuration personnalisée

Les paquets de base de données Node.js câblent automatiquement les choses par le biais des paramètres par défaut de configuration qui sont définis via le mécanisme cds-plugin. Vous pouvez utiliser la configuration par défaut fournie par les packages pour votre application ou remplacer des propriétés individuelles. Nous verrons comment procéder plus tard dans ce Learning Journey.

Pour voir la configuration efficace de la base de données, vous pouvez exécuter la commande cds env pour la clé cds.requires.db dans le dossier racine de votre projet, comme illustré dans la figure Vérification de la configuration efficace.

Les options de configuration renvoyées par la commande sont les suivantes :

  • impl - le nom de module de l'implémentation d'un service de base de données CAP
  • références de connexion - un objet avec des configurations spécifiques à la base de données, le plus souvent une URL
  • genre - un nom de préréglage, tel que sqlite ou hana

Données initiales

Vous pouvez renseigner les tables de base de données créées pour votre application CAP avec des données initiales.

Procédez comme suit pour charger les données initiales dans ces tables dès que l'application est lancée : Pour chaque table définie via le modèle CDS, créez un fichier .csv avec un nom de fichier qui correspond au nom complet de la définition d'entité correspondante dans votre modèle CDS. Pour des raisons esthétiques, vous pouvez éventuellement utiliser un tiret (-) au lieu d'un point (.).

Par exemple, dans le scénario traité ici, vous pouvez créer les fichiers com.sap.learning-Authors.csv et com.sap.learning-Books.csv pour les entités de modèle com.sap.learning.Authors et com.sap.learning.Books.

Les fichiers .csv créés doivent ensuite être renseignés avec un fichier CSV standard, où les titres de colonne doivent correspondre aux noms d'éléments déclarés dans le modèle CDS, comme illustré dans l'exemple de la figure Fourniture de données initiales.

Emplacement des fichiers .csv

Très souvent, vous devez faire la distinction entre les données de démonstration et les données initiales réelles. La PAC prend cela en charge en vous permettant de fournir des données initiales à deux endroits.

Les fichiers .csv créés dans le dossier de test/données sont déployés uniquement lorsque l'application n'est pas en cours d'exécution en production. Ce dossier peut donc être utilisé pour stocker des exemples de données à des fins de tests et de démonstrations.

En revanche, les fichiers .csv créés dans le dossier db/data sont déployés dans n'importe quel environnement, y compris en production. Ce dossier est donc adapté aux données de configuration initiales et aux données pour les listes de codes, par exemple.

Génération de fichiers .csv

Si vous saisissez la commande suivante dans le terminal, les fichiers .csv correspondants sont créés dans le dossier db/data pour les tables définies via votre modèle CDS :

Code Snippet
1
cds add data

Les fichiers générés ne contiennent pas encore de données, mais ils contiennent des titres de colonne basés sur votre modèle CDS (voir la figure Fichiers .csv générés pour les entités modélisées pour un exemple).

Utilisation de SQLite pour le développement

SAP recommande vivement d'utiliser SQLite autant que possible pendant le développement et les tests. CAP fournit une prise en charge étendue de cette base de données, ce qui permet aux projets d'accélérer le développement et de minimiser les coûts.

Dans ce Learning Journey, nous suivons cette recommandation et utilisons SQLite comme base de données pendant le développement. Vous pouvez apprendre à passer à SAP HANA Cloud en tant que base de données pour la production dans la documentation de la PAC.

Remarque

Pour SAP Business Application Studio, SQLite est déjà installé et peut être utilisé directement. Si vous choisissez VS Code comme environnement de développement, vous devez vous assurer que SQLite est installé localement.

Configuration

Comme indiqué ci-dessus, vous devez exécuter la commande suivante dans le terminal pour utiliser SQLite pour le développement :

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

Cette commande ajoute une dépendance similaire à ce qui suit au fichier package.json :

Bases de données in-memory

Le package @cap-js/sqlite utilise la technique cds-plugin pour configurer automatiquement une base de données SQLite en mémoire pour votre application par défaut. Vous pouvez le voir dans l'édition du journal lorsque vous lancez votre application avec cds watch:

Astuce

L'utilisation de bases de données in-memory est l'option la plus recommandée pour les lecteurs de test et les pipelines de test.

Remarque

Comme une base de données SQLite in-memory ne stocke pas ses données dans le système de fichiers, toutes les modifications de données sont perdues dès que le serveur démarre avec cds watch est arrêté.

Bases de données persistantes

Vous pouvez également utiliser des bases de données SQLite persistantes. Pour ce faire, exécutez les étapes suivantes :

  1. Spécifiez un nom de fichier de base de données dans la configuration de la base de données dans package.json comme suit :

    En résumé, cette configuration indique au framework CAP que, lors du développement, il doit utiliser une base de données SQLite située dans un fichier nommé db.sqlite à la racine du projet.

  2. Exécutez la commande suivante dans le terminal :
    Code Snippet
    1
    cds deploy

Cela permettra de :

  1. Créez un fichier de base de données avec le nom spécifié dans le dossier racine de votre projet.
  2. Créez les tables et les vues en fonction de votre modèle CDS dans la base de données.
  3. Renseignez les données initiales des fichiers .csv fournis.

Avec cela en place, le serveur utilisera cette base de données préparée au lieu d'amorcer une base de données in-memory au démarrage. Vous pouvez le voir dans l'édition du journal lorsque vous démarrez le serveur via cds watch:

Remarque

N'oubliez pas de redéployer votre base de données chaque fois que vous modifiez vos modèles ou vos données. Pour ce faire, exécutez à nouveau cds deploy .

Supprimer le schéma de création

Lorsque vous redéployez votre base de données persistante avec cds deploy, toutes les tables et vues sont d'abord supprimées, puis recréées. Cela convient mieux aux environnements de développement, où les modifications de schéma sont très fréquentes et larges.

Évolution du schéma

Cependant, cds deploy prend également en charge l'évolution automatique du schéma pour les bases de données persistantes. Dans ce cas, les tables modifiées ne sont pas simplement supprimées et recréées lors du redéploiement. Au lieu de cela, les modifications sont appliquées via ALTER TABLE.

Gardez toutefois à l'esprit que l'évolution automatique du schéma autorise uniquement les modifications sans perte de données potentielle. Des détails sur l'évolution du schéma sont disponibles dans la documentation de la PAC. La section liée de la documentation fait référence à la base de données PostgreSQL. Mais les informations y sont également applicables à SQLite avec des bases de données persistantes.

Démonstration et exercice : configuration d'une base de données SQLite persistante avec des données initiales pour le développement

Remarque

Dans l'exercice, suivez les instructions étape par étape de la démonstration suivante dans SAP Business Application Studio.

Comme point de départ de l'exercice, utilisez le résultat de l'exercice précédent Définition d'un service si vous l'avez terminé avec succès. Vous pouvez également utiliser la branche 3_service_Definition du référentiel GitHub suivant comme point de départ :

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

L'implémentation complète de la simulation se trouve dans la branche 4_SQLite_database du référentiel GitHub.

Vous trouverez ici des informations détaillées sur le contenu du référentiel et son utilisation.

Regardez la vidéo pour voir comment configurer une base de données SQLite persistante avec des données initiales pour le développement.