blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2017-03-23T12:52:00Zhttps://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/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/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/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/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 Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/31Implementar operadores >, < , >=, <= para filtros2017-08-11T14:09:48ZLucas Fernandes de OliveiraImplementar operadores >, < , >=, <= para filtrosAdicionar esses operadores, apenas para os tipos apropriados (datas, inteiros).
Além disso estudar como será feita a cobertura por essas condições.Adicionar esses operadores, apenas para os tipos apropriados (datas, inteiros).
Além disso estudar como será feita a cobertura por essas condições.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/35ConfigParser não le filtros2017-08-15T12:19:26ZLucas Fernandes de OliveiraConfigParser não le filtrosAtualmente, views adicionadas através do arquivo de configuração não podem ter filtros. Tornar isso possívelAtualmente, views adicionadas através do arquivo de configuração não podem ter filtros. Tornar isso possívelLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/37Fazer script para geração das views no banco2017-08-18T11:54:17ZLucas Fernandes de OliveiraFazer script para geração das views no bancoFazer um script que dado o arquivo de configuração do blendb Carregue uma consulta pré-definida para as views origem e utilize a engine e o adapter para criar uma materialized view para as views que não são origem dos dados.Fazer um script que dado o arquivo de configuração do blendb Carregue uma consulta pré-definida para as views origem e utilize a engine e o adapter para criar uma materialized view para as views que não são origem dos dados.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://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/48Criar rotas que devolmen métricas e dimensões disponiveis2017-09-18T14:23:49ZLucas Fernandes de OliveiraCriar rotas que devolmen métricas e dimensões disponiveisCriar as rotas que devolvem quais são as métricas e dimensões diponíveis no BlenDB
Perguntas:
1. Essas rotas deverão responder apenas os nomes ou uma breve descrição (nesse caso a descrição deveria ser adicionada)Criar as rotas que devolvem quais são as métricas e dimensões diponíveis no BlenDB
Perguntas:
1. Essas rotas deverão responder apenas os nomes ou uma breve descrição (nesse caso a descrição deveria ser adicionada)Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/51Transformar BlenDB em um serviço2017-11-30T13:57:17ZLucas Fernandes de OliveiraTransformar BlenDB em um serviçoCriar um arquivo (exemplo) que é lido pelo systemd do linux para transformar o blendb em um serviçoCriar um arquivo (exemplo) que é lido pelo systemd do linux para transformar o blendb em um serviçoLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/52Adicionar verificação de texto (linter) ao projeto2017-12-04T10:54:01ZLucas Fernandes de OliveiraAdicionar verificação de texto (linter) ao projetoEmbora o projeto tenha uma configuração de linter ele não é utilizado ao gerar uma build. Falhar a build se o projeto não atender os padrões do linter.Embora o projeto tenha uma configuração de linter ele não é utilizado ao gerar uma build. Falhar a build se o projeto não atender os padrões do linter.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/53Tornar o Blendb utilizável com um docker2017-12-20T13:24:12ZLucas Fernandes de OliveiraTornar o Blendb utilizável com um dockerCriar um arquivo DockerFile e seguir as boas práticas para a criação de uma imagem docker. Inclusive um .dockerignore
Além dos arquivos base adicionar um docker-compose.ymlCriar um arquivo DockerFile e seguir as boas práticas para a criação de uma imagem docker. Inclusive um .dockerignore
Além dos arquivos base adicionar um docker-compose.ymlLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/71Permitir links em arquivos de configuração para views e sources2018-08-13T13:25:41ZLucas Fernandes de OliveiraPermitir links em arquivos de configuração para views e sourcesOs objetos *views* e *sources* são os mais complexos (os que podem possuir mais propriedades) e tornam o arquivo de configuração grande e ilegivel. Permitir que eles recebam um link para outro arquivo ao invés da definição da estrutura. ...Os objetos *views* e *sources* são os mais complexos (os que podem possuir mais propriedades) e tornam o arquivo de configuração grande e ilegivel. Permitir que eles recebam um link para outro arquivo ao invés da definição da estrutura. Assim pode-se definir cada um desses componentes em arquivos separados.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/73Gerar cobertura de código como artefato do pipeline2018-05-16T13:40:42ZLucas Fernandes de OliveiraGerar cobertura de código como artefato do pipelineAo executar um pipeline a bobertura de código deve ser devolvida como uma artefato, assim é possível verificar as linhas dos novos arquivos que adicionadosAo executar um pipeline a bobertura de código deve ser devolvida como uma artefato, assim é possível verificar as linhas dos novos arquivos que adicionados1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/75Criar esquema de banco de dados para exemplo em docker2019-01-10T11:07:08ZLucas Fernandes de OliveiraCriar esquema de banco de dados para exemplo em dockerDescrever um ambiente "real" onde o Blendb poderia ser aplicado. Esse ambiente é basicamente uma descrição do banco de dados ou seja
* [x] Um arquivo de configuração YAML
* [x] Arquivos com fixtures para cada uma das views (ou sources...Descrever um ambiente "real" onde o Blendb poderia ser aplicado. Esse ambiente é basicamente uma descrição do banco de dados ou seja
* [x] Um arquivo de configuração YAML
* [x] Arquivos com fixtures para cada uma das views (ou sources)
O arquivo ENV é indiferente pois apenas faz a conexão com o banco de dados.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/84Utilização da ferramenta Typedoc2018-05-24T14:35:52ZLucas Fernandes de OliveiraUtilização da ferramenta Typedoc[Typedoc](https://github.com/TypeStrong/typedoc) é um gerador de documentação de código Typescript.
Atualmente o código é parcialmente documentado utilizando a Wiki do Gitlab. O principal problema dessa abordagem é que o processo não é ...[Typedoc](https://github.com/TypeStrong/typedoc) é um gerador de documentação de código Typescript.
Atualmente o código é parcialmente documentado utilizando a Wiki do Gitlab. O principal problema dessa abordagem é que o processo não é integrado e não é versionado. Utilizando essa ferramenta cada uma dos branchs poderia ser documentado separadamente e não é necessária a utilização de uma ferramenta externa, basta modificar o próprio código (através da inserção de comentários)1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/86Adicionar variavel de ambiente para ler arquivo de configuração2019-01-10T11:07:08ZLucas Fernandes de OliveiraAdicionar variavel de ambiente para ler arquivo de configuraçãoAtualmente o arquivo de configuração é fixo: Para execução é o arquivo **config.yaml** e para testes **test.yaml**.
Adicionar uma variável de ambiente **BLENDB_SCHEMA_FILE** que contém o caminho para o arquivo yaml. Utilizar essa variáv...Atualmente o arquivo de configuração é fixo: Para execução é o arquivo **config.yaml** e para testes **test.yaml**.
Adicionar uma variável de ambiente **BLENDB_SCHEMA_FILE** que contém o caminho para o arquivo yaml. Utilizar essa variável ao invés dos caminhos fixos.
Observar efeitos sobre caminhos relativos.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/89Opção de demonstração para o container docker2019-01-10T11:07:08ZLucas Fernandes de OliveiraOpção de demonstração para o container dockerAtualmente o container docker do Blendb permite a execução do mesmo para um banco de dados dado.
Adicionar uma opção de demonstração, onde ao invés de executar sobre o banco dado, um banco de demonstração, criado na tarefa #75 é utiliza...Atualmente o container docker do Blendb permite a execução do mesmo para um banco de dados dado.
Adicionar uma opção de demonstração, onde ao invés de executar sobre o banco dado, um banco de demonstração, criado na tarefa #75 é utilizado, permitindo que um usuáriio interessado teste, use e brinque com a ferramenta sem possuir dados necessariamente.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 Dias