blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2019-09-11T14:30:10Zhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/112Remover Select *2019-09-11T14:30:10ZLucas Fernandes de OliveiraRemover Select *Quando todos os atrivutos de uma view são selecionados a consulta coloca select*. Isso pode gerar complicações e não selecionar corretamente todos os atributos. Colocar por extenso os atributosQuando todos os atrivutos de uma view são selecionados a consulta coloca select*. Isso pode gerar complicações e não selecionar corretamente todos os atributos. Colocar por extenso os atributosRafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/100Ordenação de visões parciais falha2018-12-13T11:50:53ZLucas Fernandes de OliveiraOrdenação de visões parciais falhaFoi detectada em uma consulta que as visões podem aparecer "desordenadas", ou seja, as visões necerrárias ainda não foram definidas.
Esse problema parece resolvivel utilizando ordenação topológica.
Verificar se existe uma forma mais sim...Foi detectada em uma consulta que as visões podem aparecer "desordenadas", ou seja, as visões necerrárias ainda não foram definidas.
Esse problema parece resolvivel utilizando ordenação topológica.
Verificar se existe uma forma mais simples de resolver o problema.1.0Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/96Arrumar documentação da classe adapter2019-02-11T10:50:59ZLucas Fernandes de OliveiraArrumar documentação da classe adapterNa classe adapter no método insertIntoSource, o atributo data não foi documentado.
Verificar se o erro se repete nas classes filhas.Na classe adapter no método insertIntoSource, o atributo data não foi documentado.
Verificar se o erro se repete nas classes filhas.1.0Rafael DiasRafael Diashttps://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/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/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/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/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 Oliveira