Uso de bancos de dados

Objective

After completing this lesson, you will be able to configurar um banco de dados SQLite para uso durante o desenvolvimento

Suporte ao banco de dados

Exploração de bancos de dados suportados

O tempo de execução CAP Node.js fornece suporte pronto para uso para vários bancos de dados.

Assista ao vídeo para saber mais sobre os bancos de dados suportados.

Configuração com fio automático

No CAP, a chamada técnica cds-plugin é usada para integrar um banco de dados em uma aplicação. Essencialmente, esses plugins de banco de dados são pacotes Node.js que permitem que o CAP se conecte e interaja com um banco de dados específico, sem a necessidade de configuração adicional. Cada banco de dados suportado tem um pacote cds-plugin correspondente.

Nota

O mecanismo de plug-in do CAP pesquisa as dependências do projeto configuradas em package.json para pacotes que contenham um módulo chamado cds-plugin.js e carrega-o, se disponível. O principal benefício disso é que adicionar um recurso a um projeto, como um banco de dados neste caso, requer apenas um npm addsimples.

Ao usar esses plug-ins de banco de dados, os desenvolvedores podem alternar facilmente entre diferentes bancos de dados durante o desenvolvimento e a produção sem precisar alterar o código do aplicativo.

Para configurar automaticamente o SQLite para desenvolvimento, instale o pacote de banco de dados correspondente com o seguinte comando no terminal:

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

Execute o seguinte comando para usar o SAP HANA Cloud para produção:

Code Snippet
1
npm add @sap/cds-hana

Configuração personalizada

Os pacotes de banco de dados Node.js conectam as coisas automaticamente através de padrões de configuração que são definidos através do mecanismo cds-plugin. Você pode utilizar a configuração padrão fornecida pelos pacotes para sua aplicação ou substituir características individuais. Veremos como fazer isso mais tarde nesta Learning Journey.

Para ver a configuração efetiva do banco de dados, você pode executar o comando cds env para a chave cds.requires.db na pasta raiz do seu projeto, como mostrado na figura Inspeção da configuração efetiva.

As opções de configuração retornadas pelo comando são as seguintes:

  • impl - o nome do módulo da implementação de um serviço de banco de dados CAP
  • credenciais – um objeto com configurações específicas do db, mais comumente URL
  • kind - um nome de uma predefinição, como sqlite ou hana

Dados iniciais

Você pode preencher as tabelas de banco de dados criadas para a sua aplicação CAP com dados iniciais.

Proceda da seguinte forma para carregar dados iniciais para essas tabelas assim que a aplicação for iniciada: para cada tabela definida por meio do modelo CDS, crie um arquivo .csv com um nome de arquivo que corresponda ao nome totalmente qualificado da definição de entidade correspondente em seu modelo CDS. Por motivos cosméticos, você pode utilizar opcionalmente um traço (-) em vez de um ponto (.).

Por exemplo, no cenário aqui discutido, você pode criar os arquivos com.sap.learning-Authors.csv e com.sap.learning-Books.csv para as entidades de modelo com.sap.learning.Authors e com.sap.learning.Books.

Os arquivos .csv criados devem ser preenchidos com CSV padrão, em que os títulos das colunas devem corresponder aos nomes dos elementos declarados no modelo CDS, como mostrado no exemplo na figura Fornecimento de dados iniciais.

Localização de arquivos .csv

Frequentemente, você precisa distinguir entre dados de amostra e dados iniciais reais. O CAP suporta isso permitindo que você forneça dados iniciais em dois locais.

Os arquivos .csv que são criados na pasta de teste/dados só são implementados quando o aplicativo não está sendo executado na produção. Por isso, esta pasta pode ser utilizada para arquivar dados de amostra para testes e demonstrações.

Arquivos .csv que são criados na pasta db/data, por outro lado, são implementados em qualquer ambiente, incluindo produção. Por isso, esta pasta é adequada para dados de configuração iniciais e dados para listas de códigos, por exemplo.

Geração de arquivos .csv

Se você inserir o seguinte comando no terminal, os arquivos .csv correspondentes são criados na pasta db/data para as tabelas definidas por meio do seu modelo CDS:

Code Snippet
1
cds add data

Os arquivos gerados ainda não contêm dados, mas contêm títulos de coluna com base no seu modelo CDS (consulte a figura Arquivos .csv gerados para entidades modeladas para um exemplo).

Utilizando SQLite para desenvolvimento

A SAP recomenda fortemente o uso do SQLite o máximo possível durante o desenvolvimento e o teste. O CAP oferece amplo suporte a essa base de dados, o que permite que os projetos acelerem o desenvolvimento e minimizem os custos.

Nesta jornada de aprendizagem, seguimos esta recomendação e usamos SQLite como banco de dados durante o desenvolvimento. Você pode aprender como mudar para o SAP HANA Cloud como banco de dados para produção na documentação CAP.

Nota

No SAP Business Application Studio, o SQLite já está instalado e pode ser usado diretamente. Se você escolher VS Code como seu ambiente de desenvolvimento, você deve garantir que o SQLite esteja instalado localmente.

Configuração

Como mencionado acima, você precisa executar o seguinte comando no terminal para usar SQLite para desenvolvimento:

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

Este comando adiciona uma dependência semelhante ao seguinte ao arquivo package.json:

Bancos de dados in-memory

O pacote @cap-js/sqlite usa a técnica cds-plugin para configurar automaticamente um banco de dados SQLite in-memory para seu aplicativo por padrão. Você pode ver isso na saída de log quando inicia sua aplicação com cds watch:

Dica

O uso de bancos de dados in-memory é a opção mais recomendada para unidades de teste e pipelines de teste.

Nota

Como um banco de dados SQLite in-memory não armazena seus dados no sistema de arquivos, todas as alterações de dados são perdidas assim que o servidor iniciado com cds watch é interrompido.

Bancos de dados persistentes

Você também pode usar bancos de dados SQLite persistentes. Para isso, execute as seguintes etapas:

  1. Especifique um nome de arquivo de banco de dados na configuração do banco de dados em package.json da seguinte forma:

    Em resumo, esta configuração diz ao framework CAP que, durante o desenvolvimento, ele deve usar um banco de dados SQLite localizado em um arquivo chamado db.sqlite na raiz do projeto.

  2. Execute o seguinte comando no terminal:
    Code Snippet
    1
    cds deploy

Isto irá:

  1. Crie um arquivo de banco de dados com o nome especificado na pasta raiz do seu projeto.
  2. Crie as tabelas e visões de acordo com seu modelo CDS no banco de dados.
  3. Preencha os dados iniciais dos arquivos .csv fornecidos.

Com isso em vigor, o servidor usará este banco de dados preparado em vez de inicializar um banco de dados in-memory na inicialização. Você pode ver isso na saída de log ao iniciar o servidor via cds watch:

Nota

Lembre-se de reimplementar seu banco de dados sempre que modificar seus modelos ou dados. Para isso, basta executar cds deploy novamente.

Esquema Drop-Create

Quando você reimplementa seu banco de dados persistente com cds deploy, todas as tabelas e visões são primeiro eliminadas e depois recriadas. Isso é mais adequado para ambientes de desenvolvimento, onde as mudanças de esquema são muito frequentes e amplas.

Evolução do esquema

No entanto, cds deploy também suporta a evolução automática do esquema para bancos de dados persistentes. Nesse caso, as tabelas alteradas não são simplesmente removidas e recriadas durante a reimplementação. Em vez disso, as modificações são aplicadas via ALTER TABLE.

Considere, no entanto, que a evolução automática do esquema só permite modificações sem potencial perda de dados. Detalhes sobre a evolução do esquema podem ser encontrados na documentação CAP. A seção vinculada na documentação se refere ao banco de dados PostgreSQL. Mas a informação lá também é aplicável ao SQLite com bancos de dados persistentes.

Demonstração e exercício: Configurar um banco de dados SQLite persistente com dados iniciais para desenvolvimento

Nota

Como exercício, execute as instruções passo a passo na demonstração a seguir no SAP Business Application Studio.

Como ponto de partida para o exercício, utilize o resultado do exercício anterior Definir um serviço se você o tiver concluído com êxito. Como alternativa, você também pode utilizar a ramificação 3_service_definition do seguinte repositório GitHub como ponto de partida:

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

A implementação completa da simulação pode ser encontrada no ramo 4_SQLite_database do repositório GitHub.

Informações detalhadas sobre o conteúdo do repositório e como usá-lo podem ser encontradas aqui.

Assista ao vídeo para ver como configurar um banco de dados SQLite persistente com dados iniciais para desenvolvimento.