Anda di halaman 1dari 6

ANALISIS DE BASE DE DATOS DB2 iSERIES

RedBooks es una fuente interesante de documentacin tcnica publicada por parte de IBM. La liga para acceder a este sitio es la siguiente: http://www.redbooks.ibm.com/ Aqu se podrn consultar manuales tcnicos de los productos de esta firma, as como documentos tcnicos sobre redes, programacin, TCP/IP y otros temas. ltimamente IBM est publicando en IBM Redbooks cada vez ms interesantes y completos libros y guas en formato PDF. Tal es el caso de la siguiente gua llamada Integrating DB2 Universal Database for iSeries with Microsoft ADO .NET

El objetivo de esta gua es dar a conocer a los programadores de Microsoft .NET las buenas prcticas de desarrollo para alcanzar la mejor puesta a punto y desempeo de las aplicaciones construidas bajo entornos DB2 Universal Database for iSeries de IBM Dentro de esta gua, se esquematiza la gran variedad de conectores existentes para poder conectarnos a la base de datos DB2 dentro de entornos OS/400(iSeries)

La decisin de cual conector debemos elegir y por qu, depende de muchas situaciones, incluido el hardware. Sin embargo la recomendacin que hace este documento para la seleccin del conector ms eficiente en plataformas Windows se esquematiza en el siguiente grfico:

Como se podr visualizar el mejor rendimiento se obtiene utilizando tecnologa ADO.NET con el conector DB2 UDB for iSeries .NET Provider.

Apoyado en esta informacin, se procedi a realizar algunas pruebas de conexin utilizando dicho conector; con la finalidad de compararlo contra el conector ODBC .Net Data Provider que se asemeja al conector ODBC utilizado por Delphi actualmente. La arquitectura comparativa de ambos conectores se detalla a continuacin. Como se puede observar en el grfico, el conector ODBC .Net Data Provider depende de un componente conocido como ODBC Driver, el cual resta velocidad y rendimiento al momento de intentar conectarse a la base de datos DB2 del iSeries, debido a que necesita de un driver intermediario para realizar dicha conexin .

En contraste el conector DB2 UDB for iSeries .NET Provider tiene un mtodo de acceso directo (en cierta forma nativo) para la base de datos DB2 del iSeries, lo que lo hace la ms rpido.

Con base a este fundamento, se procedi a realizar las pruebas de estrs en el servidor de base de datos DB2 iSeries. Las pruebas de estrs realizadas fueron las siguientes: 1. Abrir conexiones a la base de datos DB2 iseries sin cerrarlas utilizando el conector DB2 UDB for iSeries .NET Provider 2. Abrir conexiones a la base de datos DB2 iseries sin cerrarlas utilizando el conector ODBC .Net Data Provider 3. Abrir conexiones a la base de datos DB2 iseries cerrndolas utilizando el conector DB2 UDB for iSeries .NET Provider 4. Abrir conexiones a la base de datos DB2 iseries cerrndolas utilizando el conector ODBC .Net Data Provider El resultado de las pruebas 1 y 2 ocasiono que el brazo de disco del servidor de base de datos DB2 iSeries se elevara al 100%. Lo cual ocasiono lentitud en las aplicaciones que hacan de dichas conexiones. El resultado de las pruebas 3 y 4 ocasiono que el brazo de disco del servidor de base de datos DB2 iSeries tuviera un comportamiento normal, sin que se reflejara en el monitor de rendimiento.

Despus de analizar los resultados de las pruebas de estrs, suelen surgir las siguientes interrogantes: http://stackoverflow.com/questions/4111594/why-always-close-databaseconnection Las conexiones a bases de datos consumen gran cantidad de recursos?, es esto correcto o no? Por qu siempre cerrar una conexin de base de datos en las aplicaciones si se tienen que abrir de nuevo? Se puede hacer esta conexin disponible a nivel global a travs de las aplicaciones para que otras clases y mtodos puedan volver a utilizarla? Respuesta: Usted no debe hacer eso. Usted debe: 1) Abrir las conexiones lo ms tarde posible 2) Cerrar las conexiones tan pronto como sea posible La misma conexin se devuelve al pool de conexiones. Las conexiones son un recurso limitado. Cualquier nueva conexin que se establece y que tiene exactamente la misma cadena de conexin se puede volver a usar desde el pool de conexiones La recomendacin es cerrar siempre la conexin cuando terminemos de utilizarla, para que la conexin se devuelva al pool de conexiones. Las conexiones que no se cierran explcitamente no pueden ser aadidas o devueltas al pool de conexiones. Algunas recomendaciones y buenas practicas estan contenidas en estas referencias: http://www.15seconds.com/issue/040830.htm http://ondotnet.com/pub/a/dotnet/2004/02/09/connpool.html

CONCLUSION Aunque las pruebas de estrs no fueron realizadas con tecnologa Delphi, se logro simular el comportamiento de lentitud en las aplicaciones que hecen uso de dichas conexiones. Dicho comportamiento se empezo a notar conforme se iban abriendo conexiones persistentes (sin cerrar la conexin)a la base de datos DB2 iSeries. Sin embargo tambin se logro comprobar que el conector DB2 UDB for iSeries .NET Provider es la forma ms eficiente (desde tecnologa .NET) de conectarnos a la base de datos DB2 iSeries. Por lo que se podra investigar si existe algn otro conector en Delphi que funcione de manera ms eficiente que el conector ODBC actualmente utilizado. La tecnologa .NET permite abrir y cerrar conexiones sin que el costo de la base de datos sea tan alto. Esto es controlado por el Framework de .NET gracias al pool de conexiones de ADO.NET,

habra que revisar si Delphi cuenta con esta caracterstica para que el costo de abrir y cerrar conexiones no sea tan alto.