pureQuery Runtime
se puede utilizar con aplicaciones Java™. pureQuery Runtime
también se puede utilizar con DB2 ODBC/CLI
y con aplicaciones Microsoft .NET.
Las características dependen del tipo de aplicaciones:
Características para aplicaciones de la API de Java pureQuery
pureQuery Runtime proporciona
características de la API además de características de optimización de clientes.
Para
aplicaciones que utilizan la API de pureQuery, InfoSphere Optim pureQuery Runtime ofrece
estas características:
- Una API única que puede utilizar para ejecutar sentencias SQL en bases de datos,
en colecciones en memoria y en objetos de iterador
La plataforma Java proporciona multitud
de estructuras de datos y API para procesar colecciones en memoria, así como datos
externos de distintos orígenes. Cada una de estas características es perfectamente
adecuada para resolver un tipo específico de problema. pureQuery también tiene un conjunto de interfaces exclusivas
para recuperar y modificar los datos dentro de las colecciones. Por
ejemplo, pureQuery proporciona
una API para matrices, listas, mapas e iteradores de Java. Cada API consulta y, en algunos casos, actualiza
los datos de la colección.
De forma similar, la API JDBC proporciona un medio para utilizar SQL
para acceder a objetos relacionales y otros objetos externos de DataSource JDBC.
Sin embargo, pureQuery permite
que una aplicación acceda a todos estos orígenes de datos, de forma individual
o en combinación, con un único lenguaje de consulta conocido.
- Un modelo de programación simple para el acceso a datos
- pureQuery se ejecuta como una capa fina
en la parte superior de JDBC y simplifica las consultas, las actualizaciones, las llamadas a procedimientos almacenados y otras tareas asociadas con el acceso
a bases de datos de pureQuery. pureQuery se ejecuta en Java 2 Platform, Standard Edition 5.0 (J2SE
5.0) y en Java Platform,
Standard Edition 6 (Java SE
6).
- Correlación automática de datos SQL para devolver tipos sin apenas intervención del desarrollador
- pureQuery proporciona
correlación automática entre los resultados de la consulta SQL y los objetos devueltos para muchos
patrones de objetos Java. Para
correlaciones complejas entre los resultados de la consulta y los
objetos Java, existe una interfaz de salida que se puede conectar permite
correlaciones personalizadas.
Puede crear y anotar beans
que devuelven los resultados de consultas SQL que contienen uniones de tabla.
Los resultados de la consulta se devuelven como un conjunto de beans que contienen instancias
de otros beans. La jerarquía de estos beans refleja las relaciones de uno a uno o de uno a muchos
de los resultados de la consulta. Por ejemplo, una consulta contiene una unión entre
una tabla de empleados y una tabla de departamentos.
La consulta devuelve los empleados que están asignados a diferentes departamentos.
Los resultados se devuelven como un conjunto de beans de departamentos, donde cada instancia
del bean de departamento representa un departamento. Cada bean de departamento contiene
una lista de beans de empleados. Cada instancia de un bean de empleado contiene
información de empleado.
- Soporte al desarrollo de aplicaciones SQL que utilizan métodos anotados
y métodos incorporados
- Los métodos anotados están soportados para que pueda definir sus propios
métodos en interfaces personalizadas. Se pueden crear métodos
con definiciones anotadas con sentencias SQL. Se pueden desarrollar aplicaciones conformes al
patrón DAO (Data Access Object) creando objetos de acceso a datos con métodos
anotados.
Los métodos incorporados están soportados para
poder sacar provecho de los métodos definidos en la
interfaz Data suministrada por IBM. Los métodos incorporados
son útiles para las aplicaciones que necesitan que se construyan sentencias SQL
durante el tiempo de ejecución de la aplicación. Con los métodos incorporados, las sentencias SQL
se pasan como parámetros en invocaciones de método, lo que es similar al enfoque
de JDBC.
Se proporciona soporte para la gestión
de sentencias SQL que se ejecutan estáticamente.
Puede anotar el código para agrupar las sentencias SQL que se utilizan en una
interfaz. Puede controlar el proceso de enlace para los grupos.
Puede controlar las opciones de enlace que utiliza el programa de utilidad pureQuery StaticBinder y controlar los nombres que se generan para los paquetes que contienen las sentencias SQL.
- Soporte para SQL dinámico y estático en tiempo de ejecución
- El código de pureQuery puede utilizar
SQL dinámico con un controlador JDBC estándar tanto para el SQL incluido
como el SQL ad hoc no conocido hasta el tiempo de ejecución.
El código de pureQuery también puede utilizar SQL estático
cuando el código utilice el estilo de programación de método anotado y bases de datos de DB2. El SQL estático tiene tres ventajas:
- Evitar la caché de sentencia dinámica
- La utilización de SQL estático reduce la contienda por la memoria caché de sentencias dinámicas
de DB2, con lo que mejora el rendimiento de aplicaciones que utilizan
SQL dinámico.
- Coherencia de las vías de acceso del acceso
- El SQL estático hace que los tiempos de respuesta sean mas predecibles y estables debido al bloqueo de las vías de acceso
antes de que se ejecuten las aplicaciones. Por el contrario, las vías de acceso para el SQL
dinámico se calculan en tiempo de ejecución.
- Potencial para un rendimiento mejorado de sus aplicaciones
- El SQL estático puede mejorar el rendimiento de sus aplicaciones.
- Los planes de acceso se determinan antes del tiempo de ejecución, y no es necesario preparar
las sentencias de SQL en el tiempo de ejecución.
- No es necesario preparar ni describir cada sentencia, y por lo tanto
hay menos tráfico de redes entre las aplicaciones de clientes
y los servidores de bases de datos.
- El SQL estático aplica estrictamente tipos de datos para parámetros o variables de host
utilizados en predicados. Esta aplicación estricta garantiza que los datos de entrada
coinciden con los tipos de destino de la base de datos.
- Seguridad más estricta
- Puede otorgar a los usuarios el privilegio EXECUTE en un paquete
de DB2, en lugar de otorgar privilegios de usuario
sobre objetos de bases de datos.
- Facilitar la revisión de los paquetes
- Dado que puede crear varias versiones de cada paquete de DB2, puede volver a enlazar paquetes sin riesgo
de perder las vías de acceso anteriores y mejores.
- Soporte para conexiones JDBC de tipo 2 cuando se ejecutan aplicaciones pureQuery en z/OS
- Dado que el controlador JDBC de tipo 2 es una combinación de Java y código nativo, las conexiones de tipo 2 tienen generalmente un mejor rendimiento que las conexiones de tipo 4.
- Soporte para plataformas e infraestructuras para el desarrollo de la aplicación de acceso de datos
- pureQuery Runtime admite
las siguientes plataformas e infraestructuras:
- Java
- Java Persistence API (JPA)
- Spring
- Hibernate
- iBatis
Características para aplicaciones Java
habilitadas con optimización de clientes pureQuery
Las aplicaciones que no utilizan la API de pureQuery pueden sacar provecho de la optimización del cliente,
que es diferente de otras tecnologías que soportan la ejecución
de SQL estáticamente en una base de datos DB2:
- La optimización de clientes de pureQuery
no utiliza un preprocesador, a diferencia del lenguaje de programación COBOL,
que utiliza un preprocesador para el SQL incorporado.
- La optimización de cliente de pureQuery
no utiliza un traductor ni un personalizador, a diferencia de SQLJ.
- No es necesario codificar sentencias de SQL en la fuente de una
aplicación.
En lugar de necesitar estos
componentes o cambios en el código, la optimización del cliente
cambia la forma en que un controlador JDBC interactúa con una
aplicación. La optimización de cliente de pureQuery
ofrece estas características:
- Almacenamiento seguro de los datos de pureQuery
- Se puede almacenar la información de configuración de pureQuery,
los datos de pureQueryXML que incluyen datos de SQL utilizados por pureQuery Runtime, y los datos SQL capturados
en una ubicación segura y a los que accede pureQuery Runtime cuando resulte necesario. pureQuery Runtime se puede configurar para recuperar los datos
de pureQuery
de las ubicaciones seguras. pureQuery Runtime
puede almacenar en una ubicación segura los datos de SQL capturados desde aplicaciones
con pureQuery habilitado que utilizan la optimización de clientes de pureQuery.
- Soporte para registro especial de DB2
- Cuando se capturan sentencias SQL desde una aplicación, la optimización de clientes de pureQuery realiza un seguimiento de información de registros especiales de DB2
que utilizan las sentencias SQL. La optimización de cliente de pureQuery registra los valores de los registros
especiales de los registros especiales que se utilizan normalmente
y que pueden afectar al comportamiento de la sentencia SQL. En algunos casos, cuando se emite dos veces la misma
sentencia SQL, el comportamiento puede diferir si el valor de un registro
especial se cambia entre la primera y la segunda vez que
se ejecuta.
El programa de utilidad pureQuery Configure
option -optionsFileForBind puede generar un archivo de opciones StaticBinder
que contiene opciones de enlace en función de la información de registro especial
que se registra con las sentencias SQL capturadas. El archivo de opciones contiene también información y avisos sobre los conjuntos de sentencias, las sentencias SQL y la información de registro especial en el archivo pureQueryXML.
La información del archivo le ayuda a especificar un conjunto de opciones de enlace para que, cuando la sentencia SQL se ejecute estáticamente, el comportamiento
de la sentencia sea similar a cuando se emite
desde la aplicación y se ejecuta dinámicamente. Con el programa de utilidad
StaticBinder de pureQuery,
las opciones de enlace se especifican al vincular los paquetes de DB2
que contienen las sentencias SQL.
- Archivos pureQueryXML fáciles de gestionar
- Las características siguientes ayudan a gestionar sentencias SQL y conjuntos de sentencias
en un archivo pureQueryXML:
- El programa de utilidad Configure puede agrupar sentencias SQL según el texto que contienen,
como nombres de tabla o columna, o según el uso de registro especial.
- El programa de utilidad Configure puede suprimir sentencias SQL de un archivo pureQueryXML
si la aplicación no ha emitido la sentencia durante un número de días
especificado. pureQuery Runtime
puede realizar un seguimiento cuando se ha emitido una sentencia SQL desde una aplicación y
actualizar dicha información en el archivo pureQueryXML.
- El programa de utilidad Configure puede definir el estado de un conjunto de sentencias antes o después de procesar los archivos pureQueryXML. El estado de la sentencia controla si el programa de utilidad Configure intenta modificar la sentencia.
- El programa de utilidad Configure puede cambiar los nombres de ubicación de la base de datos y los
nombres de esquema para sentencias SQL en archivos QueryXML.
- El programa de utilidad StaticBinder puede manejar sentencias SQL en un archivo pureQueryXML
cuando el proceso de enlace devuelva un error para la sentencia. El programa de utilidad
puede marcar la sentencia como no válida o eliminarla del archivo.
Si una sentencia se marca como no válida, permanece en el archivo
pero no se procesa como una sentencia vinculable. Puede utilizar el programa de utilidad Configure
para que la sentencia sea válida y vinculable o
para eliminar una sentencia no válida.
- Los programas de utilidad Configure, Merge y StaticBinder puede ejecutar la validación de esquemas XML en los archivos pureQueryXML de entrada.
- El programa de utilidad ManageRepository puede generar un informe que indique las diferencias
entre dos archivos pureQueryXML. Puede ver fácilmente los cambios que se han
realizado en un archivo pureQueryXML actualizado compartiéndolo con el archivo
original.
Características para aplicaciones ODBC/CLI y aplicaciones .NET
Call level interface (CLI)
es una interfaz de programación de aplicaciones C y C++
para acceso a base de datos relacionales.
CLI utiliza las llamadas a funciones para pasar sentencias SQL dinámicas como
argumentos. Las aplicaciones .NET
incluyen aplicaciones que están escritas en cualquier lenguaje basado en .NET,
como C# y VB.NET.
Después de habilitar la optimización de cliente de pureQuery para un CLI
o una aplicación .NET que se conecta con una base de datos DB2
o una base de datos Informix, puede controlar
las sentencias SQL que emite la aplicación.
Por ejemplo, si la aplicación se conecta con una base de datos DB2, se puede configurar la aplicación para ejecutar sentencias SQL estáticamente contra la base de datos. Se pueden controlar las sentencias SQL que están autorizadas a ejecutarse contra la base de datos.
Entre las ventajas
de la optimización de clientes de pureQuery
se incluye:
- Ejecutar sentencias SQL de forma estática contra bases de datos DB2.
- Diagnosticar problemas en las sentencias SQL con recursos que permiten realizar un rastreo y retroceder hasta el código fuente de la aplicación.
- Sustituir las sentencias SQL de bajo rendimiento por sentencias optimizadas.
- Reducir el riesgo de ataques de inyección de SQL ejecutando un conjunto restringido de sentencias SQL.
Para aplicaciones de CLI, puede ejecutar
sentencias SQL y validar sentencias SQL con el mandato db2cli de DB2. Especifique
que las sentencias SQL estén preparadas, pero que no se ejecuten para validación.
Puede capturar las sentencias SQL que se ejecutan o validan en un archivo
pureQueryXML.
Para obtener más información sobre cómo desarrollar aplicaciones de DB2 con .NET, consulte Desarrollo de la aplicación ADO.NET.
Para obtener más información sobre
cómo desarrollar aplicaciones de DB2
con CLI, consulte Introducción a interfaz a nivel de llamada de DB2
y ODBC.