|
|
Embora o Blendb facilite alguns aspectos para realizar consultas, ainda há alguns pontos que deixam a desejar
|
|
|
|
|
|
## Filtros não podem ser aplicados a métricas
|
|
|
Para os SGBDS, as métricas não são diferentes das dimensões, são apenas colunas nas suas tabelas. O que impede que filtros sejam aplicados a métricas foi uma decisão de projeto.
|
|
|
|
|
|
Quando um filtro é aplicado em uma dimensão, o valor do filtro é simplesmente comparado com o valor do registro no banco. Entretanto as métricas tem valores indiretos. Cada agregação possivelmente possui um valor diferente para a mesma métrica. Logo se um filtro é aplicado dessa maneira a escolha de agregações muda o resultado da consulta. Assim o Blendb seria inconsistente.
|
|
|
|
|
|
Há duas alternativas para aplicar filtros a métricas e ainda manter as consultas consistentes.
|
|
|
|
|
|
A primeira o filtros são aplicados apenas nas agregações origem. Uma agregação origem é a fonte real dos dados.
|
|
|
|
|
|
Como a agregação escolhida sempre seria a mesma, não há problema de consistencia. Todavia, essa solução inviabilisa o propósito do Blendb, que é escolher a agregação ideal. Sempre indo a agregação origem, as consultas provavelmente se tornarão muito lentas.
|
|
|
|
|
|
A única forma de usar essa solução e ainda poder usar agregações de menor granularidade, seria criar agregações que já consideram esse filtro. Uma outra grama de agregações teria que existir, para cada filtro de métrica aplicado. Por enquanto essa solução parece inviável.
|
|
|
|
|
|
Esse tipo de filtro em métricas seria usado por exemplo, quando um usuário quer desconsiderar vendas menores que 5 centavos, ou ignorar picos no uso de rede que representam *outliers*.
|
|
|
|
|
|
A segunda alternativa é a aplicação de filtros após a consulta ser concluída. Como o Blendb é consistente, independende das agregações escolhidas, as consultas retornam sempre o mesmo resultado. Essa é a alternativa usada na API do Google Analytics, por exemplo.
|
|
|
|
|
|
Essa alternativa não foi implementada pois ela não reduz o esforço na realização da consulta, apenas mostra menos resultados.
|
|
|
|
|
|
Esse filtro é usado para ver, por exemplo, quais meses atingiram alguma meta.
|
|
|
|
|
|
Além dos problemas de cada alternativa ainda há questões para se considerar se é possível combinar filtros de métricas e dimensões, e como eles devem ser combinados e o problema conceitual. Ainda é ambguo o que significa um filtro por métrica, a primeira o segunda alternativa ?.
|
|
|
|
|
|
## Algumas consultas não podem ser realizadas
|
|
|
|
|
|
A linguagem de comunicação com o Blendb é simples, em contrapartida algumas consultas que poderiam ser feitas através da interface direta com o SGBD não pode ser feita a partir do Blendb. Esperamos que para o seu propósito, responder consultas analíticas, ele responsa todas, mas provavelmente responde apenas uma grande parte.
|
|
|
|
|
|
Para outras finalidades, por exemplo banco de dados transacional, ele seja ainda mais limitado, mas nenhum estudo foi feito para averiguar o comportamento do Blendb nesses casos.
|
|
|
|
|
|
## *Timeout*
|
|
|
|
|
|
Como o Blendb utiliza o protocolo HTTP, as consultas a eles estão sujeitas a um *timeout*, ou seja, se a consulta for muito lenta, nenhum dado será exibido ao usuário, diferente dos SGBDS que respondem, mesmo quando a consulta demora dias. É um fato que quando a consulta é muito granular a resposta será lenta.
|
|
|
|
|
|
Embora seja possível aumentar esse tempo de timeout existe outra alternativa. Ao invés de obter os dados através de apenas uma requisição, seria um processo em duas fases. Na primeira os dados são requisitados e a resposta é imediata, informando que a consulta já foi enviada ao banco de dados e enviando umidentificador dessa consulta. Para recuperar os dados, outra requisição é feita usando o identificador. Essa requsiição verifica se essa consulta jé terminou, se sim retorna os dados, caso contrário informa quanto tempo (estimado) para terminar a consulta.
|
|
|
|
|
|
Essa é uma alternativa muito mais elegante, além de impedir que multiplos usuários enviem a mesma consulta, basta verificar se uma consulta com o mesmo identificador já está executando.
|
|
|
|
|
|
Essa solução está pendente ainda por não se saber quantas consultas devem ser executadas ao mesmo tempo, por quanto tempo elas devem ser mantidas, como o resultado dessas consultas será armazenado no servidor/banco de dados/memória. Diversas decisões ainda devem ser tomadas em relação a esse problema.
|
|
|
|
|
|
## Compatibilidade com SGBDs
|
|
|
|
|
|
Atualmente, apenas um adaptador para Postgres (um adaptador SQL). Entretanto para utilizar outros bancos de dados, outros adaptadores devem ser escritos. Além do adaptador o banco de dados deve estar organizado (as tabelas e nomes de colunas) devem estar em um formato compátivel com o Blendb.
|
|
|
|
|
|
Adaptações incluem, por exemplo, a mesma métrica/dimensão ter o mesmo nome em todas as tabelas/agregações. Colunas que representam chaves estrangeiras estão incluídas nesse fato (que normalmente tem nomes diferentes das tabelas originais).
|
|
|
|
|
|
O Blendb assume que um nome (de métrica ou dimensão) é válido em todo o banco de dados, então se duas métricas/dimensões tem o mesmo nome, elas são a mesma. Mas se no Banco de dados tem dados diferentes sobre a mesma coluna, as respostas do Blendb se tornam inconsistentes.
|
|
|
|
|
|
Esse problema ocorre pois o Blendb não tem poder completo sobre o banco de dados. Controle completo significa inserção de dados e nomeação de tabelas, agregações e colunas. |
|
|
\ No newline at end of file |