blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2018-04-03T12:09:53Zhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/20Está sendo exibido o html do API Reference2018-04-03T12:09:53ZDavisson Henrique PaulinoEstá sendo exibido o html do API ReferenceO link do API Reference no readme aponta para o código html, ao invés de mostrar ele de fato. Talvez colocar ele na wiki?O link do API Reference no readme aponta para o código html, ao invés de mostrar ele de fato. Talvez colocar ele na wiki?Revisionhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/60Criação de views materializadas no MonetDB2018-04-03T12:09:06ZLucas Fernandes de OliveiraCriação de views materializadas no MonetDBMonetDB não tem suporte a views materializadas. Para corrigir essa falha a proposta é criar uma tabela e inserir os dados relativos.MonetDB não tem suporte a views materializadas. Para corrigir essa falha a proposta é criar uma tabela e inserir os dados relativos.Revisionhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/63Controle de transformações2018-08-29T13:51:58ZLucas Fernandes de OliveiraControle de transformaçõesConstrução das agregações a partir das fontes.
* A construção de uma agregação é a construção de suas métricas e dimensões a partir dos campos de uma fonte.
* Para cada registro na fonte será gerado um único registro na agregação.
* A ...Construção das agregações a partir das fontes.
* A construção de uma agregação é a construção de suas métricas e dimensões a partir dos campos de uma fonte.
* Para cada registro na fonte será gerado um único registro na agregação.
* A construção de uma métrica ou dimensão é o resultado de uma expressão dos campos da fonte e de constantes
Para resolver o problema será necessário:
* Alteração do arquivo de configuração. Transformações devem estart no arquivo de configuração
* Criação de um *parser* para verificar a validade das expressões de construção
* Tradução das transformações pelos adaptadores
* Definição de uma técnica de atualização
Sugestões para solucionar os tópicos acima:
* [ ] Adição de um campo *transformers* na definição da agregação. Esse campo será uma lista com identificadores de transformações que são usados para criar essa agregação
* [ ] Adição de uma novo campo no nível 0 do arquivo de configuração chamado *transformers*. Esse campo contém uma lista de definição de transformações. Uma transformação pode ser definida por:
* **name**: nome/identificador da transformação (utilizado na definição da agregação)
* **source**: fonte na qual a transformação é aplicada
* **dimensions**: objeto onde cada chave é uma dimenção criada pela transformação
* Uma dimensão é definida como uma lista de condições seguidas de expressões
* A propósta é utilziar essa lista como um **CASE/WHEN** de SQL
* **metrics**: objeto onde cada chave é uma métrica criada pela transformação
* Uma métricas é definida como uma lista de condições seguidas de expressões
* A propósta é utilziar essa lista como um **CASE/WHEN** de SQL
* [ ] Utilização do pacote **sintax-cli** para criação de um parser de expressões. A principal função do parser é validar as expressões e devolver os tipos (int, float, bool, ...) das expressões para validação
* [ ] Criação de uma nova variável de ambiente para definir a politica de atualização, chamada **BLENDB_UPDATE**
* Para a primeira versão está sendo considerado que existira uma única política de atualização para o Blendb todo
* Outras alternativas seriam uma politica para cada transformer ou para cada fonte
* Há duas politicas propóstas. **Temporal**, a cada **X** tempo é realizada a transformação. **Frequência**, a cada **X** inserções é realizada a transformação.
* [ ] Adição de uma função no adaptador (abstrato) para aplicação de transformações
1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/85Conexão em múltiplos bancos de dados simultâneamente2018-10-03T14:53:04ZLucas Fernandes de OliveiraConexão em múltiplos bancos de dados simultâneamente# Problema
Foi detectado que para a realização da tarefa #58, é necessário se conectar em diversos bancos de dados simultâneamente. Foi detectada que essa não seria uma atualização trivial de ser realizada e terá grandes impactos em dive...# Problema
Foi detectado que para a realização da tarefa #58, é necessário se conectar em diversos bancos de dados simultâneamente. Foi detectada que essa não seria uma atualização trivial de ser realizada e terá grandes impactos em diversas partes do código, por essa razão uma tarefa separada foi criada.
Por enquanto o objetivo da tarefa é permitir a conexão a vários bancos que **compartilham o mesmo esquema**. No futuro pretende-se utilizar esquemas diferentes para cada um dos bancos, entretanto essa alteração seria muito grande e será delegada a uma outra tarefa futura.
Atualmente, conectar-se em múltiplos bancos de dados possui dois benefícios imediatos.
* Realização de testes simultâneos em SGBDs diferentes (garantindo corretude em todos os SGBD's)
* Distribuição de carga entre bases de dados (Que podem ser de SGBD's diferentes)
Além disso a inserção pode ser disparada para todos os adaptadores, mantendo a consistência da base. Ainda não é necessário decidir para qual base uma determinada inserção é enviada.
# Alterações necessárias
* [x] Modificar as variáveis de ambiente para conexão com o banco.
* Uma nova variável deve ser criada: **BLENDB_N_DATABASES** que indica o número de bancos de dados simultâneos sendo utilizados. Ela deve ter como valor *default* 1
* As variáveis **BLENDB_DB_*** devem ser modificadas para **BLENDB_DBN_** onde **DBN** será substituido por **DB0** para o primeiro banco, **DB1** para o segundo e assim sucessivamente
* A variável **BLENDB_ADAPTER** deve ser trocada para **BLENDB_DBN_ADAPTER**, já que cada banco pode ter o seu próprio adaptador
* Uma nova váriavel deve ser criada **BLENDB_SCHEMA** que contém o caminho para o esquema do banco de dados (relativo a raiz do projeto ou absoluto)
* [x] Alterações na leitura da configuração
* No **ConfigParser** trocar a criação da conexão de um objeto **Connection** para uma lista de conexões, uma para cada base.
* Realizar a leitura do arquivo de esquema a partir da váriavel de ambiente **BLENDB_SCHEMA**
* [x] Alterações na inicialização (**main.ts**)
* Remover a leitura *hardcoded* do arquivo de definição de esquema (Atualmente config.yaml ou test.yaml).
* Modificação da *middleware* de adapatdores para receber uma lista e não apenas uma conexão.
* [x] Modificação das *midlewares* de adaptador
* Unificar as *middlewares* de cada adaptador em uma única middleware que devolve uma lista de adaptadores e atribui a uma váriavel req.adapters
* [ ] Alterações nos controladores da API de leitura/escrita
* Criação de uma politica de leitura, sugestão: **round robin**, ou seja, cada nova requisição é enviada para o banco que foi o último a atender uma requisição
* Criação de uma politica de escrita, realizar a escrita em todos os bancos
* Caso 2 bancos na realidade forem o mesmo banco, a inserção será duplicada (inserções com data devem resolver)Revisionhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/57Atualizar arquivos de configuração exemplo2018-04-03T12:09:28ZLucas Fernandes de OliveiraAtualizar arquivos de configuração exemplo* Alterar os arquivos de configuração exemplo para serem mais sugestivos
* Permitir comentarios (através de #) no arquivo .env ao utilizar npm start/test* Alterar os arquivos de configuração exemplo para serem mais sugestivos
* Permitir comentarios (através de #) no arquivo .env ao utilizar npm start/testRevisionLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/43Melhorar testes do adapatdor (novamente :( )2018-04-03T12:02:38ZLucas Fernandes de OliveiraMelhorar testes do adapatdor (novamente :( )Os testes do adpatador, quando a consulta é um sucesso, verificar os valores retornado para garantir que o resultado da consulta está realmente certo, não apenas se todos os atributos pedidos na consulta foram retornados.
Poucos testes ...Os testes do adpatador, quando a consulta é um sucesso, verificar os valores retornado para garantir que o resultado da consulta está realmente certo, não apenas se todos os atributos pedidos na consulta foram retornados.
Poucos testes fazem essa verificação1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/24Sub dimensões para localização2018-04-03T12:10:29ZLucas Fernandes de OliveiraSub dimensões para localizaçãoDe certa forma a localização é feita de forma hierarquica, é possivel extrair do código ibge (confirmar essa informação) estado, cidade, região. Entretanto isso exigiria criar no blendb uma nova relação (RelationType) que levaria a perda...De certa forma a localização é feita de forma hierarquica, é possivel extrair do código ibge (confirmar essa informação) estado, cidade, região. Entretanto isso exigiria criar no blendb uma nova relação (RelationType) que levaria a perda de generalidade.
Estudar as opções ou encontrar uma forma de remover a RelationType e encontrar algo genérico onde na configuração do blendb pode-se escolher as relações (Problema a geração de consulta)RevisionLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/69Ferramenta de bulk insert2018-08-29T13:50:38ZLucas Fernandes de OliveiraFerramenta de bulk insertO projeto de API atualmente preve inserções uma a uma. Porém inserção através de uma API não parece a melhor abordagem para inserção de grandes quantiaddes de dados de uma única vez. Uma proposta é criar um script de *bulk insert* utili...O projeto de API atualmente preve inserções uma a uma. Porém inserção através de uma API não parece a melhor abordagem para inserção de grandes quantiaddes de dados de uma única vez. Uma proposta é criar um script de *bulk insert* utilizando o npm como interface.
A proposta é criar um script que execute com o comando ```npm run bulk <source> <file>``` que insira o arquivo utilizando inserção em massa em uma fonte.
Alterações no comando podem ser necessárias.1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/70Aprimorar arquivo de configuração para permitir transformações2018-08-29T13:51:58ZLucas Fernandes de OliveiraAprimorar arquivo de configuração para permitir transformaçõesA proposta atual de transformação é **copiar** dados de uma *source* para uma *view*. Essa cópia deve estar mapeada no arquivo de configuração.
Atualizar o arquivo de configuração para que quando uma view, quando marcada como *origin*, ...A proposta atual de transformação é **copiar** dados de uma *source* para uma *view*. Essa cópia deve estar mapeada no arquivo de configuração.
Atualizar o arquivo de configuração para que quando uma view, quando marcada como *origin*, tenha a informação de como gerar suas métricas e dimensões a partir das fontes.
# Proposta
Adicionar como propriedade de uma *view* um campo *sources*, onde cada chave dentro de sources representa uma *source* que será utilizada para gerar a *view*. A propriedade *source* tem um campo para cada métrica e dimensão da *view* que por sua vez tem a regra de formação a partir da *source* para gerar a métrica/dimensão.
# Observações
* Essa proposta assume uma *view* é criada pela **UNION** das sources, ou seja, as *sources* **não podem** ser combinadas para criar um **único** registro.
* Ou seja não é possível fazer : se na fonte1 o valor é x e na fonte2 o valor é y coloque z
* A proposta tem como objetivo facilitar a criação de uma *materialized view*, onde as regras definem como os campos são criados.
* Provavelmente essas regras gerarão um SQL (ou equivalente) para construir uma *materialized view*.
* As transformações possíveis ainda não estão bem definidas, devem sex esclarecidas para a execução da tarefa.
* Essa tarefa apenas **MODIFICA** o arquivo de configuração e não **APLICA** as transformações. Seu objetivo é **LER** e **VALIDAR** as transformações.1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/76Palavras compostas no arquivo de configuração YAML2018-04-05T13:34:52ZLucas Fernandes de OliveiraPalavras compostas no arquivo de configuração YAMLO parsing das propriedades do arquivo de configuração é *case sensitive* isso faz com que chaves como **enumType** e **dataType** sejam diferentes de **enumtype** e **datatype**.
Seria prudente manter o padrão, ou realizar um preprocess...O parsing das propriedades do arquivo de configuração é *case sensitive* isso faz com que chaves como **enumType** e **dataType** sejam diferentes de **enumtype** e **datatype**.
Seria prudente manter o padrão, ou realizar um preprocessamento para converter todas as propriedades para letras minúsculas ??
Uma diferentça dessa magnitude pode ser difícil de detectar em um processo de Debug. Como proceder ?
Quão diffcíl seria converter apenas as chaves para letras minúsculas ?
Seria prudente remover as palavars compostas e utilizar apenas palavars simples ?Revisionhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/87Implementação de dependecia funcional para definir escopo de métricas2018-08-22T12:43:58ZLucas Fernandes de OliveiraImplementação de dependecia funcional para definir escopo de métricasPode-se ocorrer casos em que uma métrica não pode ser dividida no conjunto de métricas fornecido. Nesse caso ocorre a replicação do valor. Anteriormente acreditava-se que esse era o comportamento desejado, mas existem casos que a respost...Pode-se ocorrer casos em que uma métrica não pode ser dividida no conjunto de métricas fornecido. Nesse caso ocorre a replicação do valor. Anteriormente acreditava-se que esse era o comportamento desejado, mas existem casos que a resposta é erronêa.
Um exemplo: Supondo que os dados de rede são coletados em nível de cidade, e uma outra métrica de inventário é coletado em nível de escola. O resultado da consulta **dados de rede por escola**, seria o seguinte: todas as escolas da mesma cidade apresentariam o mesmo valor, que é o total de tráfego da cidade.
Para evitar esse problema deve-se identificar quais dimensões podem ser utilizadas em conjunto com as métricas. Para isso basta utilizar a depêndencia funcional dos atributos.
A métrica deve possuir uma chave (conjunto de dimensões) e todas as dimensões são dependentes funcionais dessa chave (podem ser inferidas a partir da chave) são as dimensões que podem ser utilizadas em conjunto com a métrica.
## Especificação
* Na definição das dimensões (arquivo de configuração), deve existir um novo campo: uma lista de dimensões que podem ser utilizadas para inferir a dimensão atual
* Se A -> C e B -> C, então em C existe uma lista com os valores [A, B]
* Métricas devem possuir uma chave
* A chave pode ser inferida da **visão origem** da métrica
* O conjunto de dimensões dessa visão pode ser utilizado como chave
* Deve-se adicionar a verficação de unicidade da métrica e da **visão origem** da métrica
* As métricas devem conter uma lista de dimensões permitidas, para serrem utilizadas em conjunto
* Essa lista pode ser calculada na leitura do arquivo de configuração
* Basta criar um grafo com as informações de dependencia funcional e calcular o fecho transitivo (realizar uma busca em largura)
* Uma vez com a lista basta verificar se a lista de dimensões é um sub-conjunto da lista de dimensões permitidas para cada uma das métricas da consulta
## Implementação
* [ ] Adicionar novo campo no arquivo de configuração para as dimensões, contendo a informação de dependencia
* [ ] Adicionar novo campo a classe das métricas, com a lista de dimensões permitidas
* [ ] Criar um grafo a partir das informações de dependência no momento da leitura do arquivo de configuração
* [ ] Calcular o conjunto de dimensões permitidas por métrica, utilizando o grafo, realizando uma busca (provavelmente em, largura)
* [ ] Modificar a API para verificar se o conjunto de dimensões é um sub-conjunto do conjunto de dimensões permitidas. Caso o conjunto seja inválido, informar o erro.1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/95Adicionar script de criação do banco2018-11-20T11:21:17ZLucas Fernandes de OliveiraAdicionar script de criação do bancoCriar um script que é executado utilizando ```npm run init-db``` que cria todas as tabelas necessárias para o funcionamento do Blendb (utilizando o arquivo de configuração).
Caso as tabelas já existam, não devem ser alteradas. Caso este...Criar um script que é executado utilizando ```npm run init-db``` que cria todas as tabelas necessárias para o funcionamento do Blendb (utilizando o arquivo de configuração).
Caso as tabelas já existam, não devem ser alteradas. Caso estejam utilizando o *alias* como nome, deve-se verificar se o *id* confere. Caso não confira, deve-se retornar um erro.
Para evitar atualização parcial, essas operações devem ser executadas como uma única transação.
Esse código já está parcialmente escrito na seção de fixtures. Esse código deve ser realocado para o código dos adaptadores. O script a ser criado deve simplesmente chamar as funções de criação dos adaptadores.1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/97Atualizar licenças e Copyrights2019-11-04T12:31:18ZLucas Fernandes de OliveiraAtualizar licenças e CopyrightsVerificar os copyrights e as licenças do blend.
Em muitos arquivos é citado apenas blend ao invés de Blendb e acredito que a forma correta de manter os direitos autorais é
com o intervalo de tempo ao invés de apenas o ano em que foi cri...Verificar os copyrights e as licenças do blend.
Em muitos arquivos é citado apenas blend ao invés de Blendb e acredito que a forma correta de manter os direitos autorais é
com o intervalo de tempo ao invés de apenas o ano em que foi criado.
Além disso verificar a viabilidade de mudar a licença de GPL3 para AGPL3.1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/99Documentar arquivos (fonte) de teste2018-12-03T12:15:04ZLucas Fernandes de OliveiraDocumentar arquivos (fonte) de testeApenas os arquivos do diretório **src/** estão própriamente documentados. Mesmo que a documentação automática da ferramenta seja apenas os arquivos do diretório **src/** os arquivos do diretório **test/** também devem ser documentados.
...Apenas os arquivos do diretório **src/** estão própriamente documentados. Mesmo que a documentação automática da ferramenta seja apenas os arquivos do diretório **src/** os arquivos do diretório **test/** também devem ser documentados.
## Tarefas
* [ ] Documentar arquivos **.ts** no diretório **src/**
* [ ] Verificar a viabilidade de documentar arquivos **.spec.ts**1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/101Criar Classe para gerenciar mensagens de erro.2018-12-13T13:14:24ZLucas Fernandes de OliveiraCriar Classe para gerenciar mensagens de erro.Criar uma classe que gera as mensagens de erro.
Essa classe poderia ser chamada de ErrorHandler ou ErrorMsgHandler cujo objetivo é criar as mensagens de erro. Para cada mensagem de erro a classe deve ter um método para gerar uma mensage...Criar uma classe que gera as mensagens de erro.
Essa classe poderia ser chamada de ErrorHandler ou ErrorMsgHandler cujo objetivo é criar as mensagens de erro. Para cada mensagem de erro a classe deve ter um método para gerar uma mensagem específica. Caso a mensagem tenham parametros ela deve receber como argumento de função. A ideia da classe é padronizar as mensagens de erro e reduzir a quantidade de código repleta de strings gigantes.
Uma vez que a classe foi criada substituir as mensagens de erros por chamadas de funções dessa classe.https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/103Adicionar ci a arquivos que não esta sendo coberto2019-02-08T12:49:06ZRafael DiasAdicionar ci a arquivos que não esta sendo cobertoComo as modificações da issue/92 teve impacto nos comandos schema e test-mode, além do docker compose. Avaliar a possibilidade de adicionar a cobertura nos comandos e de inserir o docker-compose no ci.Como as modificações da issue/92 teve impacto nos comandos schema e test-mode, além do docker compose. Avaliar a possibilidade de adicionar a cobertura nos comandos e de inserir o docker-compose no ci.https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/106Adicionar resposat de consulta em formato csv2019-07-01T18:20:52ZLucas Fernandes de OliveiraAdicionar resposat de consulta em formato csvPermitir que as respostas da api sejam respondidas através de arquivos csv.
A API passará a ter um novo parametro **format** que por padrão receberá o valor json mas também pode receber o valor csv para exportar os dados em formato csv.Permitir que as respostas da api sejam respondidas através de arquivos csv.
A API passará a ter um novo parametro **format** que por padrão receberá o valor json mas também pode receber o valor csv para exportar os dados em formato csv.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/107Adicionar marcadores as métricas e dimensões2019-07-26T14:50:11ZLucas Fernandes de OliveiraAdicionar marcadores as métricas e dimensõesAdicionar a descrição das métricas e dimensões marcadores.
Será adicionado um campo tags que é opicional. Esse campo pode ser preenchido de duas formas. Diretamente nas mérticas e dimensões ou através das visões na qual elas estão
As v...Adicionar a descrição das métricas e dimensões marcadores.
Será adicionado um campo tags que é opicional. Esse campo pode ser preenchido de duas formas. Diretamente nas mérticas e dimensões ou através das visões na qual elas estão
As visões também podem receber tags. Todas as métricas e dimensões nessa visão receberão a tag indcada.
Também deverá existir uma rota de tags que retorna as tags existentes.
Essas tags podem ser adicionadas no arquivo de configuração.1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/110Rever regras do tslint2019-09-11T12:08:55ZRafael DiasRever regras do tslintNa issue #109 foi realizado upgrade do tslint e tslint-stylish, com isso algumas regras foram ignoradas para dar continuidade na tarefa.
Rever as regras no arquivo tslint.json.Na issue #109 foi realizado upgrade do tslint e tslint-stylish, com isso algumas regras foram ignoradas para dar continuidade na tarefa.
Rever as regras no arquivo tslint.json.1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/111Substituir modulo osprey2019-08-28T13:24:14ZRafael DiasSubstituir modulo ospreyNa issue #109 foi realizado upgrade dos pacotes, um deles "osprey", substitui-lo por um pacote melhor.Na issue #109 foi realizado upgrade dos pacotes, um deles "osprey", substitui-lo por um pacote melhor.1.0https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/113Adicionar opção para ordenar reverso2019-09-10T17:37:30ZLucas Fernandes de OliveiraAdicionar opção para ordenar reversoOrdenar reversoOrdenar reversohttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/114Habilitar cors por padrão2019-09-30T17:12:43ZLucas Fernandes de OliveiraHabilitar cors por padrãoHabilitar a opção CORS por padrão. Essa opção permite que outras urls acessem a api do blendb.Habilitar a opção CORS por padrão. Essa opção permite que outras urls acessem a api do blendb.https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/116Arrumar a tipagem dos arquivos no controller2021-01-25T13:38:35Zpdts20Arrumar a tipagem dos arquivos no controllerDevido a problemas de tipagem, o BlenDB não está iniciando.Devido a problemas de tipagem, o BlenDB não está iniciando.