Trabalhando em um projeto de modelagem

Implementando modelos

Objective

After completing this lesson, you will be able to implemente conteúdo de modelagem no ambiente de tempo de execução.

A infraestrutura de implementação do SAP HANA

O SAP HANA Deployment Infrastructure (HDI) é um conjunto de serviços que permite a implementação de objetos de banco de dados em containers HDI isolados.

Os containers HDI são simplesmente esquemas de banco de dados, mas incluem recursos adicionais, como um proprietário dedicado do container, mais metadados, para gerenciar seus objetos de banco de dados. Pense em um container como um esquema inteligente.

Os objetos incluídos nos containers são definidos nos módulos HDB do seu projeto, usando arquivos de origem e, durante a implementação, os objetos de tempo de execução são criados e adicionados ao container.

O HDI cuida do gerenciamento de dependências e determina a ordem de implementação; ele também fornece suporte para atualizar artefatos de tempo de execução existentes quando seus artefatos de tempo de design correspondentes são modificados.

Um conceito-chave de containers HDI é o fato de que todo o ciclo de vida (criação, modificação e exclusão) de objetos de banco de dados é executado exclusivamente pelo HDI. Portanto, você não pode criar diretamente artefatos de banco de dados, como tabelas ou visões, com instruções DDL (Data Definition Language) usando SQL.

Fontes de dados para visões de cálculo

Quando você desenvolve visões de cálculo, as fontes de dados escolhidas devem existir como arquivos de tempo de design no container do módulo HDB. Por isso, eles devem ser de um dos seguintes tipos:

  • Objetos de banco de dados "reais" (tabela, visão, função de tabela, tabelas virtuais etc.) existentes dentro do container e com um arquivo de tempo de design correspondente no módulo HDB
  • Sinônimos que referenciam objetos de banco de dados localizados em qualquer outro esquema que não o próprio container. Você aprenderá sobre sinônimos mais tarde.

Cuidado

Não é possível criar uma visão de cálculo que se refira a uma fonte de dados criada diretamente usando SQL em seu container (portanto, sem um arquivo de origem). A criação falha e emite uma mensagem de erro, como:
Code Snippet
1
The file requires "db://HA300::TABLE_SQL" which is not provided by any file

Principais propriedades de containers HDI

  • Um container é criado automaticamente quando você implementa o módulo de banco de dados pela primeira vez.

  • Um container gera um esquema de banco de dados no momento em que um container é criado pela primeira vez.

  • Os objetos do banco de dados são implementados nesse esquema.

  • As definições do arquivo de origem devem ser escritas de forma livre de esquemas.

  • Não são permitidas referências diretas a objetos fora do seu container. Você deve usar sinônimos.

Arquivo de configuração de container HDI

Dentro de cada módulo HDB de um projeto, você encontrará um arquivo muito importante e obrigatório que existe na pasta src com o sufixo: .hdiconfig. Este é o arquivo de configuração de container HDI usado para vincular os arquivos de tempo de design do seu projeto ao plug-in de compilação instalado correspondente.

Captura de tela do arquivo de configuração para o container. Ele contém os plug-ins necessários e, neste exemplo, a versão mínima do plug-in que se aplica a todos os plug-ins.

Sem o plug-in de criação, não é possível implementar os objetos de tempo de execução dos arquivos de tempo de design. Esse arquivo de configuração direciona cada arquivo de origem em seu projeto para o plug-in de compilação correto.

Normalmente, há apenas um arquivo .hdiconfig em um módulo HDB, e isso deve estar localizado na pasta src do módulo HDB. Este arquivo contém uma lista de todas as ligações para todos os tipos de arquivo de origem.

A entrada minimum_feature_version deste arquivo está lá para evitar a criação de seus objetos de módulo HDB com uma versão do HANA Cloud inferior ao que é especificado e/ou o que seu código requer. Por exemplo, se você projetou e testou seu módulo HDB com a versão 1004 dos plug-ins de criação, isso não será implementado em uma instância do SAP HANA Cloud em que a versão 1002 esteja em vigor.

Dentro do arquivo de configuração de container, você encontrará, para cada tipo de arquivo de origem, duas entradas:

  • Nome do sufixo, por exemplo, "hdbcalculationview"

  • Nome do plug-in, por exemplo, "com.sap.hana.di.calculationview"

É muito importante lembrar que quando você importa um projeto para sua estrutura, ele traz com ele seu próprio arquivo .hdiconfig que se refere à versão de recurso que foi usada quando foi desenvolvido pela primeira vez. Se planejar atualizar o arquivo de origem usando recursos mais recentes do SAP HANA (por exemplo, você deseja adicionar um novo recurso a uma visão de cálculo que acabou de ficar disponível com a versão mais recente do SAP HANA), não verá o novo recurso no editor de origem se o arquivo .hdiconfig não tiver sido ajustado para usar a versão mais recente do recurso.

Cuidado

O arquivo de configuração de container HDI é um arquivo não nomeado e deve consistir apenas do sufixo .hdiconfig. Se você tentar adicionar um nome, a compilação do arquivo .hdiconfig falhará. Deixe como está.

A visão PROJETOS SAP HANA

No SAP Business Application Studio, quando um projeto inclui um módulo de BD SAP HANA, uma visão dedicada SAP HANA PROJECTS está disponível (juntamente com a visão Explorer).

Captura de tela da visão SAP HANA PROJECTS no Business Application Studio. Use-o para implementar um único objeto, uma pasta ou o módulo. Você precisa adicionar uma conexão a um container HDI existente ou a um que você crie como parte da vinculação.

A visão/painel Projetos do SAP HANA é a materialização dos módulos HDB definidos em seus projetos. A parte superior representa a estrutura de pastas do módulo HDB. O elemento raiz corresponde ao caminho para o módulo HDB no projeto. Para criar os objetos de tempo de execução dentro do esquema de container HDI conectado, você pode executar uma implementação. Esta implementação pode ser acionada em diferentes níveis: um único arquivo, uma pasta ou todo o módulo HDB.

Nota

Você não pode manipular (mover, copiar, excluir etc.) seus arquivos de tempo de design da visão PROJETOS do SAP HANA, mas pode abri-los no respectivo editor.

Na estrutura do arquivo, a Implantação pendente identifica onde é necessária uma implementação para arquivos novos ou modificados. Para arquivos de tempo de design excluídos, você precisa ativar a exclusão do objeto de tempo de execução implementando a pasta que os continha.

A parte inferior representa as Conexões ao banco de dados entre o módulo HDB e os containers ou serviços HDI que fornecem acesso a recursos externos.

Um projeto com um módulo de banco de dados SAP HANA precisa, pelo menos, de um container HDI correspondente para implementar seus objetos de tempo de execução. Isso é o que é mostrado na imagem, a visão SAP HANA PROJECTS.

Na parte da conexão, você pode vincular um módulo HDB existente a um container HDI novo ou existente. Você também pode adicionar novas conexões (por exemplo, a outro container) e

Explorador de banco de dados

A partir do SAP Business Application Studio, você pode iniciar a aplicação Explorador de banco de dados para visualizar os artefatos do banco de dados (tabelas, visões, procedimentos, visões de coluna) de um ou vários containers.

Quando você faz isso, mesmo que esteja conectado ao SAP Business Application Studio com seu usuário habitual do SAP Business Application Studio, o acesso ao container é efetuado por um usuário técnico SBSS (Service Broker Security Support) criado de forma transparente quando você adiciona o container ao Database Explorer. Este usuário técnico interage com os objetos de banco de dados em seu nome, por exemplo, para visualizar o conteúdo de uma tabela ou visualizar os dados de uma visão de cálculo.

Se o seu container consumir dados de um esquema externo, o usuário técnico também deve receber autorizações para os objetos de esquema externo, por exemplo, para visualizar os dados de uma tabela externa referenciada por um sinônimo. Você aprenderá mais sobre isso na unidade Segurança na modelagem do SAP HANA.

Implementando objetos de modelagem

Durante o desenvolvimento, você precisa criar ou atualizar os objetos de tempo de execução a partir dos objetos de tempo de design dentro do esquema do container. Para isso, você utiliza a função Implementar disponível na visão SAP HANA PROJECTS.

A implementação depende do serviço de container HDI (um serviço Cloud Foundry), que gerencia a interação entre o SAP Business Application Studio, o HANA Deployment Infrastructure e, por sua vez, o banco de dados SAP HANA.

Quando você vincula um módulo HDB a um serviço de container HDI, essa vinculação cria o esquema de container correspondente, se ele não existir. Depois disso, os objetos de tempo de design podem ser implementados no container HDI.

Estrutura de conteúdo de modelagem de criação

Quando você implementa um módulo de banco de dados HANA, o implementador HDI preenche o container HDI, que é um esquema localizado no banco de dados SAP HANA Cloud, com os objetos de tempo de execução definidos no módulo.

Uma operação de implementação pode ser executada nos seguintes níveis de uma estrutura de projeto:

  • Um módulo HDB inteiro

  • Uma subpasta do módulo HDB

  • Um ou vários objetos individuais

Nota

A operação de implementação descrita acima não deve ser confundida com o que também é chamado de Implementar no Cloud Foundry. No Cloud Foundry, o comando deploy (cf deploy) se aplica a um aplicativo inteiro (por exemplo, um MTA inteiro, incluindo potencialmente mais do que apenas o módulo HDB). Ele é usado principalmente quando você quer transportar e implementar/ativar seu projeto para outro ambiente. Por exemplo, do ambiente DEV para QA ou PROD.

Independentemente do que você implementar (módulo HDB, subpasta ou objeto individual), existe sempre uma verificação de dependência ponta a ponta aplicada a cada objeto que faz parte do escopo de criação. Assim, mesmo que você crie um objeto individual, haverá uma verificação recursiva de todos os objetos que ele referencia para garantir que esses objetos já existam como objetos de tempo de execução ou sejam definidos em um objeto de tempo de design e criados ao mesmo tempo.

Erros de implementação

Quando você implanta modelos definidos em um módulo HDB, você pode se deparar com diferentes problemas, que são descritos no log que você pode consultar no console. Algumas estão relacionadas às verificações de dependência que acabamos de discutir. Outros têm a ver com a consistência de objetos de tempo de design (por exemplo, as configurações de espaço de nomes de pastas de tempo de design). Outro erro de criação clássico é quando dois arquivos de tempo de design diferentes fornecem uma definição para o mesmo objeto de tempo de execução.

Aqui está uma lista de causas principais frequentes para erros de implementação.

Erros mais comuns durante operações de criação

  • A definição de um objeto do qual depende outro objeto não é fornecida ou é fornecida, mas esse objeto ainda não foi implementado.

  • A definição de um objeto de tempo de execução é fornecida por vários arquivos de tempo de design.

  • Há uma inconsistência de namespace entre o conteúdo de um arquivo de tempo de projeto e a propriedade namespace da pasta na qual ele está localizado.

  • O serviço para acessar esquemas externos não está definido ou não está disponível na área de destino.

  • Os sinônimos para acesso ao esquema externo ainda não foram implementados.

  • Há um erro de design específico do objeto.

    Por exemplo, nenhuma medida é definida em uma visão de cálculo de cubo.

  • Existe uma inconsistência entre o objeto que você cria e um objeto referenciado.

    Por exemplo, existe uma inconsistência em um nome de coluna entre dois objetos com uma dependência.

Colocando um arquivo de design para trabalhar em torno de problemas de criação

Quando uma visão de cálculo não pode ser criada por qualquer motivo, ela geralmente impede a criação de sua pasta contendo e qualquer pasta superior. Existem várias abordagens que você pode usar para resolver esse problema temporariamente e continuar trabalhando no resto de seus modelos, sem perder completamente o arquivo de tempo de design existente.

  • Exporte a visão de cálculo para um local seguro e, em seguida, exclua a visão de cálculo de seu espaço de trabalho.

    Ao executar a criação, a visão de cálculo removida não causará nenhum problema. Quando você quiser continuar trabalhando nessa visão, só precisa importá-la de volta para sua localização original.

  • Adicione .txt ao arquivo de tempo de design. Por exemplo, SALES.hdbcalculationview se tornará SALES.hdbcalculationview.txt.

    Neste cenário, você não remove o arquivo da área de trabalho, mas modifica sua extensão para que ela (temporariamente) não seja considerada como um arquivo de tempo de design de visão de cálculo, mas um arquivo de texto simples. Nenhuma verificação específica é realizada em um arquivo .txt na compilação, por isso terá o mesmo efeito que remover o arquivo, mas é muito mais fácil de desfazer: você só precisa remover a extensão .txt adicional.