Nessa página segue a descrição de como foi implementada a solução proposta pelo Blendb.Existem 3 componentes que formam a solução: API, Engine e Adapter.
API
A API representa a porta de entrada para o Blendb. Sua função é receber os comandos do usuário e acionar os componentes corretos para realizar aquela tarefa.
Essa API foi implementada como uma API RESTful, onde basicamente existem 3 rotas. Uma que descreve as métricas disponíveis, uma que descreve as dimensões disponíveis e outra para realizar consultas.
Essa API envia respostas em formato JSON, ou com as informações ou com uma mensagem de erro.
Por que utilizar uma API RESTful:
- Esse era um formato conhecido
- É um formato utilizado na WEB, então outros serviços da WEB tem facilidade de se comunicar com ele
- A amplitude da WEB torna os dados facilmente alcançáveis, ideal para disponibilização de dados abertos.
- Funciona no formato de serviço, então outras aplicações podem fazer uso dele.
- Idealmente substituiria o serviço de banco de dados.
- Imaginando que o Blendb faria parte de um sistema de monitoramento, ele poderia receber dados de todo o mundo se estivesse conectado a WEB.
Engine
A engine é o componente que descobre e seleciona as agregações que serão utilizadas na consulta. Esse componente deve ser configurado, recebendo o esquema do banco de dados, que informa quais são as agreações existentes e quais métricas e dimensões cada agregação contém.
Uma vez que a engine recebe uma consulta, ela usa o conhecimento do esquema do banco para selecionar as agregações. Ela também tem a capacidade de informar que uma consulta não pode ser realizada.
A engine também informa para a API quais são as métricas e dimensões disponíveis, informação obtida no momento que a engine foi configurada.
Adapter
O adapter tem duas funções. Recebe a consulta (em formato métricas, dimensões e filtros) e o conjunto de agregações e cria uma consulta para um banco de dados específico. A segunda função é enviar essa consulta ao banco de dados e retornar os dados.
Cada SGBD (Sistemas gerenciadores de bancos de dados) deve ter um adapter próprio, já que cada um fala uma linguagem diferente. Obviamente se dois SGBDS falam a mesma língua, por exemplo SQL, o mesmo adaptador pode ser utilziado para ambos.
Esse é o único componente que tem "contato" direto com o banco de dados. Sempre que o Blendb quer interagir com um banco de dados, essa interação deve ser feita através de um adapter. Isso significa que para expandir a portabilidade do Blendb apenas o componente adapter deve ser implementado, todos os outros compoenentes podem ser reaproveitados e apenas os adapters necessários precisam ser acionados.
Fluxo
Quando um usuário realiza uma consulta, ela chega a API. Essa consulta chega em formato de texto que é traduzido para um formato interno do Blendb. Essa consulta então é enviada a engine. Quando a engine responde o conjundo de agregações a API envia a consulta e o conjunto de agregações para o adapter que monta a consulta e envia ao banco de dados.
Home
- Introdução
- Problema
- Solução
- Linguagem
- Arquitetura
- Termos Úteis
- Desvantagens