Depois de instalar o InfoSphere Optim pureQuery Runtime, você pode implementar os aplicativos Java ativados para pureQuery ou pureQuery para ambientes de produção. Também é possível desenvolver aplicativos DB2 CLI
e Microsoft .NET.
Recursos para aplicativos
Java
Para aplicativos que usam a API pureQuery, o InfoSphere Optim pureQuery oferece estes recursos:
- Fornece uma única API que você pode usar para executar instruções SQL nos bancos de dados, coleções em memórias e objetos do iterador
A plataforma Java fornece uma enorme quantidade de estruturas de dados e APIs para o processamento de coleções em memórias e dados externos de várias origens. Cada um desses recursos é perfeitamente adequado para solucionar um tipo específico de problema. O pureQuery
também possui um conjunto exclusivo de interfaces para recuperar e modificar os dados nas coleções. Por exemplo, o pureQuery fornece uma API
para Matrizes, Listas, Mapas e Iteradores Java. Cada consulta de API e, em alguns casos, atualize os dados na coleção.
Da mesma
forma, a API JDBC fornece um meio de utilizar SQL para acessar objetos relacionais
e outros objetos DataSource JDBC externos.
No entanto, o pureQuery permite que um aplicativo acesse todas essas origens
de dados individualmente ou em combinação com uma linguagem de consulta única e
bastante conhecida.
- Fornece um modelo de programação simples para o acesso a dados
- O pureQuery é executado como uma camada thin sobre JDBC e simplifica
consultas, atualizações, chamadas para procedimentos armazenados e outras
tarefas associadas ao acesso aos bancos de dados. O pureQuery é executado no Java 2 Platform, Standard Edition
5.0 (J2SE 5.0) e no Java Platform,
Standard Edition 6 (Java SE
6).
- Mapeia automaticamente dados SQL para tipos de retorno com pouca intervenção do
desenvolvedor, mas permite que você forneça código customizado para mapeamentos complexos
- O pureQuery fornece mapeamento automático entre resultados de consultas SQL e objetos retornados
para muitos padrões de objetos Java. Para mapeamentos
complexos entre resultados de consultas e objetos Java, uma interface de saída passível de conexão que permite mapeamentos customizados.
Você pode criar e anotar beans que retornem os resultados das consultas SQL que contêm junções de tabelas.
Os resultados da consulta são retornados como um conjunto de beans que contêm instâncias de outros beans. A hierarquia dos beans reflete os relacionamentos de um para um e um para muitos dos resultados da consulta. Por exemplo, uma consulta contém uma junção entre uma tabela de funcionário e um departamento.
A consulta retorna os funcionários que são designados a departamentos diferentes.
Os resultados são retornados como um conjunto de beans de departamentos, em que cada instância do bean de departamento representa um departamento. Cada bean de departamento contém uma lista de beans de funcionários. Cada instância de um bean de funcionário contém informações de funcionários.
- Suporta o desenvolvimento de aplicativos SQL usando métodos anotados e métodos sequenciais.
- Métodos Anotados são suportados para a definição de seus próprios métodos em interfaces customizadas. Crie métodos
com definições que são anotados com instruções SQL. É possível desenvolver aplicativos que
seguem o padrão do Data Access Object (DAO) ao criar objetos de acesso a dados usando
os métodos anotados.
Métodos Sequenciais são suportados para que você possa se beneficiar dos métodos definidos na interface de dados fornecida pela IBM. Os métodos sequenciais são úteis para aplicativos que requerem a construção de instruções
SQL durante o tempo de execução do aplicativo. Com os métodos sequenciais, as instruções SQL são passadas como parâmetros nas chamadas de métodos e isso é semelhante à abordagem que é utilizada no JDBC.
O suporte é fornecido para o gerenciamento de instruções SQL executadas estatisticamente.
Você pode anotar seu código para agrupar as instruções SQL que são usadas em uma interface. É possível controlar o processo de ligação dos grupos.
É possível controlar as opções de ligação que são usadas pelo utilitário pureQuery StaticBinder. Você pode controlar os nomes que são gerados para os pacotes que contêm as instruções SQL.
- Suporta SQL dinâmico e estático no tempo de execução
- O código do pureQuery pode utilizar SQL dinâmica com um driver JDBC padrão
para SQL integrada e SQL ad hoc que não é conhecida até o tempo de execução.
O código do pureQuery também pode utilizar SQL estática quando o código utiliza
o estilo de programação de método anotado e bancos de dados DB2.
SQL estática possui estas vantagens:
- Evita o cache de instrução dinâmica
- A utilização de SQL estática reduz a contenção para o cache de instrução dinâmica
do DB2, que melhora o desempenho dos aplicativos que usam SQL dinâmica.
- Consistência dos caminhos de acesso
- SQL estática torna os tempos de resposta previsíveis e estáveis, bloqueando os
caminhos de acesso antes da execução de um aplicativo. Em contraste, os caminhos de
acesso para SQL dinâmica são calculados no tempo de execução.
- Potencial para melhora no desempenho dos aplicativos
- SQL estática pode melhorar o desempenho dos seus aplicativos.
- Como os planos de acesso são determinados antes do tempo de execução,
a necessidade de preparar instruções SQL no tempo de execução é eliminada.
- Como cada instrução não precisa ser preparada e descrita, existe menos
tráfego de rede entre aplicativos clientes e servidores de bancos de dados.
- SQL estática obriga explicitamente os tipos de dados para variáveis ou
parâmetros de host que são utilizados em predicados. Essa obrigação garante
que dados de entrada correspondam aos tipos de destino no banco de dados.
- Maior segurança
- Você pode conceder aos usuários o privilégio EXECUTE em um pacote DB2 em vez de conceder privilégios de usuário nos objetos de banco de dados.
- Facilidade na revisão de pacotes
- A criação de versões de pacotes do DB2 permite que
você religue os pacotes sem o risco de perder seus melhores caminhos de acesso anteriores.
- Suporta conexões JDBC Tipo 2 quando você executa aplicativos pureQuery no z/OS
- Como o driver JDBC Tipo 2 é uma combinação de código nativo e Java,
geralmente as conexões do Tipo 2 apresentam melhor desempenho do que as conexões do Tipo 4.
Seus aplicativos que não usam a API pureQuery podem beneficiar-se da otimização do cliente, que é diferente de outras tecnologias que suportam a execução de SQL estaticamente:
- A otimização do cliente pureQuery não usa um pré-processador, diferente da linguagem de programação COBOL que usa um pré-processador para
SQL integrada.
- A otimização do cliente pureQuery não usa um conversor ou customizador, diferente de SQLJ.
- Você não precisa codificar permanentemente instruções SQL na origem de um aplicativo.
Em vez de exigir estes componentes ou modificações em seu código, a otimização do cliente muda como um driver JDBC interage com um aplicativo.
- Armazenamento seguro de dados do pureQuery
- As informações de configuração do pureQuery, os dados do pureQueryXML e os dados SQL
capturados podem ser armazenados em um local seguro e acessados pelo pureQuery
Runtime conforme necessário. O pureQuery Runtime pode ser configurado para recuperar os dados
do pureQuery a partir de locais seguros. O pureQuery Runtime pode armazenar em um local
seguro os dados SQL capturados a partir de aplicativos ativados pelo pureQuery
que usam a otimização de cliente pureQuery.
- Suporte ao registro especial do DB2
- Quando as instruções SQL são capturadas de um aplicativo, a otimização do cliente pureQuery
controla as informações de registro especiais. A otimização do cliente pureQuery grava os valores de registros especiais que são comumente usados e que podem afetar o comportamento da instrução SQL. Em alguns casos, quando uma instrução SQL idêntica é emitida duas vezes, o comportamento da instrução poderá diferir se o valor de um
registro especial for alterado entre a primeira e a segunda vez em que a instrução for executada.
O utilitário pureQuery Configure pode gerar opções de ligação com base nas informações de registro
especial que são registradas com as instruções SQL capturadas. Use a opção do utilitário Configure -optionsFileForBind para
criar um arquivo de opções StaticBinder que contém as opções de ligação que são baseadas
nas configurações de registro especial que são registradas quando as instruções são
capturadas. O arquivo de opções também contém informações e avisos sobre os
conjuntos de instruções, instruções SQL e informações de registro especial no
arquivo pureQueryXML.
As informações no arquivo ajudam a especificar um conjunto
de opções de ligação para que, quando uma instrução SQL é executada estaticamente, o comportamento
seja semelhante quando ela for emitida a partir do aplicativo e executada dinamicamente. Você especifica as opções de ligação com o utilitário
pureQuery StaticBinder quando ligar os pacotes do DB2 que contém as instruções SQL.
O pureQuery Runtime Versão 2.2.0.3 e versões posteriores
registram informações de registro especial em um arquivo pureQueryXML. Se o seu arquivo
pureQueryXML foi criado com uma versão do pureQuery Runtime
anterior à Versão 2.2.0.3, poderá ser necessário capturar algumas instruções
SQL novamente para registrar as informações de registro especial.
- Gerenciar facilmente os arquivos pureQueryXML
- Os seguintes recursos o ajudam a gerenciar instruções SQL e conjuntos de instruções em
um arquivo pureQueryXML:
- O utilitário Configure pode agrupar instruções SQL por texto na instrução
SQL, como os nomes de tabelas ou de colunas, ou por uso de registro especial.
- O utilitário Configure poderá excluir instruções SQL de um arquivo pureQueryXML
se a instrução não tiver sido emitida pelo aplicativo por um número de dias
especificado. O pureQuery Runtime atualiza a hora em que uma instrução
SQL foi emitida de um aplicativo enquanto a propriedade do pureQuery captureMode está configurada como ON.
- O utilitário Configure pode configurar o status dos conjuntos de instruções antes de
processar os arquivos pureQueryXML ou depois do processamento. O status
dos conjuntos de instruções controla se o utilitário Configure tenta modificar a
instrução. Se você usar o StaticBinder no arquivo pureQueryXML
para ligar as instruções SQL em um banco de dados DB2,
será necessário religar as instruções SQL no conjunto de instruções depois que o conjunto for
modificado.
- O utilitário Configure pode alterar os nomes de locais do banco de dados e nomes de esquemas para instruções SQL nos arquivos pureQueryXML.
- O utilitário StaticBinder pode manipular instruções SQL em um arquivo pureQueryXML quando o processo de ligação retornar um erro para a instrução. O utilitário pode marcar a instrução como inválida ou removê-la do arquivo.
Se uma instrução for marcada como inválida, ela permanecerá no arquivo, mas será tratada como se seu atributo isBindable estivesse configurado como false.
É possível usar o utilitário Configure para marcar a instrução como válida ou para remover instruções que são marcadas como inválidas.
- Os utilitários Configure, Merge e StaticBinder podem executar a validação de esquema XML
nos arquivos de entrada pureQueryXML.
- O utilitário ManageRepository pode gerar um relatório que lista as diferenças entre os
dois arquivos pureQueryXML. É possível visualizar facilmente as mudanças feitas
em um arquivo pureQueryXML atualizado ao compará-lo com o arquivo original.
Recursos para os Aplicativos Call Level Interface (CLI)
C e C++
A Call Level Interface (CLI) é uma interface de programação de aplicativos C e C++
para acesso ao banco de dados relacional.
A CLI usa as chamadas de função para passar instruções SQL
dinâmicas como argumentos de função.
Depois de ativar a otimização do cliente pureQuery para um aplicativo CLI que se conecta a
um banco de dados DB2 ou Informix, você pode controlar as instruções SQL que são emitidas pelo aplicativo.
Por exemplo,
se o aplicativo se conectar a um banco de dados DB2, você poderá configurar o aplicativo para executar instruções SQL estaticamente com relação ao banco de dados. É possível controlar as instruções SQL que podem ser executadas com relação ao
banco de dados.
Os benefícios da otimização do cliente pureQuery incluem:
- Executar instruções SQL estaticamente com relação aos bancos de dados DB2.
- Diagnosticar problemas com instruções SQL com recursos para rastrear de volta para
o código de origem do aplicativo.
- Substituir instruções SQL de execução precária por instruções otimizadas.
- Reduzir o risco de ataques de injeção SQL ao executar um conjunto restrito de instruções SQL.
É possível executar instruções SQL e validá-las com o
comando db2cli do DB2.
É possível executar o comando db2cli com a opção exec
para executar ou validar as instruções SQL que estiverem em um arquivo. É possível especificar que as
instruções SQL no arquivo estejam preparadas, mas não executar para validar as instruções SQL. É possível capturar as instruções SQL que estiverem em execução ou validadas
pelo comando db2cli em um arquivo pureQueryXML.
Recursos para aplicativos
Microsoft
.NET
O InfoSphere Optim pureQuery Runtime para Linux, UNIX e Windows fornece suporte para melhorar a estabilidade, segurança e gerenciabilidade de aplicativos .NET,
incluindo aqueles aplicativos que são gravados em qualquer idioma baseado em .NET, como C# e VB.NET.
Os benefícios do pureQuery Runtime incluem:
- Melhorar a qualidade do serviço para aplicativos existentes
- Melhorar o desempenho
- Bloquear planos de acesso
- Aumentar a exatidão do planejamento de capacidade
- Obter mais valor dos investimentos existentes
- Aumentar o rendimento do sistema
- Acelerar a resolução de problemas
- Aprimorar a segurança
- Limitar o acesso do usuário
- Minimizar ataques
- Melhorar a prontidão da auditoria
Para obter informações sobre a utilização do pureQuery Runtime para Linux, UNIX e Windows com .NET, consulte http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.swg.im.dbclient.adonet.doc/doc/t0054569.html