O que é uma consulta Ad Hoc em bancos de dados

Consulta Ad Hoc SQL

Recebi recentemente essa dúvida de um estudante de bancos de dados:

Boa tarde, Professor! 
 
Sou estudante de banco de dados e atualmente estou lendo o livro Sistema de Banco de Dados. Projeto, Implementação e Administração inscrito por Carlos Coronel e‎ Robert Peter . 
E neste livro fala de um consulta ad hoc, pelo que entendi são consultas que traz um valor definido pela condição que você informa como o valor > (maior) de alguma coisa. Pesquisei na internet e os assuntos estão relacionados a BI, mineração de dados, mais nada explicando claramente o que é. 
 
Já ouviu falar nessa consulta ?

Bem, vamos explicar do que se tratam as consultas ad hoc.

Uma Consulta Ad Hoc é um tipo de consulta SQL em um banco de dados que é criada na hora, no momento em que surge uma necessidade, a partir de um requisito específico (que não seja generalizável, ou seja, utilizável em mais de um caso) e que não é salva no SGBD (como por exemplo fazemos com procedimentos armazenados, funções ou scripts) para que seja reutilizada posteriormente.

Esse tipo de consulta nasce de solicitações não-planejadas, cuja necessidade não fora prevista com antecedência, surgindo de momento.

No geral, solicitações não-planejadas são características de aplicações para apoio à decisão, como aplicações para BI (Business Intelligence) ou Data Mining (Mineração de Dados) e por isso as consultas ad-hoc são muito comuns em sistemas desse tipo. As consultas ad hoc são projetadas para um propósito específico, ao contrário das consultas pré-definidas, como um procedimento armazenado, que fica armazenado no banco de dados.

Já uma solicitação planejada é uma solicitação para a qual a necessidade fora prevista com antecedência em relação ao momento em que ela será efetivamente executada. Por exemplo, pense em funções ou stored procedures embutidas em um banco de dados durante seu desenvolvimento.

A expressão Ad hoc é uma expressão em latim que significa "para este propósito".  Ou seja, a consulta é criada apenas para satisfazer aquela necessidade específica, aquele propósito, em um momento específico.

Uma consulta Ad Hoc pode ser criada de várias formas, por exemplo diretamente de forma manual em um processador de linguagem de consultas/scripts (SSMS / phpMyAdmin SQL, etc), linha de comandos, gerada dinamicamente em uma aplicação, etc.

Uma consulta ad hoc não fica armazenada no banco de dados, e o motor do banco deve sempre efetuar parsing, criar planos de execução, etc. ao executar essa consulta - e por isso, acabam sendo consultas não-otimizadas.

Consultas Dinâmicas

Se a consulta ad hoc for criada usando uma string dinâmica (por exemplo, em um script PHP) podemos chamá-la simplesmente de Consulta Dinâmica.

As consultas dinâmicas são consideradas consultas ad-hoc porque também não consistem em declarações SQL criadas como procedimentos armazenados, por exemplo. As consultas dinâmicas são executadas a partir de uma aplicação, geralmente recebendo dados a partir de parâmetros, ao passo que consultas simplesmente "ad-hoc" são escritas e executadas em um SGBD, como o SQL Server Management Studio.

Por exemplo, uma linha de código em C# que efetua conexão ao banco de dados e realiza uma consulta com SELECT em uma tabela desse banco é uma consulta ad hoc dinâmica.

São criadas para obtermos informação quando surge a necessidade, e consistem em declarações SQL construídas dinamicamente.

Segurança

Um problema que pode surgir ao usarmos consultas ad hoc é que elas podem ser vulneráveis à ataques de SQL Injection (injeção de SQL), pois os objetos do banco de dados acabam, por vezes, por ficarem expostos ao executarmos esse tipo de consulta. Assim, é indicado nesse caso o uso de parâmetros ao criar a consulta, pois isso ajuda a proteger objetos do banco.

Melhor ainda, se for possível, é criar procedimentos armazenados no SGBD, que são muito menos vulneráveis a esse tipo de ataque.

Bibliografia

Date, C. J; Introdução a Sistemas de Bancos de Dados. 8ª Edição. Editora Elsevier. 14/04/2004

Nielsen, P; Parui, U; White, M; Microsoft SQL Server 2008 Bible. 1ª Edição. Editora Wiley. 31/08/2009

 

Sobre Fábio dos Reis (1262 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*