blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2017-03-23T12:36:32Zhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/8Corrigir build2017-03-23T12:36:32ZLucas Fernandes de OliveiraCorrigir buildDescobrir porque a build falha e corrigirDescobrir porque a build falha e corrigirLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/7Criar estrutura de metadados para gerenciar views2017-03-23T12:36:32ZEduardo L. BurattiCriar estrutura de metadados para gerenciar viewsCriar estrutura de metadados para armazenar as informações das views gerenciadas pelo blendb.
As informações que devem ser armazenadas são:
1. dimensions, metrics: nome das dimensões e métricas que a view armazena
2. created_at, updated...Criar estrutura de metadados para armazenar as informações das views gerenciadas pelo blendb.
As informações que devem ser armazenadas são:
1. dimensions, metrics: nome das dimensões e métricas que a view armazena
2. created_at, updated_at, deleted_at: timestamps de criação, atualização e remoção da view
3. parents: lista com as views que geradoras desta (vazia se a view for raiz)AlphaEduardo L. BurattiEduardo L. Burattihttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/6Implementar mecanismo de consulta que escolhe as views necessárias e gera uma...2017-03-23T12:52:00ZEduardo L. BurattiImplementar mecanismo de consulta que escolhe as views necessárias e gera uma consulta SQL sobre elas.No BlenDB, cada view é representada por um conjunto de metadados que guardam informações de quais dimensões e métricas cada view contém. Com base nisso, criar um algoritmo para o seguinte:
---
O **número de dimensões** de uma view ou ...No BlenDB, cada view é representada por um conjunto de metadados que guardam informações de quais dimensões e métricas cada view contém. Com base nisso, criar um algoritmo para o seguinte:
---
O **número de dimensões** de uma view ou query *x* é denotado por *D(x)*. A **distância** entre uma query *q* e uma view *v* é denotado por *d(q, v)* e é definida da seguinte maneira:
```
d(q, v) = D(q) - D(v)
```
Criar um algoritmo que dada uma query *q*, escolhe o menor conjunto de views *V* que cubra *q* e minimize *d(q, v)* para toda view *v* pertencente a *V*.
---
Gerar também uma consulta SQL que retorne os dados das views selecionadas de acordo com a query do usuário. Veja o exemplo:
```sql
SELECT a.dim_state, SUM(a.met_point_count), AVG(b.met_average_download_rate)
FROM view_a3ecb59d v1, view_8c23bb4a v2
WHERE v1.dim_state = v2.dim_state, ...
GROUP BY a.dim_state;
```
A projeção (SELECT), basicamente reflete os parâmetros da query. Só tem que cuidar de qual função de agregação usar (SUM, AVG, etc.) para as métricas, essa informação vem dos metadados das views. Na seleção (WHERE), tem que juntar as dimensões que são iguais nas views (se duas views a e b tem a dimensão dim_state, garantir que a.dim_state = b.dim_state). E no agrupamento (GROUP BY), colocar todas as dimensões da query.AlphaLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/11Implementar sub-dimensões2017-03-23T12:52:38ZLucas Fernandes de OliveiraImplementar sub-dimensõesUma sub-dimensão é uma dimensão que se forma a partir da informação de outra dimensão. Da visão do usuário é apenas mais uma dimensão. A relação entre dimensão e sub-dimensão não é visivel pra o usuário.
A intenção de uma sub-dimensão é...Uma sub-dimensão é uma dimensão que se forma a partir da informação de outra dimensão. Da visão do usuário é apenas mais uma dimensão. A relação entre dimensão e sub-dimensão não é visivel pra o usuário.
A intenção de uma sub-dimensão é subdividir a dimensão não através de mais colunas no banco de dados mas sim por meio do gerador de consultas.
Muito útil do caso de datas.
Modificações necessárias:
- [x] Modificar a definição de dimensão
- [x] Criar os tipos de relação
- [x] Alterar o algoritmo de seleção de view para considerar sub-dimensões
- [ ] Modificar os geradores de consultas
Desafios:
* Em que momento o gerador de consulta fará a conversão e quando assumira que o valor já está formtado na view ??Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/13BUG: Testes feitos incorretamente2017-05-24T11:31:06ZLucas Fernandes de OliveiraBUG: Testes feitos incorretamenteAparentemente a linha
`expect(optimalView.childViews.length === 1)`
se o valor for falso não é o suficiente para falhar um test e o ideal seria
`expect(optimalView.childViews.length === 1).to.be.true`
ou
`expect(optimalView.childVi...Aparentemente a linha
`expect(optimalView.childViews.length === 1)`
se o valor for falso não é o suficiente para falhar um test e o ideal seria
`expect(optimalView.childViews.length === 1).to.be.true`
ou
`expect(optimalView.childViews).to.have.length(1)`
Subistituir os testes incorretos e corrigir suas falhas caso falhemLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/12Adicionar conexão ao postgres e fazer Testes no adaptador2017-05-24T11:31:31ZLucas Fernandes de OliveiraAdicionar conexão ao postgres e fazer Testes no adaptadorPara fazer testes no adaptador do postgres é necessário adicionar uma conexão com o postgres. Realizar testes no adaptador para saber se realmente está certoPara fazer testes no adaptador do postgres é necessário adicionar uma conexão com o postgres. Realizar testes no adaptador para saber se realmente está certoLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/14Converter engine para singleton2017-05-30T11:25:34ZLucas Fernandes de OliveiraConverter engine para singletonSingleton é um "design pattern" onde apenas uma instancia da classe pode existir. Converter a classe Engine nesse padrão para que todas as requisições sejam sempre atendidas pela mesma instancia.Singleton é um "design pattern" onde apenas uma instancia da classe pode existir. Converter a classe Engine nesse padrão para que todas as requisições sejam sempre atendidas pela mesma instancia.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/15Conectar API com Engine2017-06-01T12:58:09ZLucas Fernandes de OliveiraConectar API com EngineAtualmente os testes são feitos diretamente com a classe engine e não há nehuma comunicação entre Engine e API. Criar essa conexão e realizar testes através da API também.Atualmente os testes são feitos diretamente com a classe engine e não há nehuma comunicação entre Engine e API. Criar essa conexão e realizar testes através da API também.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/17Identificar e remover modulos desnecessários2017-06-01T13:10:36ZLucas Fernandes de OliveiraIdentificar e remover modulos desnecessáriosIdentificar os modulos não utilizados pelo Blendb e remover da lista de dependencias (package.json), também realocar as dependencias apenas de desenvolvimento (como modulos usados para testes) apenas nas dependecias de desenvolvimento.Identificar os modulos não utilizados pelo Blendb e remover da lista de dependencias (package.json), também realocar as dependencias apenas de desenvolvimento (como modulos usados para testes) apenas nas dependecias de desenvolvimento.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/19Redefinir casos de teste2017-07-04T17:36:53ZLucas Fernandes de OliveiraRedefinir casos de testeCriar um novo conjunto de Views, com metricas e dimensões de uma forma mais consistente e deixar documentado,
Com o novo conjunto de views refazer os testes para que continuem corretos.Criar um novo conjunto de Views, com metricas e dimensões de uma forma mais consistente e deixar documentado,
Com o novo conjunto de views refazer os testes para que continuem corretos.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/22Incrementar Algoritmo de Cobertura para considerar conectividade das Views2017-07-14T14:36:49ZLucas Fernandes de OliveiraIncrementar Algoritmo de Cobertura para considerar conectividade das ViewsUm problema conhecido com a cobertura gerada pelo BlenDB é que o conjunto de Views selecionadas nem sempre pode sofrer um join perfeito, em alguns casos é feito um produto cartesiano que pode levar a resultados inconsistentes.
O esquema...Um problema conhecido com a cobertura gerada pelo BlenDB é que o conjunto de Views selecionadas nem sempre pode sofrer um join perfeito, em alguns casos é feito um produto cartesiano que pode levar a resultados inconsistentes.
O esquema do banco que o BlenDB usa pode ser representado por um grafo onde os vértices são métricas e dimensões e uma aresta existe entre dois vértices se, e somente se eles fazem parte de uma mesma view.
Uma consulta pode ser vista como um sub-grafo, onde o Usuário escolhe os vértices e o BlenDB escolhe as arestas.
Para que a consulta não realize produtos, o sub-grafo resultante da consulta deve ser conexo.
Implementar esse grafo para representar o esquema do banco, mantê-lo com a adição de métricas e dimensões e views e implementar o algoritmo que verifica conectividade do sub-grafo. Uma busca em largura deve resolver.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/18ConfigParser não converte sub-dimensões2017-08-01T13:44:28ZLucas Fernandes de OliveiraConfigParser não converte sub-dimensõesConfigParser consegue detectar subdimensões no arquivo de configuração mas não as cria como subdimensões.
Alterar para converter subdimensões. Verificar se mudança no arquivo de configuração é necessáriaConfigParser consegue detectar subdimensões no arquivo de configuração mas não as cria como subdimensões.
Alterar para converter subdimensões. Verificar se mudança no arquivo de configuração é necessáriaLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/25Api separa campos de forma errada2017-08-03T13:44:30ZLucas Fernandes de OliveiraApi separa campos de forma erradaQuanto o campo é vazio a função split gera um vetor com uma tring varia e não um vetor vazio. Remover os campos vaziosQuanto o campo é vazio a função split gera um vetor com uma tring varia e não um vetor vazio. Remover os campos vaziosLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/26Mudar padrão de nomes de metricas e dimensões2017-08-03T13:44:33ZLucas Fernandes de OliveiraMudar padrão de nomes de metricas e dimensõesMetricas e dimensões podem ter qualquer string como nome, entretanto é adotado um padrão. O padrão agora é utilizar CamelCase (Letras maiusculas são separadores de palavras, ao invés de _ - ou ' '), dimensões começam com a palavra dim se...Metricas e dimensões podem ter qualquer string como nome, entretanto é adotado um padrão. O padrão agora é utilizar CamelCase (Letras maiusculas são separadores de palavras, ao invés de _ - ou ' '), dimensões começam com a palavra dim seguida de : seguida do nome e metricas começam com a palavra met seguida de : seguida da função de agregação sefuinda de : seguida de nome.
Atualizar os nomes fora do padrão (não é necessário nos testes)Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/27BUG: função de agregação count não funciona como esperado2017-08-04T11:27:06ZLucas Fernandes de OliveiraBUG: função de agregação count não funciona como esperadoAs função de agregação podem ser aplicadas diversas vezes sobre um mesmo dado. Isso normalmente não é um problema para somas e medias pois a soma das somas é a soma e a media das médias é a media, entretanto a contagem da contagem não é...As função de agregação podem ser aplicadas diversas vezes sobre um mesmo dado. Isso normalmente não é um problema para somas e medias pois a soma das somas é a soma e a media das médias é a media, entretanto a contagem da contagem não é a contagem total, o resultado é possivelmente bem menor. O resultado correto seria apenas na view de origem realizar a contagem e nas camadas superiores realizar a soma.
Lembrando que não basta realizar COUNT se a view for materializada e SUM caso contrario, pois uma view materializada não é necessáriamente a origem daquele dado.
Esse erro deve se limitar a mecher no adaptador (gerador de consulta)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/9Implementação da Date view2017-08-08T18:36:57ZLucas Fernandes de OliveiraImplementação da Date viewÉ pouco pŕatico ter uma view para controlar data e hora como uma tabela do banco, o melhor seria adicionar as dimensões de data através do gerador de consultas (sem realmente ter dados que representam a data), estudar essa possibildiade ...É pouco pŕatico ter uma view para controlar data e hora como uma tabela do banco, o melhor seria adicionar as dimensões de data através do gerador de consultas (sem realmente ter dados que representam a data), estudar essa possibildiade de se possivel implementar.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/23Implementar filtros básicos2017-08-10T12:35:24ZLucas Fernandes de OliveiraImplementar filtros básicosImplementar filtros para dimensões. Isso significa o trabalho completo, desde adicionar o parâmetro na API até modificar o gerador de consulta para aplicar os filtros
No momento apenas dois operadores serão implementados, igualdade e de...Implementar filtros para dimensões. Isso significa o trabalho completo, desde adicionar o parâmetro na API até modificar o gerador de consulta para aplicar os filtros
No momento apenas dois operadores serão implementados, igualdade e desigualdade, mas a estrutura deve ser feita para facilitar a criação de outros filtros.Lucas Fernandes de OliveiraLucas Fernandes de Oliveira