blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2019-01-10T11:07:07Zhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/94Otimizar algoritmo de junção de visões2019-01-10T11:07:07ZLucas Fernandes de OliveiraOtimizar algoritmo de junção de visõesO código atual de junção de visões primeiramente verifica quais são as visões mais similares e as junta 2 a duas. O problema que encontrar a similaridade de duas visões é de tempo quadrático. Entretanto não é necessário juntar as tabelas...O código atual de junção de visões primeiramente verifica quais são as visões mais similares e as junta 2 a duas. O problema que encontrar a similaridade de duas visões é de tempo quadrático. Entretanto não é necessário juntar as tabelas mais similares, ``todas'' podem ser juntadas.
Esse código já foi feito no branch ICDE2019 experiments.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/93Habilitar uso nome de tabelas ao invés de hash2019-01-10T11:07:07ZLucas Fernandes de OliveiraHabilitar uso nome de tabelas ao invés de hashO "nome" de uma visão no Blendb é determinado por suas métricas, dimensões e filtros aplicados. Com essas informações uma função de hash é aplicada gerando um nome.
Criar uma opção, para cada view, que permite utilizar o **alias**, ou u...O "nome" de uma visão no Blendb é determinado por suas métricas, dimensões e filtros aplicados. Com essas informações uma função de hash é aplicada gerando um nome.
Criar uma opção, para cada view, que permite utilizar o **alias**, ou um outro atributo a ser definido, como nome ao invés do hash gerado. Dessa forma para que o blendb seja compátivel com os outros bancos, não é necessário a criação de uma visão com o nome de uma hash, basta utilizar o próprio nome.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/92Revisar tests2019-01-11T10:35:34ZLucas Fernandes de OliveiraRevisar testsFazer uma analise mais precisa dos testes automáticos. Após a *issue*#88 ter sido aceita, deve averiguar o que não está coverto e se é factivel cobrir esses casos.Fazer uma analise mais precisa dos testes automáticos. Após a *issue*#88 ter sido aceita, deve averiguar o que não está coverto e se é factivel cobrir esses casos.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/91Modificação do contrutor da Engine2019-01-10T11:07:08ZLucas Fernandes de OliveiraModificação do contrutor da EngineVerificar a viabilidade da substituição do contrutor da classe Engine.
O contrutor dessa calsse inicia uma estrutura vazia, que deve ser incrementada utilizando outras funcções como addView, addMetric, ..., etc.
Verificar se é possível...Verificar a viabilidade da substituição do contrutor da classe Engine.
O contrutor dessa calsse inicia uma estrutura vazia, que deve ser incrementada utilizando outras funcções como addView, addMetric, ..., etc.
Verificar se é possível que o contrutor recebe um objeto do tipo ParseConfig e realize a construção do objeto. As funções addAlgumaCoisa podem ser colocadas como privadas.
Verificar se é possível realizar essa alteração, e se for possível realizar.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/90Mudar a interface Query para uma Classe2019-01-10T11:07:07ZLucas Fernandes de OliveiraMudar a interface Query para uma ClasseHoje um elemento importante do BlenDB, a *query*, é uma interface e não uma classe. Essa escolha foi feita pois não existiu até o momento a necessidade da *query* possuir métodos. Entretanto, como efeito colateral a *query* não possui um...Hoje um elemento importante do BlenDB, a *query*, é uma interface e não uma classe. Essa escolha foi feita pois não existiu até o momento a necessidade da *query* possuir métodos. Entretanto, como efeito colateral a *query* não possui um construtor. Como essa interface possui parametros opicionais, em diversos locais é necessário verificar se esses parametros opicionais estão preenchidos, ou não, se prenche-los com valores **default**.
Esse preenchimento poderia ser feito no construtor da classe, evitando a validação em diversos pontos do código.
## Objetivo
* Mudar a interface *query* para uma classe
* Criar um método contrutor, para preencher os valores opcionais
* A interface *query* se transforma em *queryOpts* que são as opções para criar uma query.
* Verificar onde existe validação dos valores da query e remove-las1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/88Migrar testes para novo banco de dados de teste2019-01-10T11:07:08ZLucas Fernandes de OliveiraMigrar testes para novo banco de dados de testeAtualmente o banco de dados de teste não possui significado, atributos como **dim:1** **met:1** estão presentes mas não agregam nenhum significado. Transferir os testes para um banco de dados de teste onde os nomes dos atributos e as rel...Atualmente o banco de dados de teste não possui significado, atributos como **dim:1** **met:1** estão presentes mas não agregam nenhum significado. Transferir os testes para um banco de dados de teste onde os nomes dos atributos e as relações entre eles, e entre as tabelas faz mais sentido.
O banco de dados deve ser um cenário "real", onde o Blendb pode ser aplicado.
A principio os testes, com isso é a semântica de um teste, não precisa ser mudada, por exemplo o teste **Consulta com mais de uma métrica** ainda deve existir, mas ao invés de testar uma consulta com as métricas 1,2 e 3 pode-se testar com média, pico e total de tráfego de rede.
O principal objetivo é manter a cobertura, mesmo com o banco novo.
Acredita-se que a maioria dos testes será mantida, mas pode ocorrer de alguns testes serem considerados desnecessário e outros novos surgirem. Afinal diversos testes são afetados pela estrutura do banco de dados.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/80Centralizar parsers para enums2018-07-31T14:27:01ZLucas Fernandes de OliveiraCentralizar parsers para enumsAtulamente as funções que traduzem strings para Enums e vice-versa espalhadas em diversas classes, as que tem maior necessidade de utilizar essas funções, porém isso se torna incoveniente se mais de uma classe precisa do parser.
Criar u...Atulamente as funções que traduzem strings para Enums e vice-versa espalhadas em diversas classes, as que tem maior necessidade de utilizar essas funções, porém isso se torna incoveniente se mais de uma classe precisa do parser.
Criar um arquivo no diretório **utils** chamado **enumHandler** que deve contém métodos estáticos para manipulação dos enums1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/78Adicionar yarn e npm shrinkwrap2018-05-07T12:19:25ZLucas Fernandes de OliveiraAdicionar yarn e npm shrinkwrapO yarn promete ser uma evolução do npm. Não se sabe se o yarn subtituirá completamente o npm mas o principal motivo para realizar a mudança é o fato de o yarn utilizar por padrão o travamento preciso da versão dos pacotes.
Essa funciona...O yarn promete ser uma evolução do npm. Não se sabe se o yarn subtituirá completamente o npm mas o principal motivo para realizar a mudança é o fato de o yarn utilizar por padrão o travamento preciso da versão dos pacotes.
Essa funcionalidade está disponível com o npm utilizando o comando npm shrinkwrap.
Como o docker está sendo utilizado, a versão dos pacotes deve ser precisa.
Alterar configurações necessaŕias e arquivos Docker para utilização de versão precisa.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/72Remover arquivos legados2018-04-05T14:06:52ZLucas Fernandes de OliveiraRemover arquivos legadosAlguns arquivos, como ```src/core/server``` e ```src/core/transformer``` são arquivos de uma versão legada que não são utilizados atualmente. Esses arquivos "inuteis" devem ser removidos pois provavelmente se sua funcionalidade for requi...Alguns arquivos, como ```src/core/server``` e ```src/core/transformer``` são arquivos de uma versão legada que não são utilizados atualmente. Esses arquivos "inuteis" devem ser removidos pois provavelmente se sua funcionalidade for requisitada, provavelmente não será compatível com a versão atual (o que ocorreu com ```src/core/source```)1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/66Redefinir algoritmo de junção2018-05-16T13:40:51ZLucas Fernandes de OliveiraRedefinir algoritmo de junçãoO algoritmo de junção possui uma regra: Quando agregações de granularidade diferentes são unidas, não é possível agregagar. Essa regra atrapalha alguns casos onde a ordem das junções afeta o resultado final. Buscar uma solução. Possíveis...O algoritmo de junção possui uma regra: Quando agregações de granularidade diferentes são unidas, não é possível agregagar. Essa regra atrapalha alguns casos onde a ordem das junções afeta o resultado final. Buscar uma solução. Possíveis soluções incluir utilizar dependência funcional e salvar esse tipo de informação na agregação ou dimensão.1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/64Atualizar exemplo de configuração2018-03-19T11:49:27ZLucas Fernandes de OliveiraAtualizar exemplo de configuraçãoOs arquivos exemplo de configuração estão em um formato antigo, devem ser atualzados para serem compatíveis com as configurações atuais.
Os novos arquivos exemplo devem conter um exemplo de cada campo possível e este deve ser comentado,...Os arquivos exemplo de configuração estão em um formato antigo, devem ser atualzados para serem compatíveis com as configurações atuais.
Os novos arquivos exemplo devem conter um exemplo de cada campo possível e este deve ser comentado, exemplificando sua funçãohttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/44Mover metricas dimensionais para Engine2018-05-16T13:40:54ZLucas Fernandes de OliveiraMover metricas dimensionais para EngineAtualmente as métricas dimensionais são tratadas apenas pelo adapter. Esse efeito surge ao realizar certos Joins entre as views sobre certas condições.
Descobrir se esse problema já pode ser detectado na Engine, e resolvido nesse ponto....Atualmente as métricas dimensionais são tratadas apenas pelo adapter. Esse efeito surge ao realizar certos Joins entre as views sobre certas condições.
Descobrir se esse problema já pode ser detectado na Engine, e resolvido nesse ponto. Provavelmente se isso for possivel, a view deverá ter uma estrutura mais elaborada do que um vetor de childViews para passar ao adapter para gerar a consulta. Provavelmente terá que indicar exatamente quais joins devem ser feitos e quais agregações devem ser feitas.
Com essa alteração o adapter terá que ser refatorado (Novamente), mas provavelmente deverá ficar mais simples.1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/42Remover referencias ao banco de dados do SIMMC2017-08-29T11:44:46ZLucas Fernandes de OliveiraRemover referencias ao banco de dados do SIMMCAs views base não são parte do blendb em si, são mais uma instância de teste, não precisam estar no repositório, remover esses arquivos e se houver outros que fazem referencia direta ao banco do SIMMCAs views base não são parte do blendb em si, são mais uma instância de teste, não precisam estar no repositório, remover esses arquivos e se houver outros que fazem referencia direta ao banco do SIMMCLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/33Melhorar função de analise dos filtros2017-10-16T11:49:30ZLucas Fernandes de OliveiraMelhorar função de analise dos filtrosA escolha de views e agregações é limitada pelos filtros aplicados. No momento apenas se o filtro casar perfeitamente (tem que se identico) a view é escolhida. En varios casos é o suficiente (Para operadores == e !=), porém com o operado...A escolha de views e agregações é limitada pelos filtros aplicados. No momento apenas se o filtro casar perfeitamente (tem que se identico) a view é escolhida. En varios casos é o suficiente (Para operadores == e !=), porém com o operador de > por exemplo, se a restrição é de maior que 3 meses, maior que 6 meses também poderia utilizar essa view, mas isso não ocorre.
Operadores individuais parecem simples de resolver, bastaria olhar o operador do filtro e aplicar algumas comparações, entretanto quando combinados com operador OR (maior que 3 meses ou ativo) já não funciona tão bem.
Acredito que o melhor é analizar alguns casos que seriam mais úteis que e que mais ocorrem e tentar abordar esse modelo mais restrito do que acertar 100% dos casos.
Encontrar essa lista de casos e melhorar a escolha dos filtros, a principio modificar a função checkConstranits da classe graph deve ser o suficiente para aplicar as mudanças.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/30Remover ChildView2017-08-09T11:46:41ZLucas Fernandes de OliveiraRemover ChildViewChidView é uma classe auxiliar que representa views filhas de outra view. É composta pelas metricas e dimensões que a filha cobre da mãe, e uma referencia para o objeto do tipo View da filha. Essa classe era essencialmente usada para o a...ChidView é uma classe auxiliar que representa views filhas de outra view. É composta pelas metricas e dimensões que a filha cobre da mãe, e uma referencia para o objeto do tipo View da filha. Essa classe era essencialmente usada para o adaptador que precisava saber quem cobria o que. Com a refatoração do adaptador (#29) essa estrutura foi completamente removida do adaptador.
Verificar se há outras partes do código onde essa estrutura é realmente necessária ou se pode ser substituida apenas com a classe View. Se esse for o caso remover todas as referencias para ChildView.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/29Atualizar Adaptador do Postgres - Geração de consultas2017-08-08T18:36:33ZLucas Fernandes de OliveiraAtualizar Adaptador do Postgres - Geração de consultasBásicamente no BlenDB uma consulta é representada como uma view.
A API faz o tradução dos atributos e transforma em um objeto do tipo Query.
Esse objeto do tipo Query é enviado a Engine que transforma em um Objeto do tipo View.
Uma vi...Básicamente no BlenDB uma consulta é representada como uma view.
A API faz o tradução dos atributos e transforma em um objeto do tipo Query.
Esse objeto do tipo Query é enviado a Engine que transforma em um Objeto do tipo View.
Uma view contém informações sobre quais dados estão disponiveis através dela (métricas e dimenções) e contém um conjunto de views filhas, que serão usadas como fonte de dados, a menos que a view seja materializada.
O algoritmo de geração de consultas recebe uma view e traduz em uma string SQL que é aceita pelo postgres. Isso é feito através de um processo recursivo, gerando as consultas das views filhas e então as usando como fonte (Tabelas) de dados.
Acredito que é possivel ao invés de gerar consultas para as views filhas e depois as utilizar como fonte de dados é possivel apenas identificar os pontos de interesse daquela view e propagar esses dados para "cima". Acredito que isso pode deixar a consulta mais eficiente além de facilitar manutenções e alterações.
A proposta dessa tarefa é encontrar a fonte real dos dados e subir essa informação e realizar apenas uma camada de JOINS apenas com as tabelas reais/materializadas.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/21Atualizar Modulos e dependencias2017-07-04T17:36:55ZLucas Fernandes de OliveiraAtualizar Modulos e dependenciasAo tentar realizar uma build ocorreu falha ao instalar os modulos. Foi detectado qeu ajustar a versão de alguns modulos é o suficiente para resolver o problema. Travar as versões dos modulos para continuar funcionando.Ao tentar realizar uma build ocorreu falha ao instalar os modulos. Foi detectado qeu ajustar a versão de alguns modulos é o suficiente para resolver o problema. Travar as versões dos modulos para continuar funcionando.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/16Organizar Objetos do BlenDB em um Namespace2017-09-18T11:52:23ZLucas Fernandes de OliveiraOrganizar Objetos do BlenDB em um NamespaceExistem diversas classes, interfaces organizadas em pastas dentro do BlenDB. Porém é sempre preciso passar um caminho para onde o arquivo está para importar os objetos. Criar um namespace global para o BlenDB e alguma forma de organizaçã...Existem diversas classes, interfaces organizadas em pastas dentro do BlenDB. Porém é sempre preciso passar um caminho para onde o arquivo está para importar os objetos. Criar um namespace global para o BlenDB e alguma forma de organização (provavelmente usando a arquitetura de pastas atuais). Esse namespace também será util para unir os componentes (Core, API, tests) de uma forma organizada.Lucas Fernandes de OliveiraLucas Fernandes de Oliveira