Uso de bases de datos

Objective

After completing this lesson, you will be able to configurar una base de datos SQLite para su uso durante el desarrollo

Soporte de base de datos

Exploración de las bases de datos admitidas

El tiempo de ejecución CAP Node.js proporciona soporte listo para usar para varias bases de datos.

Vea el vídeo para obtener información sobre las bases de datos compatibles.

Configuración con cable automático

En CAP, la técnica llamada cds-plugin se utiliza para integrar una base de datos en una aplicación. Esencialmente, estos complementos de base de datos son paquetes Node.js que permiten a CAP conectarse e interactuar con una base de datos específica, sin necesidad de configuración adicional. Cada base de datos compatible tiene un paquete de complementos cds correspondiente.

Nota

El mecanismo de complemento de CAP busca en las dependencias del proyecto configuradas en package.json paquetes que contienen un módulo llamado cds-plugin.js y lo carga si está disponible. El principal beneficio de esto es que añadir una función a un proyecto, como una base de datos en este caso, solo requiere un npm addsimple.

Mediante el uso de estos plugins de base de datos, los desarrolladores pueden cambiar fácilmente entre diferentes bases de datos durante el desarrollo y la producción sin tener que cambiar el código de la aplicación.

Para configurar automáticamente SQLite para el desarrollo, instale el paquete de base de datos correspondiente con el siguiente comando en el terminal:

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

Ejecute el siguiente comando para utilizar SAP HANA Cloud para producción:

Code Snippet
1
npm add @sap/cds-hana

Configuración personalizada

Los paquetes de base de datos Node.js conectan las cosas automáticamente a través de los valores predeterminados de configuración que se establecen a través del mecanismo del plugin cds. Puede utilizar la configuración predeterminada proporcionada por los paquetes para su aplicación o sustituir propiedades individuales. Veremos cómo hacerlo más adelante en este Learning Journey.

Para ver la configuración efectiva de la base de datos, puede ejecutar el comando cds env para la clave cds.requires.db en la carpeta raíz de su proyecto, como se muestra en la figura Inspección de la configuración efectiva.

Las opciones de configuración devueltas por el comando son las siguientes:

  • impl - el nombre de módulo de la implementación de un servicio de base de datos CAP
  • credenciales: un objeto con configuraciones específicas de base de datos, normalmente url
  • type - un nombre de un preajuste, como sqlite o hana

Datos iniciales

Puede rellenar las tablas de base de datos creadas para su aplicación PAC con datos iniciales.

Proceda de la siguiente manera para cargar datos iniciales en estas tablas tan pronto como se inicie la aplicación: Para cada tabla definida mediante el modelo CDS, cree un archivo .csv con un nombre de archivo que coincida con el nombre completo de la definición de entidad correspondiente en su modelo CDS. Por razones cosméticas, puede utilizar opcionalmente un guion (-) en lugar de un punto (.).

Por ejemplo, en el escenario analizado aquí, puede crear los archivos com.sap.learning-Authors.csv y com.sap.learning-Books.csv para las entidades modelo com.sap.learning.Authors y com.sap.learning.Books.

Los archivos .csv creados deben rellenarse con CSV estándar, donde los títulos de columna deben corresponderse con los nombres de elemento declarados en el modelo CDS, como se muestra en el ejemplo de la figura Proporcionar datos iniciales.

Ubicación de archivos .csv

Con bastante frecuencia debe distinguir entre los datos de muestra y los datos iniciales reales. CAP lo admite al permitirle proporcionar datos iniciales en dos lugares.

Los archivos .csv que se crean en la carpeta de prueba/datos solo se despliegan cuando la aplicación no se ejecuta en producción. Por lo tanto, esta carpeta se puede utilizar para almacenar datos de muestra para tests y demostraciones.

Los archivos .csv que se crean en la carpeta db/data, por otro lado, se implementan en cualquier entorno, incluida la producción. Por lo tanto, esta carpeta es adecuada para datos de configuración iniciales y datos para listas de códigos, por ejemplo.

Generación de archivos .csv

Si introduce el siguiente comando en el terminal, los archivos .csv correspondientes se crean en la carpeta db/data para las tablas definidas mediante su modelo CDS:

Code Snippet
1
cds add data

Los archivos generados aún no contienen datos, pero contienen títulos de columna basados en su modelo CDS (véase la figura Archivos .csv generados para entidades modeladas, por ejemplo).

Uso de SQLite para el desarrollo

SAP recomienda encarecidamente utilizar SQLite tanto como sea posible durante el desarrollo y las pruebas. La PAC proporciona un amplio apoyo a esta base de datos, lo que permite a los proyectos acelerar el desarrollo y minimizar los costes.

En este recorrido de aprendizaje, seguimos esta recomendación y usamos SQLite como base de datos durante el desarrollo. Puede aprender a cambiar a SAP HANA Cloud como base de datos para producción en la documentación de PAC.

Nota

Para SAP Business Application Studio, SQLite ya está instalado y se puede utilizar directamente. Si selecciona VS Code como su entorno de desarrollo, debe asegurarse de que SQLite esté instalado localmente.

Configuración

Como se ha mencionado anteriormente, debe ejecutar el siguiente comando en el terminal para utilizar SQLite para el desarrollo:

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

Este comando agrega una dependencia similar a la siguiente al archivo package.json:

Bases de datos in-memory

El paquete @cap-js/sqlite utiliza la técnica del plugin cds para configurar automáticamente una base de datos SQLite en memoria para su aplicación de forma predeterminada. Puede verlo en la salida del log cuando inicie su aplicación con cds watch:

Consejo

El uso de bases de datos en memoria es la opción más recomendada para las unidades de prueba y los pipelines de prueba.

Nota

Dado que una base de datos SQLite en memoria no almacena sus datos en el sistema de archivos, todos los cambios de datos se pierden en cuanto se detiene el servidor iniciado con cds watch .

Bases de datos persistentes

También puede utilizar bases de datos SQLite persistentes. Para ello, realice los siguientes pasos:

  1. Especifique un nombre de archivo de base de datos en la configuración de base de datos en package.json de la siguiente manera:

    En resumen, esta configuración le dice al marco de trabajo de CAP que, durante el desarrollo, debe usar una base de datos SQLite ubicada en un archivo llamado db.sqlite en la raíz del proyecto.

  2. Ejecute el siguiente comando en el terminal:
    Code Snippet
    1
    cds deploy

Esto hará lo siguiente:

  1. Cree un archivo de base de datos con el nombre especificado en la carpeta raíz del proyecto.
  2. Cree las tablas y vistas según su modelo CDS en la base de datos.
  3. Rellene los datos iniciales de los archivos .csv proporcionados.

Con eso en su lugar, el servidor utilizará esta base de datos preparada en lugar de iniciar una base de datos en memoria al inicio. Esto se puede ver en la salida del log al iniciar el servidor a través de cds watch:

Nota

Recuerde volver a desplegar la base de datos cada vez que modifique sus modelos o sus datos. Para ello, simplemente vuelva a ejecutar cds deploy .

Soltar Crear esquema

Cuando vuelve a desplegar la base de datos persistente con cds deploy, todas las tablas y vistas primero se eliminan y luego se vuelven a crear. Esto es más adecuado para entornos de desarrollo, donde los cambios de esquema son muy frecuentes y amplios.

Evolución de esquema

Sin embargo, cds deploy también admite la evolución automática de esquemas para bases de datos persistentes. En este caso, las tablas modificadas no se eliminan simplemente y se vuelven a crear durante la reimplementación. En su lugar, los cambios se aplican mediante ALTER TABLE.

Sin embargo, tenga en cuenta que la evolución automática del esquema solo permite modificaciones sin pérdida de datos potencial. Encontrará detalles sobre la evolución del esquema en la documentación de la PAC. La sección vinculada en la documentación hace referencia a la base de datos PostgreSQL. Pero la información allí también es aplicable a SQLite con bases de datos persistentes.

Demostración y ejercicio: Configurar una base de datos SQLite persistente con datos iniciales para el desarrollo

Nota

Como ejercicio, lleve a cabo las instrucciones paso a paso en la siguiente demostración en SAP Business Application Studio.

Como punto de partida para el ejercicio, utilice el resultado del ejercicio anterior Definir un servicio si lo ha completado correctamente. Como alternativa, también puede utilizar la rama 3_service_Definition del siguiente repositorio GitHub como punto de partida:

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

La implementación completa de la simulación se puede encontrar en la rama 4_SQLite_database del repositorio GitHub.

Puede encontrar información detallada sobre el contenido del repositorio y cómo utilizarlo aquí.

Vea el vídeo para ver cómo configurar una base de datos SQLite persistente con datos iniciales para el desarrollo.