- Para que serve
- Arquitetura
- Documentação da API
- Como implementar um novo Adapter
- DataSources
- Queries
- Script criação de DataSource
- Adapters Implementados
- Roadmap de desenvolvimento
Este componente é responsável por gerenciar conexões com fontes de dados diversas e realizar consultas de dados.
Está implementado no componente diversos Adaptadores de dados e novos podem ser implementados em JavaScript. Os adaptadores definem como é feita a conexão a uma fonte de dados e como é feito a consulta destes dados.
DataSources são entidades cadastradas no serviço que são instâncias da conexão de um Adapter. O DataSource deve ter os atributos necessários para se conectar à uma fonte de dados, esses atributos são definidos pelo seu adapter. O Adapter de Elasticsearch, por exemplo, define que seus DataSources tenham a URL e o Index de um banco Elasticsearch.
Queries são entidades cadastradas no serviço que representam consultas a serem feitas sobre um DataSource. A Query deve ter os atributos necessários para especificar uma consulta à uma fonte dados, esta definida pelo seu DataSource. O Adapter de Elasticsearch, por exemplo, define que as Queries criadas sobre DataSources de Elasticsearch tenham uma Query e um Type de uma instância Elasticsearch.
Ao executar uma Query o Adapter utilizará a especificação do DataSource para se conectar na fonte de dados e a especificação da Query para consultar os dados. A conexão com a fonte de dados pode ser feita na inicialização deste serviço ou antes de cada consultas. Isto é definido pelo Adapter.
Este componente possui uma API Rest que controla o gerenciamento de DataSources e Queries.
Para acessar a documentação Swagger com a aplicação rodando:
http://petstore.swagger.io/?url=http://localhost:4000/api/swagger#/default
Substitua localhost:4000 pelo endereço e porta que a aplicação está rodando.
Os Adapters são objetos que especificam os dados necessários para criar DataSources e Queries de uma fonte de dados. Eles possuem funções que são reponsáveis por se conectar, substituir parâmetros de consulta e realizar consultas em uma fonte de dados a partir dos dados fornecidos pelas entidades.
| Atributos | Descrição |
|---|---|
| displayName | Nome para ser usado na exibição em GUI. |
| name | Nome identificador do adapter que deve ser referenciado pelos DataSources. Deve ser único entre outros Adapters. |
| dataSourcePropertiesSchema | Schema do Mongoose para especificar os atributos de configuração de DataSources. Exemplo: url de conexão, nome do database... |
| queryPropertiesSchema | Schema do Mongoose para especificar os atributos de configuração de Queries. Por exemplo: SQL, objeto de query do Elasticsearch. |
| configure(dataSource) | Função que configura um DataSource para permitir que ele receba consultas. A função recebe o DataSource como parâmetro e deve retornar uma Promise que resolve com um objeto de configuração. Este objeto será usado para realizar consultas, de acordo com o Adapter, ele pode ser uma conexão com a fonte de dados, um pool de conexões, ou um simples objeto com informações do DataSource. |
| replaceParams(queryProperties, parameters) | Função que substitui os os parâmetros enviados para um consulta. A função recebe o queryProperties de uma consulta e o objeto de parametros, e deve retornar o objeto de queryProperties com os parâmetros substituídos. |
| execute(configuration, queryProperties) | Função que executa uma consulta na fonte de dados. Recebe o objeto de configuração criado pela função configure e o queryProperties com os parâmetros já substituídos pela função replaceParams. A função deve retornar uma promise que resolve com os dados resultantes da consulta. |
| additionalProperties | Objeto com propriedades adicionais que podem ser usadas pelas aplicações clientes do DataSourceAPI. |
| Atributos | Descrição |
|---|---|
| name | Nome único do DataSource |
| adapter | ID do Adapter utilizado pelo DataSource |
| dataSourceProperties | Objeto com atributos do DataSource que são definidos pelo Adapter |
| additionalProperties | Objeto com propriedades adicionais que podem ser usadas pelas aplicações clientes do DataSourceAPI. |
| Atributos | Descrição |
|---|---|
| name | Nome único da Query |
| dataSource | ID do DataSource referenciado pela Query |
| queryProperties | Objeto com atributos da Query que são definidos pelo Adapter. |
| additionalProperties | Objeto com propriedades adicionais que podem ser usadas pelas aplicações clientes do DataSourceAPI. |
Na pasta 'scripts' temos o script para criar DataSources. Execute:
node ./scripts/createDataSource.js
No script deverá ser informado o endereço que o DataSourceAPI está executando. Em alguns casos pode ser necessário escrever o DataSourceProperties em JSON no editor padrão do sistema.
- PostgreSQL
- Elasticsearch
- HTTP REST
Lista de possíveis melhorias e funcionalidades no produto.
- Interface gráfica web para monitoração e cadastro de entidades.
- Adapters permitirem paginação dos dados.
- Cachear resultados das consultas evitando consultas repetitivas, configurável, (auxiliando na paginação).
- Outras interfaces de API e transmissão de dados, como AMQP.
- Alta disponibilidade com clusterização.
- Stream de dados
Adapters desejáveis:
- MongoDB
- MySQL
- Google Drive Spreadsheets
- OracleSQL
- Cassandra
- CouchDB
- RethinkDB
- Redis
