aceleração de consultas Azure Data Lake Storage
A aceleração de consultas permite que as aplicações e arquiteturas de análise otimizem drasticamente o processamento de dados ao obter apenas os dados necessários para realizar uma determinada operação. Isto reduz o tempo e o poder de processamento necessários para obter informações críticas sobre os dados armazenados.
Descrição Geral
A aceleração de consultas aceita predicados de filtragem e projeções de colunas, que permitem que as aplicações filtrem linhas e colunas no momento em que os dados são lidos a partir do disco. Apenas os dados que cumprem as condições de um predicado são transferidos através da rede para a aplicação. Isto reduz a latência de rede e o custo de computação.
Pode utilizar o SQL para especificar os predicados de filtro de linha e as projeções de colunas num pedido de aceleração de consulta. Um pedido processa apenas um ficheiro. Por conseguinte, as funcionalidades relacionais avançadas do SQL, como associações e agrupar por agregados, não são suportadas. A aceleração de consultas suporta dados formatados em CSV e JSON como entrada para cada pedido.
A funcionalidade de aceleração de consultas não está limitada a Data Lake Storage (contas de armazenamento que têm o espaço de nomes hierárquico ativado). A aceleração de consultas é compatível com os blobs em contas de armazenamento que não têm um espaço de nomes hierárquico ativado. Isto significa que pode obter a mesma redução nos custos de computação e latência de rede quando processa dados que já armazenou como blobs em contas de armazenamento.
Para obter um exemplo de como utilizar a aceleração de consultas numa aplicação cliente, veja Filtrar dados com Azure Data Lake Storage aceleração de consultas.
Fluxo de dados
O diagrama seguinte ilustra como uma aplicação típica utiliza a aceleração de consultas para processar dados.
A aplicação cliente pede dados de ficheiros ao especificar predicados e projeções de colunas.
A aceleração de consultas analisa a consulta SQL especificada e distribui o trabalho para analisar e filtrar dados.
Os processadores leem os dados do disco, analisam os dados com o formato adequado e, em seguida, filtram os dados ao aplicar os predicados especificados e as projeções de colunas.
A aceleração de consultas combina as partições horizontais de resposta para transmitir novamente para a aplicação cliente.
A aplicação cliente recebe e analisa a resposta transmitida em fluxo. A aplicação não precisa de filtrar outros dados e pode aplicar diretamente o cálculo ou transformação pretendido.
Melhor desempenho a um custo mais baixo
A aceleração de consultas otimiza o desempenho ao reduzir a quantidade de dados que são transferidos e processados pela sua aplicação.
Para calcular um valor agregado, as aplicações normalmente obtêm todos os dados de um ficheiro e, em seguida, processam e filtram os dados localmente. Uma análise dos padrões de entrada/saída das cargas de trabalho de análise revela que as aplicações normalmente requerem apenas 20% dos dados lidos para efetuar qualquer cálculo específico. Esta estatística é verdadeira mesmo depois de aplicar técnicas como a eliminação de partições. Isto significa que 80% desses dados são transferidos desnecessariamente pela rede, analisados e filtrados por aplicações. Este padrão, concebido para remover dados desnecessários, implica um custo de computação significativo.
Apesar de o Azure ter uma rede líder do setor, tanto em termos de débito como de latência, a transferência desnecessária de dados através dessa rede ainda é dispendiosa para o desempenho da aplicação. Ao filtrar os dados indesejados durante o pedido de armazenamento, a aceleração de consultas elimina este custo.
Além disso, a carga da CPU necessária para analisar e filtrar dados desnecessários requer que a aplicação aprovisione um número maior e VMs maiores para fazer o seu trabalho. Ao transferir esta carga de computação para aceleração de consultas, as aplicações podem realizar poupanças de custos significativas.
Aplicações que podem beneficiar da aceleração de consultas
A aceleração de consultas foi concebida para arquiteturas de análise distribuída e aplicações de processamento de dados.
As arquiteturas de análise distribuída, como o Apache Spark e o Apache Hive, incluem uma camada de abstração de armazenamento na arquitetura. Estes motores também incluem otimizadores de consultas que podem incorporar conhecimentos sobre as capacidades do serviço de E/S subjacente ao determinar um plano de consulta ideal para consultas de utilizador. Estas arquiteturas estão a começar a integrar a aceleração de consultas. Como resultado, os utilizadores destas arquiteturas veem uma latência de consulta melhorada e um custo total de propriedade mais baixo sem terem de fazer alterações às consultas.
A aceleração de consultas também foi concebida para aplicações de processamento de dados. Normalmente, estes tipos de aplicações realizam transformações de dados em grande escala que podem não levar diretamente a informações de análise, pelo que nem sempre utilizam arquiteturas de análise distribuída estabelecidas. Muitas vezes, estas aplicações têm uma relação mais direta com o serviço de armazenamento subjacente, para que possam beneficiar diretamente de funcionalidades como a aceleração de consultas.
Para obter um exemplo de como uma aplicação pode integrar a aceleração de consultas, veja Filtrar dados com Azure Data Lake Storage aceleração de consultas.
Preços
Devido ao aumento da carga de computação no serviço Azure Data Lake Storage, o modelo de preços para utilizar a aceleração de consultas difere do modelo de transação normal Azure Data Lake Storage. A aceleração de consultas cobra um custo pela quantidade de dados analisados, bem como um custo para a quantidade de dados devolvidos ao autor da chamada. Para obter mais informações, veja preços de Azure Data Lake Storage Gen2.
Apesar da alteração ao modelo de faturação, o modelo de preços da Aceleração de consultas foi concebido para reduzir o custo total de propriedade de uma carga de trabalho, dada a redução dos custos de VM muito mais caros.