... | ... | @@ -7,9 +7,9 @@ Quando um filtro é aplicado em uma dimensão, o valor do filtro é simplesmente |
|
|
|
|
|
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.
|
|
|
Na primeira alternativa os 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.
|
|
|
Como a agregação escolhida sempre seria a mesma, não há problema de consistência. Todavia, essa solução inviabiliza 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.
|
|
|
|
... | ... | @@ -21,11 +21,11 @@ Essa alternativa não foi implementada pois ela não reduz o esforço na realiza |
|
|
|
|
|
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 ?.
|
|
|
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 é ambíguo 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.
|
|
|
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 responda 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.
|
|
|
|
... | ... | @@ -33,9 +33,9 @@ Para outras finalidades, por exemplo banco de dados transacional, ele seja ainda |
|
|
|
|
|
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.
|
|
|
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 um identificador 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 é uma alternativa muito mais elegante, além de impedir que múltiplos 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.
|
|
|
|
... | ... | |