blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2018-11-20T11:21:17Zhttps://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/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/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/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.0