Skip to content

Arquitetura HealthDB

Fábio Nogueira de Lucena edited this page Feb 25, 2017 · 158 revisions

Contexto

A arquitetura de software é um instrumento relevante para qualquer SGBD. Uma prova de conceito inicial está prevista para o HealthDB. A definição da arquitetura deve estar baseada em conjunto "sólido" de requisitos.

Ferramentas

Entregáveis

  • Documentação da Arquitetura de Software do HealthDB (considerar padrões aplicáveis).
  • Prova de conceito (demonstração da viabilidade da arquitetura proposta acima).

A arquitetura do HealthDB está organizada em visões:


Visão do contexto

O ambiente no qual o HealthDB está inserido é ilustrado no diagrama abaixo.

hdb-context


Visão de camadas

As camadas do HealthDB são indicadas na figura abaixo. Os usos permitidos são exclusivamente entre camadas adjacentes (layer bridging not allowed) e de cima para baixo. A visão detalhada de cada uma das camadas identifica as responsabilidades de cada camada e os módulos aos quais tais responsabilidades estão atribuídas.

hdb-layers

Os módulos de cada uma das camadas são identificados abaixo.

User Interface layer (módulos)

Os módulos da User Interface Layer são exibidos na figura abaixo. Cinco módulos implementam a interface HealthDB API, empregando linguagens distintas. O módulo Client Console que oferece acesso às funções administrativas, inclusive consultas, do HealthDB e o módulo com conjunto de funções similar, mas acessado via browser.

hdb-layer-client

Detalhes de alguns módulos:

  • Cliente Administrativo (CAD). Meio de acesso de usuários humanos às funções oferecidas pelo HealthDB, por exemplo, criação de contas e monitoramento, além da execução de consultas. Há previsão de implementação do CAD em duas versões: (a) gráfica e (b) console.
  • HealthDB API. Clientes (softwares) interagem com o HealthDB trocando mensagens por meio dessa API. Convém destacar que toda informação que trafega para/do HealthDB faz uso dessa API.

Application layer

Os módulos da Application Layer são apresentados no diagrama abaixo.

hdb-layer-application

Detalhes:

  • HealthDB Endpoint. Implementação do lado "servidor" da HealthDB API.
  • Autenticação e Autorização (A2).
  • Auditoria.
  • Conexão com serviços externos utilizados pelo HealthDB, por exemplo, CNS, CNES e outros.
  • Work Manager. Decide se o processamento de uma requisição deve ser iniciada imediatamente ou aguardar até que recursos considerados necessários estejam disponíveis para serem alocados à requisição. Adicionalmente, estabelece a ligação entre worker thread usada para tratar a requisição (lógico) e a correspondente implementação (física) usando threads em Java, lightweight thread, um processo ou outro mecanismo, inclusive o uso de pool desses recursos físicos.
  • Use Case Manager. O HealthDB apresenta aos clientes alguns casos de uso: importar, exportar dados, acréscimo de arquétipo e, talvez o mais comum, consulta AQL.
  • Session Manager. Responsável por manter o estado da conexão de um cliente com o HealthDB.
  • Conversores. Assegura representação do formato empregado pelo HealthDB em XML, JSON e outros, e vice-versa.

Data layer

Os módulos da Data layer são apresentados na figura abaixo.

hdb-layer-data

Detalhes:

  • ADL Compiler. Responsável por receber um arquétipo descrito em ADL e produzir a representação interna correspondente.
  • AQL Compiler. Responsável por produzir a representação interna correspondente a uma consulta.
  • Schema Generator (DSG). Módulo que recebe a representação interna de um arquétipo produzida pelo compilador de ADL e produz: (a) um esquema em conformidade com a storage engine a ser utilizada pelo HealthDB e (b) metadados correspondentes.
  • Execution Plan Generator (DQG). Responsável por converter a representação interna de uma consulta, em conformidade com a representação interna do esquema (metadados) em consulta que pode ser executada pela storage engine.
  • Storage Engine Conector. Conexão com a storage engine usada. Esse é o componente que, de fato, repassa para o storage manager requisições. No sentido inverso, o conector faz uso de um conversor dos dados produzidos pela execução do storage engine no formato empregado internamente pelo HealthDB.
  • Metadata Manager. Oferece serviços para persistência de informações sobre dados.
  • Keyword Processor. Módulo que produz, a partir de um conjunto de palavras-chave, uma consulta AQL correspondente.

Storage engine layer

  • Adaptador. Realiza várias funções que permitem "isolar" uma implementação específica dos serviços de armazenamento da camada de dados.
  • Native. Implementação personalizada para contemplar apenas os requisitos do HealthDB, por exemplo, não inclui a noção de transação. Inclui file manager, buffer manager e componentes similares. O Codec é um dos principais componentes, responsável pela representação dos dados no formato do HealthDB, assim como o Adapter, responsável pelo processo de empacotamento do resultado de consultas.
  • SQL. Representa um SGBD relacional. Esse componente é externo ao HealthDB e, caso empregado, demanda implementação de Adaptador específico.
  • NoSQL. Representa um SGBD NoSQL. Esse componente é externo ao HealthDB. Caso seja empregado, demanda implementação de Adaptador específico.

Infrastructure layer

Embora não exibida nas figuras acima, a camada de infraestrutura oferece serviços comuns a mais de uma das camadas acima.

  • File Manager. Encapsula serviço de acesso a arquivos. Implementação usando Hadoop HDFS deve ser fornecida.
  • RingBuffer. Encapsula serviço de controle de acesso à memória compartilhada.
  • Logging. Mantém registro de informações relevantes geradas durante a execução do HealthDB.
  • Log Service. Serviço responsável por registrar em meio persistente as informações fornecidas no logging.
  • Task Manager. Gerência das várias tarefas executadas concorrentemente pelo HealthDB.
  • Config. Fornece valores empregados para orientar o comportamento do HealthDB em tempo de execução.

Visão de tiers

Os componentes do HealthDB podem ser executados, todos eles, em um único nó (computador), ou distribuídos em várias tiers: (a) client tier; (b) server tier e (c) back end tier, conforme ilustrado abaixo. Observe que os componentes em execução em cada uma das tiers são omitidos nessa figura.

hdb-tiers


Visão de dados

hdb-domain


Links relevantes

Clone this wiki locally