180
22 ServerNEWS MAYO 2008
www.help400.es
www.help400.es
MAYO 2008 ServerNEWS 23
editorial
Feliz año 2008
C
on este número de la revista acabado en cero iniciamos un nuevo año, el 2008, un año bisiesto en el que de una parte tendrán lugar los XXIX Juegos Olímpicos de Verano que en esta ocasión se celebrarán en Pekín, capital de la República Popular China; y de otra, la Exposición Internacional de Zaragoza que, bajo el lema de “Agua y desarrollo sostenible” será un acontecimiento internacional motivado por la relación del agua y las comunidades humanas, en un proyecto global, eficiente y solidario. Unos acontecimientos que en la Redacción nos han hecho revivir con cierta nostalgia aquel año 1992 en el que el AS/400, como una estrella más de los Juegos Olímpicos de Barcelona, fue fotografiado en el centro del estadio olímpico exclusivamente para ser portada de esta revista (número 25), justo un mes antes de que se iniciaran las Olimpíadas de aquel año. Desde entonces han pasado muchos años, tantos como para poder celebrar en el 2008 el venteabo aniversario del AS/400. IBM continua siendo, a fecha de hoy, una de las mayores empresas del mundo. Y dentro de ella, la línea de productos del System i –actual sucesor de aquel mítico AS/400 de 1988– sigue siendo una buena fuente de ingresos para IBM. Por ambas razones creemos que, durante el año que este número estrena, IBM sabrá consolidar el System i en el mercado de servidores empresariales y hará evidente que los erráticos movimientos de los últimos tiempos no han sido más que una calculada estrategia para hallar la posición más favorable frente a sus competidores.
Imagen de la portada: Mike Friehauf Suscripción: Anual (10 números al año, no en Julio y Agosto). España: 96 euros (IVA incluido). Extranjero: 180 $ USA (incluido el envío por Correo Aéreo). Se distribuye a final de mes. © Publicaciones HELP400, S.L. Se prohibe la reproducción total o parcial de los artículos aparecidos en este número sin la autorización expresa por escrito de la empresa editora, titular del Copyright. Todos los derechos reservados en cualquier idioma. ServerNEWS es una publicación independiente de grupos de usuarios y/o de distribuidores de marcas. De las ideas expuestas en los artículos firmados son responsables sus autores. Corresponde al lector el asegurar que las noticias, técnicas y procedimientos descritos son adecuados para su instalación. Publicaciones HELP400 S.L. no asume ninguna garantía ni implícita ni explicitamente. La empresa editora no se responsabiliza de la asiduidad en la distribución gratuita a las empresas españolas equipadas con S/3X o AS/400. IBM y AS/400 son marcas registradas por International Business Machines.
www.help400.es
No, no se trata sólo del deseo de un colectivo de profesionales informáticos apasionados por su sistema. Como veremos en este número, el System i continua siendo una de las mejores arquitecturas del mundo, y la solidez de su sistema operativo, así lo hacen suponer. El RPG sigue siendo “un valor seguro” para el desarrollo de aplicaciones empresariales estables y modernas, puesto que es el único lenguaje de los actuales concebido exclusivamente con esa finalidad. Su continua evolución y modernización jamás le ha impedido ser respetuoso con todo lo desarrollado previamente que, en más de una ocasión, se remonta a los tiempos de los S/36 y S/38, los antecesores del AS/400. Y de otra parte, el inminente anuncio de la V6R1 de su sistema operativo y todas sus novedades, de las que en el artículo “V6R1 Navigator para i5/OS: un sueño hecho realidad” se hace un mínimo anticipo, son un claro exponente de que en IBM Rochester siguen apostando fuerte por este sistema. En ServerNEWS, después haber preparado minuciosamente el contenido de 180 números, hemos sido, somos y seguiremos siendo fieles testigos de esta evolución. Por eso le deseamos un feliz año 2008 al System i de IBM.
Antonio Montía a.montia@help400.com ENERO 2008 ServerNEWS 3
sumario ANTES HELP400, LA REVISTA PARA EL PROFESIONAL DE LOS S/3X Y AS/400
equipo editorial
en portada
Director: Antonio Montía Redacción: Carlos Bell, Alberto C. Blanch, Equipo internacional de iSeries NEWS Colaboradores habituales: Jaime Gustavo Estany, José Mª Martín, Lluís Peiret Traducciones: Pere J. Francisco Brumós
10
por Scott Klement
producción
Hace más de 40 años que el RPG fue diseñado expresamente para el desarrollo de aplicaciones empresariales. Hoy en día, para aprovechar esta característica única que lo diferencia del resto de lenguajes, sólo es necesario seguir una serie de “reglas de oro” al escribir un programa en ILE RPG que sea actual.
Realización: Media Limits S.L. Maquetación: Ramiro Esteve Coll Impresión: G2B gràfic S.L. Distribución: Unipost S.A.
administración Suscripciones : Nuria Navarro Publicidad: Tel. 34- 932 310 049 Fax: 34-932 310 309 Servicio HelpNet: www.help400.es
edita PUBLICACIONES
Deposito legal: B-2757-90 I.S.S.N. 1698-4501 APTDO. DE CORREOS 8003 - 08080 Barcelona Gran Vía Corts Catalanes, 715, Entlo. 3ª 08013 - Barcelona Tel.: 932 310 049 E-mail: help400@help400.com
14
Director General: Alberto C. Blanch Llangostera
- iSeries NEWS www.pentontech.com Group Publisher/Editor: Wayne Madden Group Editorial Director: Dale Agger Penton Technology Media Darrell C. Denny, President Penton Media, Inc. David Nussbaum, Chief Executive Officer
LATINOAMERICA
8
Puede que la “i” sea de “indeciso” por Sean Chandler Hace años que en sus estrategias de consolidación de líneas de fabricación, IBM inició la convergencia del hardware de los System i y System p. Sin embargo, por alguna que otra razón IBM no es capaz de decidirse. ¿Es esta indecisión la que marca la “i” de nuestra plataforma?
Belice, El Salvador, Guatemala y Honduras VIACOMP 6ª Avenida. "A" 2-83 Zona 10 Ciudad de Guatemala, GUATEMALA 01010 Telf. 502-360-0358 y 360-0350 Fax 502-332-33694 email: viacomp@guate.net www.viacomp.net
4 ServerNEWS ENERO 2008
por Don Denoncourt
opinión
distribuidores
Perú COMMON PERU Bajada Balta 131, Of. 10, 2º Piso Miraflores Lima 18, PERU Telf. y Fax: 46 31 32
Asimilando el desarrollo del software Como programadores, sumergirnos totalmente en el código de un programa nos permite entender como funciona y abordar con éxito su mantenimiento. Además, para aquellos que estén aprendiendo Java, PHP o .NET, estudiar aplicaciones existentes es una estrategia de aprendizaje fantástica.
Publicado con la participación de
Paraguay ANGEL LIERNUR E HIJO P.O. BOX 2448 ASUNCION - PARAGUAY 427661@telesurf.com.py e-mail: aliernur@yahoo.com
Las reglas de oro de RPG
programación y sistemas
20
Cómo usar iSeries Navigator para analizar la caché de planes de SQL por Mike Cain En V5R4, iSeries Navigator permite acceder de forma gráfica a la información disponible en la memoria caché de planes del motor de consultas de SQL. En el artículo se exponen las cinco formas imprescindibles de analizar esta información que siempre está activada y siempre está ahí. www.help400.es
Nº 180 ENERO 2008
www.help400.es
management
24
Ventajas e inconvenientes de las copias de seguridad incrementales por Debbie Saugen El entorno actual de trabajo ininterrumpido nos obliga a buscar la mejor estrategia para reducir las ventanas de copia de seguridad y recuperación. Las copias de seguridad incrementales parecen una sabia elección, pero al desarrollar una buena estrategia de copias también debemos tener en cuenta la mejor estrategia de recuperación.
28
Volcar información de la memoria principal por John Santosuosso Desde la V5R4 el mandato DMPMEMINF (Volcar información de la memoria principal) forma parte del i5/OS. Este mandato vuelca en un archivo información sobre páginas de memoria y puede ser un mandato muy eficaz para analizar el rendimiento del sistema.
en directo
32
V6R1 Navigator para i5/OS: un sueño hecho realidad por Greg Hintermeister Un pequeño anticipo de una de las novedades incorporadas en el próximo release V6R1 de i5/OS. Prepárese para una nueva versión de Navigator más rápida, basada en web y muy funcional que facilita aún más la gestión del sistema.
35
sumario 2007
forum.help400
Resumen de los arículos publicados durante el año
F orum.help400 es una lista de correos puesta a disposición de los lectores de ServerNEWS en la que cada día, entre todos los participantes, se solucionan numerosos problemas. Hallará más información en http://www.help400.es/forum.htm
por la Redacción Como cada año, incluimos un indice con el contenido de cada uno de los números de la revista y del Suplemento Help400 (sólo para suscriptores)
HELP400 Suplemento Técnico i
1
Creación de documentos de XML con RPG y DOM Por Craig Caulfield Los largísimos nombres de procedimientos y las extensas listas de parámetros hacen que los programas del XML Toolkit para iSeries sean difíciles de leer y de entender. En esta segunda parte sobre su utilización para procesar XML con RPG se muestra un ejemplo de cómo crear un documento de XML para enviarlo como archivo de texto a otro sistema.
www.help400.es
SECCIONES HABITUALES 3 6
Editorial Novedades
40 42
Guia Confidencial ENERO 2008 ServerNEWS 5 ENERO 2008 ServerNEWS 5
novedades ■
Resultados de IBM en el 4º trimeste y el año 2007
Próximos lanzamientos de Microsoft “El mayor acontecimiento tecnológico del 2008 va a celebrarse muy pronto. Y tu eres su principal protagonista. ¿Te lo vas a perder?” n un evento masivo que Microsoft realizará a nivel mundial el próximo día 26, tendrá lugar el lanzamiento oficial y simultáneo de Windows Server 2008, SQL Server 2008 y Visual Studio 2008, la nueva generación de tecnología Microsoft en su mayor parte destinada al ámbito empresarial y que marcan el inicio de un nuevo ciclo de actualizaciones. En España el evento se realizará en el Palacio Municipal de Congresos de Madrid los días 26 y 27 de febrero y contará con la presencia de Rosa Mª García, Presidenta de Microsoft Ibérica, además de los responsables del área de Desarrollo y Plataformas de la compañía en nuestro país. Sin duda, será un acontecimiento irrepetible al que se puede asistir previo registro en la web del evento, en www.microsoft.com/spain/lanzamiento/
E
Windows Server 2008 Muchas son las mejoras introducidas en esta nueva edición de Windows Server. La consolidación de servidores, la gestión del hardware y de máquinas remotas y las nuevas opciones de seguridad serán los aspectos más destacables. Pero entre otras novedosas también destacan el sistema de ficheros NTFS con capacidad de autoreparación o el apagado del servidor con la ayuda de un servicio de ‘limpieza’ del sistema que finalizará tareas y procesos pendientes. El nuevo gestor de transacciones del núcleo evitará la corrupción del sistema por el acceso simultáneo de múltiples fuentes a un mismo recurso, o también el denominado Windows Hardware Error Architecture, un sistema de informe de errores. Sin embargo las opciones más importantes son la virtualización de servidores, el nuevo Powershell, y sobre todo, el nuevo núcleo del sistema operativo: por primera vez los administradores dispondrán de una solución modular de la que sólo será necesario instalar los componentes que se precisen, pudiendo partir de una implementación básica. Visual Studio 2008 y .NET Framework 3.5. Estamos hablando del entorno de desarrollo de aplicaciones y del framework .NET para desarrollar en plataformas Windows con diferentes lenguajes. Como principales novedades, indicar que incluye el lenguaje LINQ (Language Integrated Query) en .NET Framework 3.5. Es una forma más sencilla e intuitiva de integración de los queries a las bases de datos. En cuanto a Visual Studio 2008 incluye nuevos editores , un nuevo interface de diseño web completamente WYSIWYG con soporte multi-targeting que permite desarrollar un proyecto en la versión de .NET que se desee y todo el IDE se adaptará automáticamente. También soporte para ASP.NET AJAX en Visual Studio 20008, mejor soporte para CSS, Javascript y otras muchas novedades para facilitar el desarrollo de las aplicaciones más moderna. SQL Server 2008 Las novedades van desde las nuevas capacidades BI (Business Inteligence) y de minería de datos pasando por su seguridad y auditoría, hasta herramientas de diagnóstico y resolución de problemas. Dispone, por ejemplo, de varias opciones de cifrado, de entre las que destacan el denominado cifrado transparente de datos en que toda la base de datos se puede cifrar mediante el motor de SQL o el cifrado de la copia de seguridad. Nuevos tipos de datos como puedan ser HIERARCHY ID (para almacenar valores de nodos en un jerarquía), FILESTREAM (para almacenar data de tipo grande, documentos, imágenes), tipos para almacenar datos espaciales como GEOGRAPHY, GEOMETRY, así como mejoras en los tipos de datos de fecha y hora, entre otros. El Resource Governor que sustituye al Query Governor, ese recurso que permitía impedir la ejecución de consultas demasiado pesadas contra un servidor SQL Server; nuevas posibilidades en la sincronización y recuperación de datos o aquellas que aprovechan el .NET Framework 3.5 como pueda ser LINQ. A todo este resumen añadir que, desde el punto de vista del desarrollo, ya es posible empezar a probar algunas de las aplicaciones de Visual Studio 2008, concretamente las versiones Express que son gratuitas. Entre las que se pueden descargar encontramos Visual Basic 2008 Express Edition, Visual Web Developer 2008 Express Edition, Visual C# 2008 Express Edition y Visual C++ 2008 Express Edition; o también mediante la descarga de un DVD imagen con todas juntas y acompañadas de los componentes adicionales. Para más información, www.microsoft.com/spain/lanzamiento/
6 ServerNEWS ENERO 2008
Según su informe de fin de año, IBM ganó 10.418 millones de dólares (7.122 millones de euros) en 2007, un 9,7% más que en el ejercicio precedente, gracias a mayores ventas en Europa y al impulso de los países emergentes. El grupo alcanzó una cifra de negocio de 98.786 millones de dólares (67.473 millones de euros), un 8% más que en el año precedente, cuando facturó 91.424 millones de dólares (62.430 millones de euros). Con respecto a la evolución de la multinacional en el cuarto trimestre, los ingresos trimestrales alcanzaron los 28.866 millones de dólares (19.743 millones de euros), un 9,9% más que en el mismo trimestre de 2006, cuando ingresó 26.257 millones de dólares (17.964 millones de euros). “IBM ha obtenido un gran cuarto trimestre y unos resultados anuales récord en ingresos, beneficios y caja”, comentó el presidente de la compañía, Samuel J. Palmisano. “El amplio alcance de nuestro negocio, sostenido por el sólido desarrollo operativo en Asia, Europa y los países emergentes, así como el continuo crecimiento en servicios y software han perfilado estos resultados”, subrayó. De entre las cifras relativas al cuarto trimestre, dentro de la división IBM Systems and Technology Group, es de destacar que el System i, tras dos años de resultados negativos, ha conseguido un 2% de crecimiento respecto al mismo periodo del año 2006. Para más información, www.ibm.com/es/press
www.help400.es
■
■
IBM ha creado un mundo virtual que permitirá a desarrolladores de software de todo el mundo compartir sus experiencias, superando los obstáculos geográficos y temporales para mejorar la colaboración entre empleados de empresas con sedes distribuidas. Los retos de la globalización están forzando a que muchas compañías cuenten con equipos de trabajo cada vez más dispersos que necesitan trabajar de manera virtual para permanecer competitivos. Las herramientas y proyectos presentados por IBM están basados en las tecnologías Web 2.0 que aprovechan la capacidad de Internet para fomentar las relaciones sociales. Para hacer frente a las dificultades que supone trabajar de forma distribuida, IBM ha anunciado una serie iniciativas innovadoras, entre las que destacan las siguientes: • La apertura de la comunidad de desarrolladores de IBM www.jazz.net. Esta plataforma permite trabajar conjuntamente y en entornos geográficamente dispersos con aplicaciones basadas en la tecnología de desarrollo Jazz de IBM. Antes esta comunidad estaba limitada al sector académico, clientes y partners de IBM, pero ahora se amplían sus posibilidades a los desarrolladores. • IBM Rational Team Concert Express. Esta iniciativa ayuda a los equipos de desarrollo pequeños y medianos a mejorar su productividad, permitiendo la colaboración en tiempo real entre equipos dispersos. IBM Rational Team Concert Express no tendrá ningún coste para proyectos de software abierto ni para instituciones académicas que lo usen en programas de cursos acreditados o en proyectos de investigación académica. Para más información, www.ibm.es
Cognos (NASDAQ: COGN) ha anunciado que sus accionistas han aprobado el acuerdo ya anunciado en su momento por el cual IBM Corporation, a través de una filial indirecta, adquirirá todas las acciones ordinarias en circulación de la compañía por un total de 58 dólares al contado por cada acción ordinaria de Cognos. El acuerdo fue aprobado aproximadamente por el 99,8% de los votos emitidos por los accionistas presentes o representados por poderes en una reunión especial de Cognos. El acuerdo está sujeto a aprobación final por parte del Tribunal Superior de Justicia de Ontario, Canadá, y se espera que pueda cerrarse durante el primer trimestre de 2008. Para más información, www.cognos.com/es/
IBM presenta Jazz.net un espacio para desarrolladores
Los accionistas aprueban la venta de Cognos a IBM
■ Tango/04, finalista en los “European IT Excellence Awards”
Tango/04, empresa desarrolladora de soluciones de monitorización y BSM ha sido nominada para recibir los premios Pan-Europeos de excelencia TI; los “European IT Excellence Awards” que se otorgarán a finales de febrero 2008. De entre los 46 finalistas, la empresa barcelonesa es la única empresa española nominada por la calidad de sus soluciones. Las empresas nominadas proceden de varios países europeos, pero del sur de Europa sólo han sido nominadas una empresa italiana y Tango/04. “Independientemente del tamaño y la localización de la empresa nominada, la calidad de las soluciones de los candidatos es extremadamente alta y demuestra cuanto talento hay en la industria IT en todo Europa”, asegura Alan Norman, director de IT-Europa. Para más información, www.tango04.es
Si como proveedor posee alguna novedad relacionada con el entorno System i - iSeries - AS/400 de IBM, recuerde que en esta sección dispone de un espacio gratuito para darla a conocer a todos nuestros lectores. Puede enviar sus notas de prensa a Ser verNEWS mediante correo electrónico (help400@help400.com), o bien a Gran Vía Corts Catalanes, 715, Entlo 3ª 08013 Barcelona. Para la inclusión de fotografías o logos, agradeceríamos que las remitieran en formato electrónico. www.help400.es
■ SITI/asLAN´2008:
del 26 al 28 de Febrero SITI/asLAN es una feria profesional y especializada, dirigida a todos los interesados en soluciones tecnológicas para las administraciones públicas, operadores, grandes corporaciones y Pymes en el ámbito de las redes y las tecnologías convergentes. En la pasada edición, los visitantes tuvieron oportunidad de conocer soluciones de convergencia
IP, así como los últimos avances en banda ancha, seguridad, movilidad y servicios gestionados. Este año, con más de 100 expositores se espera una afluencia de 14.000 visitantes profesionales, continuando así con la tendencia de los últimos 5 años. Bajo el lema de “La tecnología. Su momento”, será una edición muy especial de la feria, que este año celebra su 15 aniversario. Para más información, www.siti.es
Sun adquiere MySQL por mil millones de dólares S
un Microsystems ha alcanzado un acuerdo definitivo para adquirir MySQL AB, la empresa desarrolladora de una de las bases de datos sobre código abierto de mayor crecimiento del mundo, compatible con cualquier sistema operativo y plataforma. En sus diez años de historia, MySQL con más de 100 millones de distribuciones, crece a razón de 50.000 descargas mensuales. Con esta adquisición, la empresa creadora de la plataforma de programación Java refuerza su posición en el mercado de la tecnología corporativa al entrar en el sector de las bases de datos, donde hasta ahora no tenía presencia. Con clientes de la talla de Facebook, Google, Nokia, Baidu o China Mobile, “MySQL aporta a Sun sinergias que cambiarán radicalmente el actual mercado del software”, comenta la compañía compradora en su comunicado. “En línea con nuestro plan de crecimiento, la compra de MySQL incrementa nuestras inversiones en tecnologías demandadas por clientes que están experimentando un gran crecimiento, desde los grandes titanes de internet hasta las tradicionales corporaciones mundiales”, indicó el presidente y consejero delegado de Sun, Jonathan Schwartz. “La combinación de MySQL y Sun representa una gran oportunidad para los usuarios y para todas aquellas compañías que quieren innovar, crecer y poder elegir”, afirmó Marten Mickos, consejero delegado de la compañía adquirida. Una vez que se complete la transacción propuesta, MySQL, que cuenta con 400 empleados en 25 países, se integrará en las organizaciones de Software, Ventas y Servicios de Sun, y Marten Mickos pasará a formar parte del equipo directivo del gigante informático. Mientras, un equipo conjunto formado por representantes de ambas compañías desarrollará los planes de integración basados en "las sinergias técnicas, de producto, así como culturales y las mejores prácticas de negocio y desarrollo de ambas compañías". Como parte de la operación, Sun pagará en efectivo 800 millones de dólares a cambio de todo el material de MySQL y asumirá en torno a 200 millones de dólares en opciones de compra. Este anuncio reafirma la posición de Sun como proveedor líder de plataformas en la economía Web, así como su papel como mayor contribuyente desde el mundo empresarial a la comunidad Open Source. Para más información, es.sun.com
ENERO 2008 ServerNEWS 7
opinión
por Sean Chandler
Puede que la “i” sea de “indeciso”
A
la mayoría de las organizaciones que trabajan con tecnologías de la información les gusta consolidar sus estructuras tecnológicas. Quieren tener menos ordenadores, menos tipos de ordenadores, menos proveedores de hardware, menos proveedores de software, etcétera. Este esfuerzo por minimizar tiene sentido porque todo es más fácil cuanto menor es el número de proveedores y de productos. La gestión de sistemas y de programas es más fácil, la gestión con los proveedores es más fluida e incluso las llamadas al departamento técnico resultan más sencillas... y todo gracias a que hay menos opciones y, por lo tanto, menos complejidad. Curiosamente, la consolidación tiene las mismas ventajas para los fabricantes de servidores. Si éstos pueden encontrar formas de consolidar sus productos, también disfrutarán de ciertas ventajas, aunque ligeramente distintas. Si, por ejemplo, un fabricante de servidores fuera capaz de crear un sistema multiusos para sustituir a varios servidores a los que se les da un solo uso, ese fabricante podría simplificar su cadena de producción y distribución, sus procesos de fabricación, la infraestructura de soporte, etcétera. Así que no debería sorprendernos que eso sea exactamente lo que está haciendo IBM... en cierto modo. No se deje engañar por los recientes comunicados de prensa: la convergencia de los System i y System p hace tiempo que tiene lugar. ¿Recuerda cuando se presentó el AS/400 en 1988? Por aquel entonces utilizaba un chip CMOS de propiedad. ¿Y recuerda como, a mediados de los años noventa del siglo pasado, el AS/400 se pasó al procesador PowerPC junto con el RS/6000? Más aún, ¿recuerda cuánta gente creyó que ese movimiento significaba el fin del AS/400... que el AS/400 se convertiría en una opción más del RS/6000? Es obvio que eso no sucedió. En el transcurso del tiempo, el RS/6000 pasó a llamarse pSeries y luego System p. El AS/400 se convirtió en iSeries y éste en System i. Ambos sistemas dieron el salto del procesador PowerPC al POWER4, al POWER5 y ahora al POWER6. Y prácticamente cada vez que se cambiaba de procesador los profesionales del entorno se preguntaban si el AS/400-iSeries-System i sería reemplazado por el RS/6000-pSeries-System p. Y hasta ahora la respuesta siempre ha sido negativa. Pero, ¿qué hay de este último anuncio? ¿IBM va a dar un paso mucho más cercano a la convergencia definitiva de estas dos plataformas? La respuesta es que sí y que no.
Mola: IBM vuelve a invertir en el System i Aunque no sirva para otra cosa, la reestructuración llevada 8 ServerNEWS ENERO 2008
a cabo por IBM de las responsabilidades del System i en divisiones de “grandes empresas” y “pymes” demuestra que el System i sigue siendo importante para el gigante azul. Y así debería seguir siendo. El System i sigue siendo un producto altamente rentable para IBM. Pero en los últimos años IBM lo ha tenido difícil para posicionar el System i en el mercado de las pequeñas y medianas empresas, en que los servidores x86 son las formas de vida dominantes y también en el mercado de las grandes empresas, en el que compiten contra el System p y otros productos midrange. Francamente, a mí me parece que IBM estaba mucho más interesada en vender en esos mercados soluciones basadas en System x y System p que en System i. Esta reorganización permite que IBM se concentre en estos dos segmentos de mercado tan importantes. En el mercado de las pymes, el System i suele ser una solución ideal, pero IBM ha hecho un mal trabajo demostrándolo, permitiendo que los servidores x86 basados en Windows crecieran como maleza en la comunidad de las pymes (y no es que tenga nada en contra de los servidores x86 basados en Windows). En el ámbito de las grandes empresas, i5/OS puede ofrecer un montón de cosas buenas, pero una vez más IBM ha pasado dificultades para posicionarlo frente a AIX. Uniendo sus fuerzas, IBM debería –al menos teóricamente– poder posicionar ambos productos de forma más equilibrada. Ciertamente, no sé cómo pueden empeorar las cosas en ambos segmentos de mercado.
No mola: IBM no es capaz de cerrar el trato Aunque el reajuste de los recursos del System i es, en general, una buena noticia, es algo frustrante que IBM no sea capaz de absorber y consolidar los dos sistemas. Sabemos desde hace una década que IBM acabará por hacer converger en una sola línea de plataformas hardware los sistemas AIX e i5/OS. Podríamos haber seguido adelante con nuestras vidas si IBM ya lo hubiera hecho. Pero IBM no parece ser capaz de llegar a ese punto. Da un pasito de bebé tras otro, lleva a cabo una reorganización tras otra, un cambio de procesador tras otro... acercándonos inexorablemente a la convergencia del hardware. ¡Venga, IBM! ¡Simplemente, hazlo! ■
Sean Chandler es un consultor experto en ordenadores y redes con cerca de 30 años de experiencia. www.help400.es
www.help400.es
ENERO 2008 ServerNEWS 9
RPG es fantástico, RPG es genial. ¡Usémoslo como es debido!
E
por Scott Klement
l título original de este artículo (“RPG Rules!”) puede interpretarse de dos formas distintas. O bien significa que realmente me gusta RPG o bien que quiero proporcionar una serie de directrices (o reglas) que deben seguirse para trabajar con RPG. ¿Qué sentido he querido darle al título? ¡Ambos! En este artículo explicaré no sólo por qué me gusta el lenguaje, sino también qué reglas deben cumplirse si se quieren escribir aplicaciones modernas. RPG es un lenguaje estupendo y a mí me encanta. Sin embargo, no es un lenguaje joven o moderno. Es el resultado de más de 40 años de evolución. En mi opinión, RPG es el mejor lenguaje del planeta para escribir reglas de gestión empresarial pero al mismo tiempo se ve lastrado por un montón de funciones arcaicas que le permiten ser compatible con versiones anteriores. Estas funciones arcaicas también se conocen como “funciones heredadas” y no deberían pillarlo utilizándolas hoy en día.
¿Por qué RPG es el mejor? A pesar de su antigüedad, el hecho de que RPG fuera diseñado como un lenguaje para escribir aplicaciones empresariales específicamente para la familia de ordenadores System i (y sus predecesores) lo convierte en uno de los mejores lenguajes existentes para desarrollar este tipo de aplicaciones hoy en día. Hasta que no se escriben aplicaciones empresariales en otras plataformas utilizando otros lenguajes, es difícil apreciar lo que tenemos en RPG. Los lenguajes más nuevos parecen buenos pero, al usarlos, uno acaba echando en falta parte de la elegancia de RPG. He compilado una breve lista de las razonas por las que RPG es el mejor: Simplicidad. Yo sólo quiero que mi empresa funcione. No quiero preocuparme por la tecnología que hay detrás. Únicamente quiero que ésta funcione para poder concentrarme en el negocio. Soporte decimal decente. Las empresas trabajan con aritmética decimal. Aunque todos los lenguajes de programación incluyen un soporte integrado para aritmética de enteros y de coma flotante, muchos no tienen el mismo nivel de soporte para tipos decimales puros. Los datos enteros no permiten realizar fracciones. Los de coma flotante usan valores aproxi10 ServerNEWS ENERO 2008
mados y redondearlos puede provocar errores con los datos decimales. Los tipos decimales puros, como los decimales con zona o los decimales empaquetados, hacen exactamente lo que las empresas necesitan: permiten sumar números, como cantidades, pesos y valores monetarios fácilmente. En RPG, la aritmética decimal es automática. No hay que preocuparse por ello; simplemente funciona. En muchos otros lenguajes, hay que llamar a APIs especiales para trabajar con aritmética decimal o, si no se puede usar, hay que buscar soluciones a los defectos de los tipos de datos enteros y de coma flotante. Manejo de errores adecuado. Cuando una operación de RPG falla, se envía un mensaje de escape. A menos que se escriba código para capturar y manejar el error, el programa fallará. Otros lenguajes de programación no tienen esta función. Las funciones básicas devuelven errores en un campo de errores del programa y el programador ha de escribir código adicional para comprobar el error. En esos lenguajes, si no se comprueba y se maneja el error, el programa sigue ejecutándose como si no hubiera pasado nada, con lo que si más tarde se produce algún problema, el error inicial habrá quedado enmascarado y resultará difícil rastrearlo. Este comportamiento predeterminado de restar importancia a los errores conduce a problemas extraños que la gente no es capaz de solucionar y que sólo pueden resolverse volviendo a instalar la aplicación o reiniciando el sistema. ¿Cuántas veces ha tenido que hacer eso con un programa escrito en RPG? Gran integración con la base de datos. Las aplicaciones empresariales suelen usar muchísima lógica de la base de datos. RPG se diseñó desde el principio como un lenguaje que utiliza la base de datos integrada en el sistema operativo de la forma más natural y sencilla. Si se quiere obtener un registro de una base de datos, basta con escribir una sentencia que lea el registro. Incluso si se quiere escribir una sentencia de SQL más compleja en el programa de RPG, se escribe la sentencia y se le indica dónde insertar o devolver datos en los nombres de variables de RPG. Es fácil. Algunos lenguajes requieren llamar a un complejo número de funciones de las API para SQL. Otros exigen utilizar números de columnas de SQL ordinales en vez de simples nombres de variables. Gran integración con el sistema operativo. i5/OS es el mejor sistema operativo del mundo. Su estabilidad, indepenwww.help400.es
dencia de la tecnología, motor de virtualización, funciones de gestión del trabajo, diagnósticos, seguridad y base de datos integrada, hacen de él una de las mejores herramientas que existen. Aunque hay muchos lenguajes de programación para i5/OS, la mayoría también están disponibles para otros sistemas operativos. ¿Cómo se puede sacar verdaderamente partido de la potencia del sistema operativo si el programa puede ejecutarse en cualquier sitio? Cobol y C deben cumplir los estándares ANSI. Los programas escritos en Java, PHP y Perl se ejecutan exactamente igual en plataformas distintas del System i. Solamente RPG y CL están diseñados para i5/OS y están profundamente integrados en el sistema operativo, hasta el punto de que se pueden exprimir a fondo sus características. Anotaciones del trabajo. Este punto en realidad forma parte de la integración con el sistema operativo, pero lo he separado porque es la función que le falta a la mayoría de lenguajes cuando trabajo en otras plataformas. Realmente me encantan las anotaciones del trabajo de i5/OS. Agradezco poder consultar la pantalla de WRKACTJOB, elegir el trabajo que está generando errores y ver las anotaciones de ese trabajo, en las que se muestra todo lo que ha pasado. Oh, sí, otras plataformas tienen mecanismos para realizar anotaciones, pero cada programa usa un sistema distinto y de una forma diferente. Cierto, muchos lenguajes nativos de i5/OS usan las anotaciones del trabajo tal y como lo hace RPG, pero algunos no... aunque eso me trae sin cuidado. Compatibilidad para el futuro. Aparte de CL, RPG es el único lenguaje cuyo destino está totalmente controlado por IBM. RPG ha demostrado a lo largo de todos estos años que se puede escribir un programa con él hoy en día, y dentro de cinco o diez años se podrá seguir compilando y ejecutando en el sistema. IBM ha hecho un trabajo fantástico con la compatibilidad hacia adelante de RPG. Cuando una compañía invierte dinero para el desarrollo de aplicaciones escritas en RPG, esa inversión perdurará muchos años. Piense en la aplicaciones que los programadores de RPG mantienen en la actualidad y pregúntese si todavía se seguirían usando si se hubieran escrito en otro lenguaje. Lamentablemente, esta compatibilidad hacia adelante puede ser un arma de doble filo. Como los programas en RPG siguen ejecutándose y haciendo su trabajo sin modificaciones, los programadores suelen dormirse en los laureles, olvidándose de reemplazar técnicas desfasadas. Este descuido, a su vez, lleva al estancamiento en el sector. Como decía, se trata de un arma de doble filo.
ma de cambiar esta percepción es mostrándole a la gente que RPG puede hacer muchas más cosas que las pantallas verdes. Y la mejor forma de hacerlo es actualizando los programas. Lo que sigue es una lista de reglas (y estoy seguro de que me dejo alguna) que deben seguirse cuando se escribe un programa en RPG hoy en día. Encapsule la lógica de la empresa y de la base de datos. Cuando se “encapsula” código, éste se aísla y se oculta su funcionamiento. La idea básica es que un programa que llama a un subprocedimiento no debería saber cómo funciona un procedimiento ni debería importarle. Tendría que ser capaz de cambiar completamente la forma en que funciona un procedimiento conservando la lista de parámetros y el objeto que realiza la llamada debería seguir funcionando sin darse cuenta de la diferencia. Por ejemplo, si tiene un subprocedimiento denominado obtenerPrecioArticulo(), a la rutina que lo llame debería tenerle sin cuidado qué archivo físico utiliza para guardar el precio del artículo e incluso si utiliza una base de datos para ello. Puede que en cinco años, en vez de usar un archivo de precios, lo calcule a partir de los valores actuales del mercado –sacados de Internet– de las materias primas. Si el código se encapsula, se recortan los costes de su mantenimiento porque puede modificarse sin tener que cambiar ni comprobar el código de los que lo llaman. La encapsulación permite realizar cambios en el código más fácilmente para adaptarse a los cambios de la empresa. Nunca mezcle la lógica de la empresa con la lógica de visualización. La lógica de la empresa es la lógica que controla el
Reglas que deben seguirse a la hora de desarrollar aplicaciones en RPG Si no actualizamos las aplicaciones o mejoramos la tecnología, nos quedamos rezagamos. Por desgracia, eso es lo que ha pasado en el mundo del System i. Las aplicaciones funcionan tan bien que, con demasiada frecuencia, los programadores siguen escribiéndolas tal como lo hacían hace 10 ó 15 años, lo que ha llevado a mucha gente a pensar que RPG es incapaz de ofrecer características modernas. Ciertamente, mucha gente asocia a RPG con las pantallas verdes de los terminales 5250, como si ambos formaran una pareja. La única forwww.help400.es
ENERO ENERO 2008 2008 ServerNEWS ServerNEWS 11 11
■ EN PORTADA funcionamiento de la empresa. ¿Cómo se almacenan los datos? ¿Qué valores se permiten en los campos? ¿Cómo se calcula un precio? ¿Cómo se reflejan los costes en la contabilidad? Esto no tiene nada que ver con la forma en que se le muestran las pantallas a los usuarios. La interfaz de usuario ha de mantenerse separada de la lógica de la empresa. En el futuro, tal vez desee cambiar la tecnología de visualización. Si ahora está utilizando pantallas verdes, puede que más adelante le interese usar una GUI, un navegador o la web. O quizás le apetezca acceder a la lógica de la empresa mediante sentencias de SQL o un servicio web. Escriba el código de tal manera que se pueda retocar la forma en que se visualiza sin tener que volver a escribirlo por completo. Proporcione una extensa biblioteca de servicios, no programas monolíticos. Supongamos que quiere inventar su propio lenguaje de programación diseñado a medida para su empresa. ¿Qué códigos de operación ofrecería su lenguaje? ¿Puede que sus códigos de operación se denominen CrearPedido, AñadirArticulo, MostrarPedido, ArticulosEnFactura y MarcarComoPagado? Diseñe sus aplicaciones como una serie de rutinas relativamente sencillas que hagan una cosa independientemente de todo lo demás. Podrá desarrollar aplicaciones enteras con sólo llamarlas. Se deben poder llamar desde cualquier otro lenguaje de programación de modo que estas herramientas puedan reutilizarse en el futuro. Utilice prototipos, no CALL/CALLB/PARM. Siempre me quedo estupefacto cuando veo a alguien usando en RPG los viejos códigos de operación CALL, CALLB, PLIST y PARM. Los prototipos pueden hacer todo lo que hacen esos viejos códigos de operación. Además, en los últimos 11 años, todas las mejoras referentes a las llamadas a programas, procedimientos y métodos se han hecho exclusivamente para los prototipos. No se empecine en utilizar el viejo método de llamar a las rutinas o se quedará atrapado en el siglo XX para siempre. Utilice operaciones de series de caracteres, no matrices. Antes de la aparición de RPG IV, no podíamos manipular adecuadamente series de caracteres en RPG, por lo que los programadores solían convertir una serie de caracteres en una matriz de campos 1A y luego usaban esa matriz para manipular la serie de caracteres. ¡Este método no es necesario desde 1995! Vamos, compañeros... se me parte el corazón cada vez que veo a alguien hacer esto. Utilice expresiones, no ADD/MULT/SUB/DIV. Los programas escritos hoy en día en RPG usan expresiones para todas las operaciones matemáticas. Los programas modernos ya no utilizan los códigos de operación heredados ADD, MULT, SUB y DIV. Utilice procedimientos, no subrutinas. Ya no hay razones para utilizar una subrutina cuando se escribe código nuevo. Las subrutinas nos obligan a usar variables globales en vez de variables locales o parámetros y eso dificulta el mantenimiento del código. El código moderno usa exclusivamente subprocedimientos. Utilice indicadores con nombre, no numerados. No hay nada malo en usar indicadores en los programas. Todos los lenguajes tienen el concepto de indicador o campo booleano, 12 ServerNEWS ENERO 2008
que es cómo los programadores de RPG llaman a los indicadores. Sin embargo, todas las variables del programa, incluyendo los indicadores, deben tener nombres que signifiquen algo y que permitan identificar fácilmente la finalidad de la variable. Si estoy leyendo el código de otra persona y veo una variable denominada HaOcurridoUnError, está bastante claro que se establecerá a *ON cuando se haya producido un error y a *OFF en caso contrario. Sin embargo, si veo una variable denominada *IN74, no tengo manera de saber lo que significa. Es cierto que puedo llevar a cabo una investigación para descubrirlo, pero eso lleva tiempo y me hace ser menos productivo. Utilice funciones integradas (BIF) para sustituir los indicadores cuando sea posible. Y cuando no sea posible, utilice un indicador con nombre, no uno numerado. Hoy en día, no tiene sentido utilizar un indicador numerado en los programas escritos en RPG. Califique las estructuras de datos. Si veo una variable en un programa, debería resultar obvio, sólo a partir de su nombre, si la variable forma parte de una estructura de datos. A menudo me pasa que leo un programa, veo una variable y me pregunto que dónde rayos se habrá establecido, hasta que me doy cuenta de que en una línea anterior del código en realidad se estaba cambiando una estructura de datos. En los antiguos programas escritos en RPG era difícil explicar la diferencia entre variables normales y las que forman parte de una estructura. Hoy en día, debería utilizar estructuras de datos calificadas para que resulte obvio. Use estructuras calificadas para los archivos. De igual forma que los subcampos de una estructura de datos deberían ser evidentes, también deberían serlo los campos de un archivo. En mi caso, los nombres que asigno a las estructuras de datos provienen de los nombres de los propios archivos. Por ejemplo, si tengo un archivo denominado MAECLI, leo el archivo en una estructura de datos denominada MAECLI1. Si necesito más de un registro en memoria al mismo tiempo, el código hace referencia a los campos como MAECLI1.Numcli, MAECLI.Nombre, MAECLI1.Direccion, MAECLI1.Telefono, etcétera. Este convenio de denominación hace que sea evidente de qué archivo es cada campo y permite evitar conflictos de nombres entre distintos archivos. El código de evaluación EVALCORR aparecido en el release V5R4 permite trasladar fácilmente campos que tienen nombres idénticos al campo correspondiente de otra estructura de datos. Saque partido de las características de otros lenguajes. Uno de los mayores retos de los departamentos que trabajan con RPG es la falta de herramientas y complementos gratuitos para el lenguaje. Supongamos que necesita una rutina que permita grabar en una hoja de cálculo Excel o una biblioteca de rutinas para generar gráficos y diagramas. Hay montones de esas herramientas para lenguajes como C y Java, pero muy pocas para RPG. ¡No permita que eso le detenga! Saque partido de la capacidad de RPG de llamar a programas, procedimientos y métodos escritos en otros lenguajes. Desde RPG, puede llamar directamente a rutinas escritas en Java o escritas en otro lenguaje ILE, con sólo crear los prototipos correctos. De esta forma, se le abrirá el mundo de las www.help400.es
FIGURA 1 Un ejemplo de a qué se parece una pantalla de RPG hoy en día
la hora de escribir rutinas que utilicen el proceso basado en conjuntos, utilice SQL. Con el preprocesador integrado de SQL, se pueden incorporar sentencias de SQL en el código RPG tan fácilmente como si fueran códigos de operación del RPG. La potencia y las funciones de SQL lo convierten en una herramienta natural para seleccionar un conjunto de registros que satisface un criterio dado. No utilice OPNQRYF en una aplicación moderna. Es evidente que OPNQRYF es una herencia del pasado. SQL es más potente, más fácil de utilizar (después de aprender cómo) y mucho más rápido que OPNQRYF. ¡No vuelva a utilizar pantallas verdes! Por favor, deje de perpetuar el mito de que RPG sólo sirve para programar pantallas verdes. Esas terminales 5250 son tecnología de los años setenta del siglo pasado... hasta los programas escritos para MS-DOS a principios de los ochenta eran más avanzados. Ya es hora de progresar. En la Figura 1 se muestra un ejemplo de la apariencia que tiene una pantalla de RPG hoy en día. Igualmente, en la Figura 2 puede verse a qué se parece una salida impresa moderna. Las aplicaciones actuales sustituyen el terminal 5250 por interfaces web, no sólo para las aplicaciones públicas, sino también para las aplicaciones internas, aunque sólo vayan a usar la aplicación los trabajadores del departamento en que está instalado el System i. Las interfaces web se comportan como clientes ligeros en que toda la lógica del programa (tanto la de la empresa como la de visualización) reside en el servidor, simplificando muchísimo la instalación, distribución y mantenimiento de la aplicación en comparación con las soluciones de cliente pesado de los programas cliente-servidor del pasado. CGIDEV2 ofrece a los programadores que trabajan con RPG una forma sencilla de usar una interfaz web en un entorno RPG puro. Si mantiene la separación entre la lógica de la empresa y la de visualización, también es fácil usar RPG con Java, .NET o PHP para mejorar la interfaz web.
Las reglas del futuro
FIGURA 2 Un ejemplo de la salida impresa de una aplicación moderna escrita en RPG herramientas de terceros (muchas de las cuales son gratuitas) sin tener que sacrificar las ventajas del lenguaje RPG. Utilice SQL cuando sea procedente, nunca OPNQRYF. A veces, utilizar las funciones de E/S de registros nativas de RPG sigue siendo útil cuando se trabaja con bases de datos, especialmente si el archivo es un archivo transaccional en el que se trabaja con un registro a la vez. Sin embargo, llegada www.help400.es
Algunas personas destacadas de IBM me han dicho que RPG seguirá desarrollándose y mejorándose en el futuro inmediato. Eso quiere decir que veremos más funciones modernas en los años venideros. Eso no significa que pueda seguir escribiendo sus programas tal y como lo hacía en los años ochenta o noventa. Las tecnologías informáticas siguen evolucionando y sus programas también deben evolucionar. No tiene porque cambiarlo todo de golpe, pero sí debería ir incorporando técnicas modernas poco a poco en sus programas. A medida que vaya modernizando sus programas, serán más flexibles, le resultarán más fáciles de mantener, tendrán interfaces más bonitas e incluso sus usuarios dirán que RPG es el mejor. ■
Scott Klement es redactor técnico de System iNEWS y redactor del boletín de noticias distribuido por correo electrónico Club Tech iSeries Programming Tips. También es el director de sistemas de información de Klement Sausage Co, Inc. ENERO 2008 ServerNEWS 13
Sumérjase totalmente en el código para entender completamente cómo funciona un programa
C
por Don Denoncourt
omo programadores, nuestro trabajo consiste en comprender cómo funciona la empresa; escribir, modificar y depurar aplicaciones; y adquirir nuevos conocimientos. La capacidad de leer y comprender el código existente es básica para poder realizar estas tareas. Pero, ¿realmente sabe cómo leer un programa? Parece una pregunta trivial, pero los programas no se leen como una novela. Lograr entender el código de una aplicación existente es un proceso cognitivo complejo que exige percepción, conocimiento del dominio y la creación de hipótesis, posteriormente confirmadas o refutadas. Y para ello hay que asimilar los programas. Incluso diría más: empleando la palabra acuñada originalmente por el escritor de ciencia ficción Robert A. Heinlein, grok, que significa obtener una comprensión total y profunda de algo; en este caso, de un programa. Siempre debería aprender todo lo que pueda sobre un programa antes de modificarlo, pero la lectura de un programa también es la mejor forma de aprender nuevas tecnologías. Estudiar un programa le ofrece la oportunidad de aumentar su conocimiento del oficio y mejorar sus habilidades. Después de todo, ¿qué programador que trabaje con System i no está intentando aprender Java, PHP o .NET? Como mínimo, los programadores están procurando adquirir conocimientos y experiencia en ILE. Personalmente, cuando leo un artículo de ServerNEWS que incluye código de ejemplo, lo primero que hago es estudiar el código. Para los programadores de RPG que están aprendiendo Java, PHP o .NET estudiar aplicaciones existentes es una estrategia de aprendizaje fantástica. Les recomiendo la famosa aplicación Pet Store (Tienda de mascotas, representada en la Figura 1) creada por Sun como aplicación de ejemplo y que usa varias tecnologías J2EE (java.sun.com/ blueprints/guidelines/designing_enterprise_applications_2e/sample-app/sample-app1.3.1a3.html). Microsoft montó un gran revuelo hace unos cuantos años cuando publicó una versión optimizada para .NET de la aplicación Pet Store que ofrecía un rendimiento mejor que el de la versión de Sun. 14 ServerNEWS ENERO 2008
La comunidad de programadores de Java rápidamente respondió con muchas más implementaciones de Pet Store que superaban a la versión .NET de Microsoft. Hoy en día pueden encontrarse implementaciones de Pet Store que ofrecen ejemplos de cómo usar una gran variedad de tecnologías. El año pasado, asimilé el código de la aplicación Pet Store basada en Java para aprender cómo funcionaban las infraestructuras Spring e Hibernate. También he utilizado las implementaciones de Pet Store para aprender un par de lenguajes nuevos: PHP y EGL. Estudiar esa aplicación me permite, en palabras de Lionel Deimel, del Software Engineering Institute, “entender el significado correcto de los modismos y comprender el estilo más deprisa y con más seguridad que estudiando manuales de consulta, guías de estilo y estándares de programación”.
¿Qué se entiende por “comprensión de un programa”? Deimel define la comprensión de un programa como “la construcción (o la reconstrucción) de los dominios de conocimiento y las relaciones entre los programas a partir del código, los comentarios y cualquier otra documentación disponible”. Descompongamos esta definición en sus componentes y describamos qué es la comprensión de un programa con más detalle. El primer componente usado en el proceso mental de la reconstrucción de un programa son los dominios de conocimiento. Los dominios de conocimiento pueden dividirse en dos tipos: semántico y sintáctico. El conocimiento semántico se refiere a los conceptos de programación generales independientes de un lenguaje dado. Podemos encontrar ejemplos de conocimiento semántico que van desde el bajo nivel (por ejemplo, subíndices de matrices) al alto nivel (por ejemplo, el control de transacciones de la base de datos). El conocimiento semántico se adquiere mediante la experiencia y forma parte de la memoria humana a largo plazo. Un aspecto importante del conocimiento semántico es que es estable; el conocimiento semántico se conserva durante años. www.help400.es
www.help400.es
ENERO 2008 ServerNEWS 15
■ EN PORTADA na en compañías modernas (puede obtener más información sobre los patrones de diseño en el artículo “La arquitectura MVC facilita la programación en ILE RPG”, publicado en el número 178, de noviembre de 2007). Los arquetipos, básicamente patrones de diseño sin documentar, son soluciones a problemas concretos que los programadores se encuentran desde el inicio de sus carreras profesionales, tanto durante su formación, como haciendo revisiones del código, en su experiencia personal o en revistas profesionales. Los arquetipos se incluyen en este artículo porque, históricamente, no han habido muchos patrones de diseño sobre las aplicaciones escritas en RPG, pero obviamente hay arquetipos reconocibles. Un modismo es un patrón de bajo nivel que resuelve un problema habitual de un lenguaje de programación (por ejemplo, un bucle READE en RPG o el uso de un objeto de valor inmutable en Java). No importa que no esté completamente de acuerdo con mis clasificaciones de conocimiento de dominio; lo que importa es que los desarrolladores acumulan una gran variedad de conocimiento de dominio al que recorren cuando leen programas. Cuando los programadores detectan un patrón de diseño, arquetipo o Cuando se consideran los efectos del modismo reconocible, no tienen proceso cognitivo visual, se empieza a que analizar mentalmente el código para entender su propóapreciar la importancia de buenos sito.
El conocimiento sintáctico es más preciso, detallado y arbitrario que el conocimiento semántico. En su forma más básica, el conocimiento sintáctico son las reglas gramaticales y los patrones estructurales de un lenguaje. El conocimiento sintáctico generalmente se aprende de memoria. Es más fácil aprender la nueva representación sintáctica de una construcción semántica existente que adquirir una estructura semántica completamente nueva. Por ejemplo, como comprendo el dominio empresarial de la aplicación Pet Store, puedo aprender PHP y EGL a partir de las implementaciones de ejemplo de dicha aplicación. Otro ejemplo es que un programador de RPG puede aprender Cobol más fácilmente que Java porque aprender Java requiere un conocimiento semántico nuevo, específicamente la programación orientada a objetos (OO) y el desarrollo basado en componentes. Además, aprender Java puede ser incluso más difícil de lo que fue aprender RPG porque la adquisición de nueva información sintáctica puede interferir con el conocimiento sintáctico aprendido previamente ya que implica añadir, más que integrar, información nueva.
modelos de programas gráficos y formas alternativas de consultar el código fuente de la aplicación. La verdadera diferencia entre conocimiento sintáctico y semántico es que las reglas y la estructura de la sintaxis se aprende de memoria, mientras que el conocimiento semántico es la comprensión de los conceptos. El conocimiento sintáctico es más volátil que el semántico y, por tanto, más fácil de olvidar.
¿Qué es lo que sabe? Un dominio de conocimiento es una colección de información sobre objetos de algún tipo y las relaciones entre estos objetos. Para lograr la comprensión del programa, clasifique el conocimiento semántico en información de la empresa, patrones de diseño, arquetipos y modismos. El conocimiento de la empresa es importante para la comprensión de alto nivel de un programa, mientras que el conocimiento del diseño de patrones, los arquetipos y los modismos tiene que ver con una comprensión de más bajo nivel. Un patrón de diseño es una manera formal de documentar soluciones satisfactorias a los problemas de programación más habituales. Los patrones de diseño generalmente se publican en artículos y libros, pero también se acumulan y se documentan de forma inter16 ServerNEWS ENERO 2008
Conocimiento visual
Ahora que ya sabe que sé lo que sabe, veamos el proceso de adquirir conocimiento sobre un programa. Usted, el procesador central (utilizando el enfoque de la inteligencia artificial), procesa diversas fuentes de entrada y como salida obtiene un conocimiento del programa que se almacena en la memoria a largo plazo. Las entradas obvias es el código fuente del programa y la definición de la base de datos. Pero otras fuentes también actúan como entradas, como la documentación de la aplicación y del programa, la entrada verbal cuyo origen son las preguntas hechas a otras personas que conocen el programa, y ayudas gráficas como salidas impresas, diagramas gráficos de llamadas y del lenguaje UML (Unified Modeling Language). Piense por un momento en el proceso cognitivo visual como en la transformación de la entrada visual en información. En primer lugar se obtiene una imagen retinal del código o gráfico. La imagen retinal es básicamente una fotografía tomada por el cerebro. Esta imagen se analiza espacialmente conforme se analizan los sangrados del código, los espacios en blanco, los bordes de los diagramas y las barras de los gráficos. Por último, se empieza a realizar un análisis de las regiones y se procesa la entrada hasta el nivel de los elementos, momento en que los elementos se colocan en una libreta de apuntes espaciales visuales en la memoria de trabajo. www.help400.es
FIGURA 1 Inicio de la famosa aplicación Pet Store, creada por Sun Cuando se consideran los efectos del proceso cognitivo visual, se empieza a apreciar la importancia de disponer de buenos modelos de programas gráficos y formas alternativas de consultar el código fuente de la aplicación. Básicamente, los modelos gráficos nos permiten mirar el elefante desde otra perspectiva. El director ejecutivo (su cerebro) interpreta los elementos identificados visualmente con información almacenada en la memoria a largo plazo. Esta interpretación puede mejorarse muchísimo gracias al conocimiento de dominio acumulado. Pero la capacidad de la memoria de trabajo para la comprensión de un programa está limitada por el número de elementos que pueden recordarse. Los elementos pueden ir desde subrutinas hasta variables pasando por recuadros de un diagrama de relaciones de entidades. A estos elementos se les suele denominar fragmentos. La división en fragmentos es la estrategia que debe seguirse para hacer un uso eficaz de la memoria a corto plazo trabajando con la capacidad de la memoria disponible y limitando el análisis de los criterios de entrada.
El proceso de asimilación El proceso de comprensión del programa puede hacerse de arriba hacia abajo o de abajo hacia arriba. Independientemente de cuál de los métodos utilice, empiece haciendo una hipótesis o, si lo prefiere, una conjetura. A continuación, comience a demostrar o refutar la teoría utilizando el código y otras ayudas visuales que representan el código. De arriba hacia abajo, empiece haciendo una hipótesis del propósito global del programa. Luego confirme esa hipótesis o, si la investigación demuestra que es falsa, sustituya la hipótesis www.help400.es
original por otra hasta que una resulte ser cierta. A continuación, separe gradualmente el código en sus componentes (es decir, fragmentos) y haga hipótesis más detalladas, que después deberá verificar o refutar investigando el código y la documentación. Los que tienen facilidad para aprender de oído pueden trabajar con otro desarrollador para “leer” o repasar en voz alta los fragmentos de código y con el que se pueda debatir el análisis. A la demostración se le puede asignar un valor de certidumbre. Por ejemplo, tras comprobar el código puede que esté absolutamente seguro de que el procedimiento BORRFACTPAG borra las facturas pagadas. Pero luego, como el código es impreciso, puede que sólo esté seguro al 80% de que la subrutina EXTBX1 extrae elementos de una tabla interna y los añade a una tabla especificada durante la ejecución. Como no desea perder el tiempo verificando hipótesis, puede ir documentando los descubrimientos que haga en comentarios en el código, en notas autoadhesivas o, preferiblemente, mediante herramientas de software de comprensión formal. El proceso de abajo hacia arriba es parecido a leer un manual empezando por el final (que, por cierto, creo que es la única forma de leer los manuales de IBM). Normalmente se usa el método de abajo hacia arriba cuando el programa no está estructurado, no está basado en componentes o apenas está documentado. En esta estrategia, busque una sección interesante de código (que nos servirá de faro), construya una hipótesis y luego demuestre la hipótesis para ese bloque de código. Seguidamente, vaya uniendo los fragmentos de código formando trozos más grandes hasta que comprendan todo el programa. A este proceso se le suele denominar abstracción por etapas. Sea cual sea el método que elija, una vez haya desarrollado la estructura semántica interna de un programa, le será más fácil conservar el conocimiento.
Obstáculos a la comprensión La comprensión no siempre es fácil. El obstáculo más evidente es la motivación del programador. Cuando se trata de corregir errores e incluso de hacer tareas de mantenimiento, muchos programadores deciden saltarse el paso de entender el programa, bastándoles con hacer un apaño. A eso yo lo llamo “programación vudú”. Los programadores vudú dan un palo de ciego a una sección de código, cambian el programa, lo rocían con agua bendita, queman incienso, ofrecen sacrificios a Thor (el dios del trueno y de los circuitos eléctricos) y esperan que el cambio funcione. Otro obstáculo es la experiencia y el conocimiento de los programadores. Si éstos no son capaces de detectar modismos, arquetipos o patrones de diseño, o si no tienen un conocimiento de dominio de la empresa, todo el proceso se ralentiza enormemente. Cuando pasa esto, en vez de intentar comprender un programa, hay que aprender los modismos y adquirir conocimiento de dominio de la empresa. Sí, es duro, pero aprender modismos, arquetipos y patrones de diseño mejora enormemente las capacidades de los programadores. Sin duda ENERO 2008 ServerNEWS 17
■ EN PORTADA tendrá que hacerlo cuando trabaje con un lenguaje nuevo y tendrá que adquirir conocimiento de la empresa cuando trabaje en un dominio nuevo. El código sin estructurar es otro problema. Además, me gusta ver cómo se usan los componentes de software –especialmente en ILE RPG y Java– pero eso no siempre es posible. En casos graves, puede que sea necesario volver a escribir el programa. Otro asunto antiquísimo es el de la documentación. La primera hipótesis que hay que hacer es que la documentación es correcta; esta hipótesis puede resultar ser falsa. Muchos lenguajes requieren una cantidad menor de documentación gracias a las posibilidades de abstracción del lenguaje. Por ejemplo, ILE RPG tiene soporte para nombres de campos más largos, subprocedimientos y miniprogramas autónomos. El viejo RPG II, por otro lado, requiere más documentación. Otro ejemplo de documentación limitada es el uso de CONST de ILE RPG, que identifica claramente un valor inmutable. Pero el código migrado escrito en RPG II no puede usar el modificador constante. Incluso en el
que muestran la interdependencia de funciones, métodos, objetos y programas. Si no dispone de estas herramientas gráficas, puede –y probablemente deba– crear manualmente gráficos en una pizarra blanca para ayudarle a comprender los programas. Si el programa que está analizando es un depósito de control de fuentes, podrá consultar las diferencias entre distintas versiones del código fuente. Pero aunque no disponga de un depósito de control de fuentes, si tiene versiones históricas del código, puede usar herramientas “diff”, que se encuentran disponibles libremente, para ver los cambios entre versiones. Hay plug-ins shareware de diff para WDSc. Asimismo, editores de texto de código libre como TextPad y Vim incluyen herramientas diff. WDSc también tiene excelentes servicios de búsqueda, algunos de los cuales debería usar regularmente para el desarrollo y la comprensión de los programas.
Asimilar la pasión
Volviendo al concepto grok que ha pasado a formar parte de la memoria colectiva del aficionado a la ciencia ficción, su definición en el Jargon File, un diccionario de la jerga hacker, es algo más contundente que la Para los programadores de RPG que que he usado al principio del artículo. Dice que “cuando uno deestán aprendiendo Java, PHP o .NET clara que ha asimilado (to grok) estudiar aplicaciones existentes es una un conocimiento o técnica, afirma que no sólo ha aprendido de estrategia de aprendizaje fantástica. forma utilitaria e indiferente ese conocimiento o técnica, sino que lo ha convertido en parte de uno caso de lenguajes modernos como ILE mismo, de su identidad”. La gente con esa clase de pasión RPG y Java, la documentación es impor- usa todas las herramientas a su disposición para asimitante porque pone de manifiesto la finali- lar un programa. Estas personas son conscientes del prodad del código, algo que no siempre resulta ceso cognitivo y, dentro de sus limitaciones, adquieren un evidente examinando el código. conocimiento “vivo” de los programas a partir de todos los recursos disponibles. Y también lo hacen para aprender Herramientas nuevos modismos, arquetipos, patrones de diseño y lenExisten muchas herramientas de ayuda a la comprensión de guajes, así como para mantener con eficacia las aplicacioprogramas. Estas herramientas van desde los rotuladores fluo- nes existentes. ■ rescentes, las notas autoadhesivas y las pizarras blancas hasta las herramientas que generan ayudas gráficas (como por ejemplo, los analizadores gráficos de llamadas, los diagramas de UML o los diagramas de relaciones de entidades). En WDSc se pueden encontrar varias herramientas y la más básica es un “esquematizador” (outliner). WDSc enumera las subrutinas y subprocedimientos de un programa escrito en RPG, así como los atributos y métodos de las clases de Java. Con WDSc Advanced se suministra el conjunto completo de aplicaciones de RUP (Rational Unified Process). Probablemente las herramientas de RUP más utilizadas son los diagramas de UML. WDSc Advanced permite aplicar ingeniería inversa a los diagramas de UML de código escrito en Java. Observe que hay plug-ins de Eclipse de código libre que hacen lo mismo. Don Denoncourt es redactor técnico de ServerNEWS y formador, mentor y Los analizadores de gráficos de llamadas generan diagramas consultor de CAS Severn, Inc. 18 ServerNEWS ENERO 2008
www.help400.es
www.help400.es
ENERO 2008 ServerNEWS 19
Cómo usar iSeries Navigator para analizar la caché de planes de SQL Siempre está activada y siempre está ahí
U
Programación y sistemas
▲ ▲ ▲
20
por Mike Cain
na de las nuevas herramientas disponible en el release V5R4 es una interfaz gráfica para la memoria caché de planes del motor de consultas de SQL. En este artículo veremos cinco formas imprescindibles de usar la caché de planes SQL. Antes de empezar, es pertinente dar una pequeña introducción. El motor de consultas de SQL (SQE) dispone de una memoria caché de planes de consultas centralizada desde que se presentó en el release R2; pero hasta ahora, no se disponía de una interfaz pública con la información contenida en este depósito. Si ejecuta sus consultas en un sistema V5R4, ahora iSeries Navigator le permitirá acceder a esta valiosa información. Una de las cosas más útiles de la caché de planes de SQL es que siempre está activada y que siempre está ahí. Como el motor de consultas de SQL almacena todos los planes de consultas en la memoria caché de planes como subproducto de la optimización de consultas que lleva a cabo, esta información vital está disponible sin necesidad de tener que iniciar herramientas de supervisión. Si la consulta la tramita el SQE, tendrá la posibilidad de analizar la información sobre el plan y el tiempo de ejecución. Para obtener esa información, use un cliente V5R4 iSeries Navigator conectado a un sistema V5R4 i5/OS. Para acceder a la memoria caché de planes del SQE, pulse con el botón derecho del ratón en el icono de la base de datos local o en el icono de la instantánea (snapshot) de la memoria caché de planes de SQL. Hay dos conjuntos de información disponibles en la memoria caché de planes: las sentencias explicables (es decir, consultas) y las propiedades de la memoria caché. Cada conjunto de información tiene su propia finalidad y utilidad. Es importante recordar que la información de la memoria caché de planes del SQE es dinámica. En otras palabras, esta información se modifica conforme aparecen y desaparecen las consultas en el sistema. Dado que la memoria caché contiene únicamente el plan de consultas actual, no sirve para “seguirle la pista” a las peticiones de SQL de un trabajo. La mejor herramienta para esta tarea es iniciar un supervisor de rendimiento de SQL (es decir, un supervisor de la base de datos).
ServerNEWS ENERO 2008
1. Visión global Para lograr una visión global de la memoria caché de planes, consulte sus propiedades. En la ventana Propiedades, encontramos información valiosa: Hora del resumen. Representa el momento en que las propiedades se han capturado y visualizado. Resumen de consultas activas. Información sobre el número de consultas ejecutadas desde la última IPL, así como el número de consultas actualmente activas. Además, se incluye el número de “aperturas completas” desde la última IPL. Una apertura completa es una petición de consulta que se ha optimizado y una nueva vía de datos abierta (cursor) creada. Resumen de uso del plan. Información sobre el tamaño de la memoria caché y su contenido actual (número de planes de consultas). Si consulta periódicamente las propiedades de la memoria caché de planes, puede usar esta información para registrar tendencias, como las fluctuaciones en el número de consultas activas y el número de planes de consultas almacenados. Recuerde que la a caché de planes del SQE es un almacenamiento temporal y se borra durante las IPL. En un sistema con un número muy alto de peticiones de SQL exclusivas y activas, los planes de consultas de la memoria caché pueden “renovarse”. Dicho de otra forma, DB2 para i5/OS gestiona automáticamente la memoria caché de planes y sustituirá los planes más antiguos por los más nuevos en función del umbral mínimo de la memoria caché. Así que es posible que una consulta concreta ya no esté representada en la memoria caché de planes. Los valores de resumen de la ventana de propiedades pueden servir de indicación de esta condición. En términos generales, en la memoria caché de planes del SQE pueden representarse unas 10.000 sentencias exclusivas cuando el umbral es de 512 MB. Si el tamaño actual de la memoria caché de planes siempre está cerca del umbral predeterminado, esto puede indicar la necesidad de aumentar el tamaño máximo de la memoria caché de planes. Al aumentar el tamaño se pueden almacenar más planes de consultas y potencialmente puede eliminar la optimización añadida a las consultas para las que se han eliminado sus planes.
www.help400.es
FIGURA 2 Opciones de filtrado de consultas
Para obtener una lista de las consultas explicables de la memoria caché de planes del SQE, use la opción Mostrar sentencias. Aparecerá una ventana nueva que incluye opciones de filtrado a la izquierda y las sentencias que cumplen los criterios a la derecha (Figura 1). Para ahorrar tiempo no se recuperan sentencias de la memoria caché. Esto permite que los analistas reduzcan el conjunto de sentencias, minimizando tiempo y energía. Para aplicar filtros y extraer las sentencias, pulse Recuperar. Para obtener una lista actualizada pulse Actualizar. La lista de consultas inicialmente se devuelve ordenada por el tiempo total acumulado, en orden descendente.
www.help400.es
ENERO 2008 ServerNEWS
21
Programación y sistemas
2. Reducir el campo visual
▲ ▲ ▲
FIGURA 1 Ventana de sentencias de la memoria caché de planes de SQL
Como puede haber miles de consultas de SQL en una memoria caché de planes, es esencial aplicar los filtros adecuados. Es un buen momento para evaluar qué es lo que buscamos. Para los entornos de Proceso de transacciones en línea (OLTP) normalmente hay cientos o miles de consultas simultáneas y se espera que estas peticiones se ejecuten deprisa. Cuando una petición de SQL concreta tiene un mal plan de acceso y se ejecuta lentamente, buscarla y optimizarla puede tener un impacto generalizado. Para buscar una de esas consultas mediante la memoria caché de planes del SQE, utilice una combinación de filtros: “Tiempo de ejecución mínimo para la ejecución más larga” y “Consultas que se ejecutan con más frecuencia”. Al establecer el tiempo de ejecución mínimo ligeramente por encima del tiempo de respuesta esperado y solicitar las cinco o diez consultas que se ejecutan con más frecuencia, podrá prestar atención a los cuellos de botella más importantes. Ajustando el filtro podrá ampliar o reducir la apertura según sus necesidades. Como mínimo, establezca el filtro de las consultas que se ejecutan con más frecuencia en 50 o menos. Esto permitirá que la pantalla inicial aparezca más deprisa. Para informar acerca de entornos de Proceso analítico en línea (OLAP), normalmente hay un conjunto más pequeño de consultas complejas y la aparición de estas peticiones a menudo es de naturaleza imprevisible (ad hoc). Si un usuario tiene una consulta en concreto que tarda mucho en ejecutarse o que parece que no responde, los filtros de la memoria caché de planes del SQE pueden ayudarle a identificar esa sentencia de SQL y su plan de acceso. Para encontrar esa consulta, utilice el filtro “Consultas ejecutadas por el usuario”. Éste es el nombre de usuario especificado durante la autenticación (inicio de sesión) en i5/OS y DB2, no el nombre que forma parte de la identificación del trabajo. Además de filtrar por usuario, todavía puede reducirse aún más la búsqueda especificando una tabla o vista concretas a las que es probable que se haga referencia (ver la Figura 2). Si no encuentra la petición que sabe que se está ejecutando lentamente, puede que sea debido a que esta sentencia de SQL la está gestionando el CQE y no el SQE. Para identificar y capturar información de una sentencia que se está ejecutando con el CQE, tendrá que utilizar un supervisor de rendimiento de SQL. En V5R4 hay muchas más opciones para iniciar un supervisor de la base de datos con filtros. En este caso, se puede iniciar un supervisor para que capture información del CQE de un usuario concreto o de las consultas que sobrepasen un límite de tiempo. Para las consultas que procese el CQE en V5R4, sería de ayuda saber qué es lo que impide usar el SQE. Una de las cosas más sencillas de buscar es la presencia de una tabla o archivo físico que
■ CACHÉ DE PLANES DE SQL tenga un archivo lógico con lógica select/omit o claves calculadas. La presencia de este tipo de archivo lógico tiene como consecuencia el uso del CQE. Si el archivo lógico existe únicamente para dar soporte a lenguajes de alto nivel y E/S de nivel de registro, puede hacerse caso omiso de dicho archivo lógico especificando un archivo QAQQINI con IGNORE_DERIVED_INDEXES = *YES en el entorno de la consulta. Para determinar qué motor de consultas se ha utilizado a partir de los datos de supervisión de la base de datos, consulte la columna QQC16 en que QQRID = 3014. El valor ‘N’ indica que se está utilizando el CQE y la columna QVC43 contendrá la razón por la que no se usa el SQE. En la consulta de la Figura 3 puede ver un ejemplo.
FIGURA 3 Consulta para determinar qué motor se ha utilizado SELECT
x.qqjnum as “Job Number”, x.qqucnt as “Query ID”, x.qqi5 as “Query Instance” y.qvc43 as “Reason for CQE”, x.qq1000 as “SQL Text” FROM –DB monitor table name— x, –DB monitor table name— y WHERE x.qqjfld = y.qqjfld AND x.qqrid = 1000 AND x.qqc21 IN (‘SI’,’OP’,’IN’,’UP’,’DL’) AND x.qqucnt <> 0 AND y.qqrid = 3014 AND y.qqc16 = ‘N’ ORDER BY qqjnum, qqucnt qqi5;
3. Concentrarse en lo importante Ahora que ya ha utilizado los filtros para buscar un conjunto de consultas y que puede ver esas consultas en la ventana Lista de sentencias, vamos a centrarnos en unas cuantas columnas interesantes: 1. Última hora de ejecución: momento en que se ejecutó por última vez esta determinada consulta 2. Tiempo más costoso: el tiempo de ejecución más largo de esta consulta dada 3. Tiempo total de proceso: tiempo de ejecución total de todas las ejecuciones de esta consulta dada 4. Número total de veces ejecutada: número de veces que se ha ejecutado la consulta
Programación y sistemas
▲ ▲ ▲
22
Al pulsar en la cabecera de una determinada columna puede ordenar la lista de forma ascendente o descendente. Al ordenar la columna Tiempo total de proceso en orden descendente, se puede analizar una determinada instancia de consulta que tarda mucho tiempo en ejecutarse. Los valores Número total de veces ejecutada y Tiempo más costoso, le darán una pista de cuál es la frecuencia con que se usa esta consulta y si es justificable o no un análisis posterior. Es mejor centrarse en las consultas que tienen tiempos promedio de ejecución relativamente largos. Una consulta que se ejecuta miles de veces y nunca tarda más que unos pocos milisegundos en ejecutarse probablemente funciona bien. Una vez identifique una consulta problemática y desee investigar su plan de acceso, invoque Visual Explain pulsando con el botón derecho del ratón en la consulta de la lista. Visual Explain toma de la memoria caché de planes del SQE todos los datos necesarios para dibujar un diagrama. Si una consulta se ejecuta muchas veces y desea determinar si los tiempos de ejecución individuales son dispares, seleccione la consulta y pulse Mostrar tiempos de ejecución más largos. Esto permite obtener de la memoria caché de planes las diez consultas que más tardan en ejecutarse. Si uno de los tiempos de ejecución de los diez es considerablemente mayor que los otros, recorra la ventana de informes para ver el Número total de resultados copiados en memoria caché usados (Total Cached Results Used, Figura 4).
ServerNEWS ENERO 2008
FIGURA 4 Columna del número total de resultados copiados en memoria caché usados
FIGURA 5 Instantánea de los datos de la memoria caché de planes El SQE puede guardar y reutilizar resultados intermedios y finales cuando se vuelve a ejecutar la misma consulta con los mismos datos. La primera consulta de la secuencia hace todo el trabajo y las consultas posteriores hacen uso de la información guardada de la primera ejecución. La columna Número total de resultados copiados en memoria caché usados puede darnos una pista de si se está sacando provecho de esta posibilidad. Otra razón de que una instancia de la consulta esté más arriba que las otras puede ser gracias a las prestaciones del almacenamiento de nivel único de i5/OS. La primera consulta realiza la E/S física de los objetos de la base de datos y las siguientes consultas son capaces de aprovecharse de las páginas que ya residen en memoria. En este caso, la memoria principal está actuando de memoria caché.
www.help400.es
ción en dos instantáneas diferentes. iSeries Navigator puede comparar dos instantáneas, mostrando las diferencias entre la misma consulta representada en cada tabla de la instantánea. Pulsando con el botón derecho del ratón en la primera instantánea se puede invocar la función de comparación. Aparecerá un recuadro de diálogo donde se puede especificar la segunda instantánea y ciertos límites (Figura 6).
5. Mantener un registro de la información
FIGURA 6 Recuadro de diálogo de la función de comparación
Dado que los datos de la memoria caché de planes del SQE se borran durante una IPL, puede resultar ventajoso capturar la información antes de apagar el sistema. Para capturar las consultas mediante iSeries Navigator, pulse con el botón derecho del ratón en el icono de la instantánea de la memoria caché de planes de SQL y seleccione Nueva y luego Instantánea (Figura 7). Al lado del nombre de la instantánea pueden especificarse opciones de filtrado para adaptar la salida. Después de crear la instantánea se puede analizar la información mediante la interfaz de iSeries Navigator. Para iniciar desde programa la creación de una instantánea, use el procedimiento almacenado DUMP_PLAN_CACHE de i5/OS en el esquema QSYS2. El procedimiento tiene dos parámetros de entrada y puede llamarse mediante cualquier interfaz de SQL. El primer parámetro es el nombre del esquema o la biblioteca en que se guardará la tabla de la instantánea y el segundo es el nombre de la tabla de la instantánea que se creará: CALL QSYS2/ DUMP_PLAN_CACHE ‘nombre esquema’, ‘nombre instantánea’
4. Sacar una instantánea; tardará demasiado
www.help400.es
Mike Cain es técnico del grupo de sistemas y tecnología de IBM y director del DB2 for i5/OS Center of Competency. Antes de ocupar este puesto, trabajó como ingeniero de sistemas de AS/400 y consultor técnico. Vive en Rochester (Minnesota).
ENERO 2008 ServerNEWS
Programación y sistemas
Ahora que ya hemos identificado una consulta concreta de nuestro interés, puede que quiera guardar los datos que describen el plan de acceso y las características de la ejecución. La interfaz de iSeries Navigator ofrece la posibilidad de sacar una “instantánea” de los datos de la memoria caché de planes (Figura 5). El resultado de la instantánea es una serie de filas en una tabla. La salida (filas y columnas) se parece a una tabla de supervisión del rendimiento de SQL detallada. La información sobre las consultas que nos interesan es ahora permanente. iSeries Navigator mantiene un registro de la instantánea, de modo que puedan realizarse análisis futuros que pueden consistir, por ejemplo, en la comparación de dos instantáneas. Imagínese identificando un determinado conjunto de consultas en dos intervalos distintos y capturando la informa-
▲ ▲ ▲
FIGURA 7 Captura de las consultas mediante iSeries Navigator
Para automatizar el proceso de creación de una instantánea antes de realizar una IPL normal, use el punto de salida QIBM_QWC_PWRDWNSYS del mandato Apagar sistema (PWRDWNSYS). Si registra un programa en este punto de salida mediante el mandato WRKREGINF, i5/OS llamará al programa antes de la operación de apagado. El programa de punto de salida puede usar el mandato RUNSQLSTM para llamar al procedimiento almacenado. Otra buena estrategia consiste en recopilar sistemáticamente la información de la memoria caché de planes del SQE creando una instantánea de forma regular a intervalos uniformes; por ejemplo, después del proceso por lotes del fin de semana o todos los lunes por la mañana. Reuniendo los datos a intervalos regulares se pueden determinar tendencias y picos, y evaluarlos. Y si una consulta se estropea por alguna razón, tener un valor de referencia de una ejecución correcta puede ser de gran utilidad para entender qué es lo que ha cambiado en el entorno de la consulta. ■
23
Ventajas e inconvenientes de las copias de seguridad incrementales Reflexione sobre la estrategia de recuperación antes de decidirse
E
por Debbie Saugen
l entorno actual de trabajo ininterrumpido nos obliga a aplicar la mejor estrategia para reducir las ventanas de copia de seguridad y recuperación. A primera vista, puede parecer que las copias de seguridad incrementales son una sabia elección, pero al desarrollar una buena estrategia de copias de seguridad también debemos tener en cuenta la mejor estrategia de recuperación. Antes de empezar a explicar las ventajas y los inconvenientes de las copias de seguridad incrementales, veamos qué es una copia de seguridad incremental y cómo aplicarla. Hay dos tipos de copias de seguridad incrementales: incrementales e incrementales acumulativas. Una copia de seguridad incremental salva los objetos que se han modificado desde la última copia de seguridad, que puede ser completa o incremental. Una copia de seguridad incremental acumulativa salva los objetos que han cambiado desde la última copia de seguridad completa.
Aplicar una estrategia de copia de seguridad incremental
Management
▲ ▲ ▲
24
i5/OS dispone del mandato Salvar objetos cambiados (SAVCHGOBJ) para llevar a cabo una copia de seguridad incremental, que salva solamente los objetos que han cambiado desde un momento dado. Para realizar una copia de seguridad incremental mediante SAVCHGOBJ, especifique una fecha y una hora de referencia con los parámetros REFDATE y REFTIME. Esta copia de seguridad incremental salva únicamente los objetos que se han modificado desde la última operación Salvar biblioteca (SAVLIB) o SAVCHGOBJ. Para efectuar una copia de seguridad incremental acumulativa, especifique una REFDATE de *SAVLIB en el mandato SAVCHGOBJ. Esto permite ejecutar una copia de seguridad incremental acumulativa salvando todos los objetos modificados desde la última copia de seguridad completa realizada con el mandato SAVLIB –el valor por omisión del mandato SAVCHGOBJ para el parámetro REFDATE es *SAVLIB–. Las copias de seguridad incrementales acumulativas ulteriores probablemente serán más grandes y la copia de seguridad tardará más tiempo en realizarse. Se puede usar el mandato Salvar objetos de biblioteca de documentos (SAVDLO) para salvar objetos de la biblioteca de documentos (DLO) que han cambiado desde un momento dado. Especifique una fecha y una hora en los parámetros REFCHGDATE (fecha de última modificación) y REFCHG-
ServerNEWS ENERO 2008
TIME (hora de última modificación) para salvar los documentos nuevos y modificados. Si especifica el valor por omisión *CHG en el parámetro DLO, se salvarán los DLO que se hayan modificado desde que se salvaron todos los DLO. Los objetos del IFS que han cambiado desde un momento dado se salvan con el mandato SAV. Especifique una fecha y una hora en el parámetro CHGPERIOD para salvar los objetos modificados desde un momento dado, durante un periodo de tiempo dado o desde que se salvaron por última vez. Si en el parámetro CHGPERIOD se especifica el valor *LASTSAVE, se salvarán todos los objetos que se hayan modificado desde que se ejecutara cualquier operación de salvar para esos objetos con UPDHST(*YES). Debe especificar *NO en el parámetro UPDHST (historia actualizada) si los objetos modificados se salvan especificando CHGPERIOD(*LASTSAVE). Si la estrategia de copia de seguridad utiliza el menú GO BACKUP de Operational Assistant o la copia de seguridad de iSeries Navigator (ambos realizan siempre copias de seguridad incrementales), las copias de seguridad diarias, semanales o mensuales se pueden configurar para que salven únicamente los objetos que se han modificado. En el caso de los DLO, si se selecciona salvar carpetas de la lista de copias de seguridad, se salvarán todos los documentos de las carpetas, independientemente de que se hayan modificado o no. Si selecciona hacer copia de seguridad de todas las carpetas, solamente se salvarán los documentos que hayan cambiado en las carpetas. En el caso de los objetos del IFS, se salvarán los directorios de usuario que hayan cambiado. Si la estrategia de copia de seguridad que se usa es Backup Recovery and Media Services (BRMS), donde se especifica si las copias de seguridad son completas o incrementales es en los grupos de control de copia de seguridad de BRMS. Al editar o crear un grupo de control de copia de seguridad, use el campo Actividades semanales para especificar el tipo de copia de seguridad que hay que realizar cada día de la semana: escriba F para llevar a cabo una copia de seguridad completa e I para realizar una copia de seguridad incremental. Los atributos del grupo de control de copia de seguridad definen el tipo de copia de seguridad incremental que se llevará a cabo. Trabajando con un grupo de control de copia de seguridad, seleccione 8=Cambiar atributos. En el campo de tipo incremental se pueden especificar los valores *CUML o *INCR. Especificando *CUML se efectuará una copia de seguridad incremental acumulativa que salvará todos los objetos modificados desde la última copia de seguridad completa.
www.help400.es
Aplicación cuidadosa
www.help400.es
Restauración de las copias de seguridad incrementales Las versiones anteriores a V5R3 no ofrecen una forma sencilla de restaurar una copia de seguridad incremental realizada mediante el mandato SAVCHGOBJ. Primero hay que restaurar la copia de seguridad completa y luego las copias de seguridad incrementales. Además, hay que saber qué objetos modificados se han salvado en los soportes de almacenamiento. Esto exige utilizar el mandato DSPTAP (Visualizar cinta). A continuación debe ejecutarse el mandato RSTOBJ para restaurar los objetos modificados para cada biblioteca del soporte de almacenamiento. Además, hay que ejecutar un mandato RSTOBJ distinto para cada biblioteca del soporte. La restauración de copias de seguridad incrementales se vuelve más fácil a partir del release V5R3. En este release, basta con cargar el soporte de salvar de objetos modificados y ejecutar el mandato RSTOBJ especificando *ANY en el parámetro SAVLIB. BRMS ofrece el método más sencillo de restaurar copias de seguridad incrementales. Lleva un control tanto de las copias de seguridad completas como incrementales y cuando se necesita efectuar una recuperación, el mandato Iniciar recuperación utilizando BRMS (STRRCYBRM) restaura ambos tipos de copias de seguridad. Para restaurar una copia de seguridad incremental tendrá que restaurar todas las copias de seguridad incrementales realizadas desde que se hizo la última copia de seguridad completa. Para restaurar una copia de seguridad incremental acumulativa tendrá que restaurar solamente la copia de seguridad incremental acumulativa más reciente.
Restauración cuidadosa
Management
Si usa el registro por diario para anotar los cambios de los objetos registrados por diario, tendrá que decidir si desea salvar estos objetos registrados por diario al salvar los objetos modificados o si salvará los receptores de diario en vez de los objetos registrados por diario. El parámetro Objetos registrados por diario (OBJJRN) del mandato SAVCHGOBJ es donde se especifica cómo salvar los cambios de los objetos registrados por diario. El parámetro OBJJRN se aplica a las áreas de datos, las colas de datos y los archivos de la base de datos registrados por diario, pero no a los objetos del IFS registrados por diario. Tenga cuidado: el valor por omisión del parámetro OBJJRN es *NO, lo que significa que cuando se ejecute el mandato SAVCHGOBJ no se salvarán los cambios en los objetos registrados por diario. Es necesario cambiar el parámetro OBJJRN a *YES para que se salven los objetos registrados por diario que han cambiado. Si los receptores de diario que se utilizarán en una recuperación del sistema no se salvan con regularidad, deberá especificar *YES en el parámetro OBJJRN. Si utiliza BRMS, especifique en los grupos de control de copia de seguridad de BRMS si desea salvar los cambios en los objetos registrados por diario. Los atributos del grupo de control de copia de seguridad especifican si salvar los cambios de los objetos registrados por diario. Trabajando con un grupo de control de copia de seguridad, seleccione 8=Cambiar atributos. Especifique *YES si desde salvar los cambios en los objetos registrados por diario y *NO en caso contrario. Tenga cuidado porque el valor por omisión del campo de objetos registrados por diario es *BKUPCY, que utiliza el valor especificado en la política de copia de seguridad de BRMS (es decir, *NO). Debe prestar atención a otro par de asuntos si usa el mandato SAVCHGOBJ. El primero es que debe asegurarse de que las operaciones de salvar que se ejecuten entre operaciones de salvar completas no afectan a lo que se salva con el mandato SAVCHGOBJ. Si algún usuario salva periódicamente objetos individuales, tendrá que asegurarse de que especifican *NO en el parámetro UPDHST de sus operaciones de salvar para evitar que su actividad de salvar afecte a la estrategia global. Este requisito puede ser difícil de hacer cumplir a los usuarios, por lo que una opción mejor, que elimina este problema, es usar BRMS. El segundo es que, como la forma más habitual de usar el mandato SAVCHGOBJ es especificando una REFDATE de *SAVLIB, debe saber que si se crea una biblioteca nueva que nunca se ha salvado, no se salvará cuando se ejecute el man-
dato SAVCHGOBJ especificando REFDATE(*SAVLIB). Si usa esta estrategia, cada vez que se cree una biblioteca nueva se deberá ejecutar inmediatamente una operación SAVLIB y especificar UPDHST(*YES). Es mucho mejor utilizar BRMS para hacer copias de seguridad incrementales ya que no hay que estar atento a los usuarios que realizan sus propias operaciones de salvar individuales ni a las bibliotecas recién creadas que no se hayan salvado. BRMS controla y gestiona todas las operaciones de salvar que se llevan a cabo en el sistema. Si se ejecuta una copia de seguridad incremental con BRMS y encuentra una biblioteca nueva que nunca se había salvado, automáticamente realizará una operación completa de salvar de la biblioteca.
A la hora de restaurar copias de seguridad incrementales hay que especificar los valores correctos en el parámetro Permitir diferencias entre objetos (ALWOBJDIF). Cuando se restaura la copia de seguridad completa durante una recuperación del sistema en un sistema distinto, debe especificarse ALWOBJDIF(*ALL) para volver a enlazar las listas de autorizaciones con sus objetos. Cuando se restauran las copias de seguridad incrementales en versiones anteriores a la V5R3, se debe especificar
▲ ▲ ▲
Si se especifica *INCR se realizará una copia de seguridad incremental que salvará solamente los objetos que hayan cambiado desde la última copia de seguridad incremental o completa. El valor por omisión del campo de tipo incremental es *BKUPCY, que indica que se usará el valor especificado en la política de copias de seguridad de BRMS. El valor por omisión para la política de copias de seguridad de BRMS es *CUML.
ENERO 2008 ServerNEWS
25
■ COPIAS DE SEGURIDAD INCREMENTALES ALWOBJDIF(*NONE). Puede ser que algunos objetos no se restauren porque la fecha de creación del archivo o del miembro del soporte de almacenamiento de salvar es distinta de la fecha de creación del archivo o miembro del sistema. Si se da ese caso, tendrá que eliminar el archivo o miembro del sistema y, a continuación, realizar la restauración de la copia de seguridad incremental. Especificar ALWOBJDIF(*ALL) al restaurar las copias de seguridad incrementales puede dar problemas si la fecha de creación del archivo o miembro del soporte de salvar no coincide con la fecha de creación del archivo o miembro del sistema. Entonces, al archivo o al miembro del sistema se le cambiará el nombre para poder restaurar el archivo o miembro del soporte. Los archivos lógicos se asociarán con la versión a la que se le ha cambiado el nombre en el sistema: los datos antiguos, no los actuales. A partir del release V5R3, cuando se restauran las copias de seguridad incrementales hay que especificar ALWOBJDIF(*FILELVL *AUTL *OWNER *PGP). La ventaja de este mandato sobre ALWOBJDIF(*ALL) es que, además de permitir todas las diferencias de objetos, intenta restaurar los archivos físicos cuando la fecha de creación del archivo o miembro del sistema es diferente de la del soporte de salvar. Si utiliza BRMS para hacer las recuperaciones del sistema, sólo tendrá que especificar ALWOBJDIF(*ALL). Cuando BRMS restaura copias de seguridad incrementales, internamente ejecuta ALWOBJDIF(*FILELVL *AUTL *OWNER *PGP).
¿Cuáles son las ventajas?
Management
▲ ▲ ▲
26
Las ventajas de las copias de seguridad incrementales son: 1) las copias de seguridad pueden tardar menos tiempo y 2) puede reducirse la cantidad de soportes de almacenamiento de salvar utilizados. Si se ejecutan copias de seguridad incrementales que no son acumulativas, solamente se salvan los objetos modificados desde la última copia de seguridad completa o incremental. Si se realizan copias de seguridad incrementales acumulativas, cada copia de seguridad acumulativa sustituye a la anterior. Conforme avanza la semana, el tamaño de las copias de seguridad acumulativas irá creciendo y la copia de seguridad llevará más tiempo y ocupará más soportes de almacenamiento. Analicemos en detalle las ventajas. Si desea reducir el tiempo que se tarda en realizar la copia de seguridad, la función “salvar mientras está activo” es el mejor método. Con esta operación se puede reducir el tiempo que se tarda en hacer las copias de seguridad finalizando las aplicaciones que modifican los objetos que se están salvando. Las aplicaciones se volverán a iniciar cuando el sistema haya establecido un punto de comprobación en los objetos. El sistema no estará disponible durante el tiempo que esté establecido el punto de comprobación, que puede variar en función del número de objetos que haya que comprobar. Muchos usuarios piensan que el tiempo que transcurre durante el establecimiento de los puntos de comprobación es mucho menor que el necesario para realizar una copia de seguridad incremental. Si se utiliza una estrategia de tipo salvar mientras está activo, deberá pensar en realizar siempre copias de seguri-
ServerNEWS ENERO 2008
dad completas en vez de copias de seguridad incrementales. Con una copia de seguridad completa solamente hay que restaurar la copia de seguridad completa en caso de que haya que recuperar el sistema. Con una estrategia de copias de seguridad completas e incrementales, primero hay que restaurar la copia de seguridad completa y luego las copias de seguridad incrementales, lo que hace que la recuperación del sistema sea más compleja y se tarde más tiempo en realizarla. La otra ventaja es que se usan menos soportes de almacenamiento para salvar los datos, pero teniendo en cuenta la alta densidad de los soportes disponibles hoy en día, puede que esa ventaja no sea tal. Puede que sólo utilice una pequeña parte del soporte de salvar para realizar una copia de seguridad incremental antes de enviarla al exterior, conforme al plan de recuperación ante siniestros. De nuevo, una estrategia de tipo salvar mientras está activo que realice copias de seguridad completas puede que utilice de forma más eficaz los soportes de almacenamiento.
¿Cuáles son los inconvenientes? Los inconvenientes de las copias de seguridad incrementales son el tiempo y la complejidad de la recuperación del sistema. Las copias de seguridad incrementales puede que incrementen el tiempo necesario para la recuperación del sistema y que aumenten la complejidad del proceso de recuperación. Las copias de seguridad incrementales tardan más tiempo en realizarse porque primero hay que restaurar las copias de seguridad completas y luego las incrementales. En releases anteriores al V5R3, también puede ser necesario dedicar tiempo a visualizar las cintas para determinar qué objetos salvados han de especificarse en el mandato RSTOBJ. Garantizar que se especifican los valores correctos en el parámetro ALWOBJDIF implica cierta complejidad. Con las versiones anteriores a la V5R3, puede ser necesario eliminar objetos para poder restaurarlos desde las copias de seguridad incrementales.
Tomar la decisión final A la hora de decidir si utilizar o no las copias de seguridad incrementales, deberá sopesar detenidamente las ventajas y los inconvenientes tanto de la estrategia de copia de seguridad como de la de recuperación. Aunque las copias de seguridad incrementales pueden ahorrarle tiempo a la hora de hacer las copias de seguridad, la función salvar mientras está activo es una buena alternativa. Las copias de seguridad incrementales aumentan el tiempo y la complejidad de las recuperaciones del sistema. Sea cual sea la decisión que tome, asegúrese de verificar regularmente la estrategia de recupe■ ración. Debbie Saugen es la máxima responsable técnica del área de Copia de seguridad y recuperación de System i del laboratorio de Rochester de IBM en Minnesota. También es consultora de técnicas de recuperación de IBM Business Continuity and Resiliency Services. A Debbie le encanta compartir sus conocimientos en los congresos técnicos de COMMON y en otros congresos sobre continuidad y capacidad de recuperación de las empresas, así como escribir para varias revistas y sitios web.
www.help400.es
Management
te ista n e ev m a la r t i tu on a r c g á nto r i ib ju c e ico r y cn e s té a íb nto r c e s Su plem u S el
▲ ▲ ▲ www.help400.es
ENERO 2008 ServerNEWS
27
Volcar información de la memoria principal Encuentre la salida en el laberinto de la memoria con la herramienta DMPMEMINF
L
por John Santosuosso
a memoria y el uso de la memoria del System i forman un complicado laberinto. Por suerte, tenemos una guía: el mandato Volcar información de la memoria principal (DMPMEMINF). Este mandato se introdujo en el release V5R3 y está disponible para el resto de versiones mediante el PTF SI12672. El único inconveniente es que es un PTF que únicamente está en inglés. Pero no se inquiete: a partir del release V5R4 forma parte del sistema operativo base y se incluye con todos los sistemas. DMPMEMINF vuelca en un archivo información sobre páginas de memoria y puede ser un mandato muy eficaz para analizar el rendimiento del sistema.
tamaño de la muestra (TAMAÑO MUESTRA = MemoriaEnBytes / 4.096 * 0,010). Ejecute varias muestras y analice cada una de forma independiente para hacerse una idea de lo que está pasando durante un momento dado. Sin embargo, tenga en cuenta que los resultados probablemente estén sesgados si la herramienta se ejecuta durante un suceso importante, como por ejemplo una consulta compleja a la base de datos. No deje que los resultados de una muestra le dicten lo que cree que está pasando. Varias muestras, tomadas correctamente, le pueden mostrar qué es lo que está pasando durante ese periodo del día. Si recopila esta información durante varios días, podrá hacerse una buena idea de lo que está pasando durante ese periodo de tiempo.
Ejecutar DMPMEMINF
Management
▲ ▲ ▲
28
Al ejecutar el mandato, se le pide que introduzca la combinación de biblioteca/archivo/miembro en que residirá la salida y cuántas páginas se quieren examinar (Figura 1). Como pasa con todas las herramientas relacionadas con el rendimiento, puede producirse un incremento de la actividad general así como interrupciones en el sistema, así que piénseselo dos veces antes de ejecutar este mandato en un sistema de producción. Hay que seguir unas cuantas normas a la hora de ejecutar esta herramienta. Primero, intente crear una agrupación para ejecutarla en ella de modo que el mandato no afecte a las páginas que se obtengan. Es decir, si el mandato se ejecuta en su propia agrupación, basta con hacer caso omiso a las páginas asociadas con la agrupación desde la que se ejecuta el mandato para no ocasionar trastornos a las páginas de las otras agrupaciones. El hecho de aislar DMPMEMINF también permite obtener resultados más precisos. En segundo lugar, para obtener con la menor molestia resultados en los que pueda confiar, le sugiero que reúna información sobre más del 1% de la memoria del sistema y luego vaya recopilando la información periódicamente (por ejemplo, cada 15 minutos). Gracias a esta forma de reunir datos, podrá comparar periodos de recogida para ver si sus suposiciones siguen siendo válidas con el tiempo. En otras palabras, si el archivo XYZ siempre aparece muy arriba en el informe de muestra, es razonable suponer que el archivo consume una buena cantidad de memoria. Una página ocupa 4.096 bytes en el System i así que para obtener el número de páginas de cada intervalo de muestra, obtenga la cantidad total de memoria en bytes y divida ese valor por el tamaño de la página. A continuación, multiplique este resultado por el
ServerNEWS ENERO 2008
Entender los datos Ahora que sabemos cómo recopilar los datos, vamos a examinarlos. Para entender la información obtenida ejecutando este mandato, sólo hace falta examinar el contenido del archivo generado por el mandato. Cada registro del archivo se correlaciona con una página de la memoria principal. Por lo tanto, si se toma una muestra de 10.000 páginas, se obtendrán 10.000 registros. El archivo generado ejecutando DMPMEMINF se describe con las definiciones de campo de la Figura 2. Si conoce el System i, seguro que rápidamente distinguirá, sólo por el nombre, los campos que más utilizará del archivo. Veamos unos cuantos. El campo POOL identifica el ID de la agrupación en que reside la página. El campo POOL se correlaciona con el identificador POOL que encontramos al ejecutar el mandato Trabajar con estado del sistema (WRKSYSSTS), es decir el valor 1 asociado con la agrupación del sistema. Si examina un poco más el archivo, verá campos como SLICTYPE, MITYPE, MISTYPE y SYMTYPE. Puede usar esos campos para categorizar las páginas de memoria. No sólo pueden categorizarse por los tipos de objeto que ya conoce (como archivos o índices de la base de datos), sino que también pueden usarse tipos internos del sistema. Algunos de los tipos más comunes son los objetos que crea el sistema para ejecutar consultas de la base de datos y los objetos utilizados para mantener los estados de los programas. Los campos OBJNAME y LIBNAME proporcionan el nombre del objeto y el nombre de la biblioteca a la que pertenece la página. La primera vez que use esta herramienta, es probable que ejecute consultas usando estos dos campos. Y, por último, los últimos campos empezando por BLOCKXFR y
www.help400.es
de páginas asociadas con cada objeto del almacenamiento principal: SELECT LIBNAME, OBJNAME, count(*) FROM jms/memory GROUP BY libname, objname ORDER BY 3 desc
Una característica que se echa de menos en el mandato DMPMEMINF es la posibilidad de recopilar información de una agrupación concreta. Esta omisión se puede compensar consultando los datos recopilados de la agrupación en la que estamos interesados. Añada una cláusula WHERE a la sentencia de SQL anterior para devolver los registros asociados solamente con una agrupación determinada. Por ejemplo, al añadir la cláusula where pool = 1, pueden consultarse únicamente las páginas asociadas con la agrupación de máquina:
FIGURA 2 Definiciones de campo de DMPMEMINF Campo ○
○
○
Definición ○
○
○
SEQ POOL PARENT VADDR PAGEOFF SLICTYPE MITYPE MISTYPE SYMTYPE OBJNAME LIBNAME SPCALIGN MCHPOOL BASEPOOL BLOCKXFR PAGEVALID PAGEREF PAGECHG PAGECHGL PAGEACPND PAGEPURGE PAGEPIN
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
Dump sequence ID ID de orden de volcado Pool ID ID de agrupación Parent segment ID ID de segmento principal Segment group ID de grupo del ID segmento Page offset Desplazamiento de página Segment type Tipo de segmento Object Tipo detype objeto Object Subtiposubtype de objeto Symbolic type Tipo simbólico Object name Nombre de objeto Library name Nombre de biblioteca Space is aligned El espacio está alineado Page into pool Página enmach la agrupación coincidente Page into base Pool Página en la agrupación base Block transfer de bloques Transferencia Page is valid La página es válida Page is referenced Se hace referencia a la página Page is changed La página ha cambiado Page on La páginachange está enlistuna lista de cambios Access pending Acceso pendiente Page is purged La página se ha purgado Page is pinned La página está asegurada
¿Qué está consumiendo memoria principal? El diseño del archivo de los datos que se están recopilando puede organizarse y manipularse de varias formas. Por ejemplo, si desea ver qué objetos usan la mayoría de las páginas de la memoria principal, ejecute la consulta de SQL siguiente que devuelve la combinación biblioteca/objeto del número
www.help400.es
Si la agrupación de máquina crece más de lo esperado, use una consulta como esta para averiguar qué está pasando. El mandato le ayudará a entender qué está consumiendo el espacio. Con frecuencia verá que los objetos temporales de SQL dominan esta agrupación. Si esto es así, ejecute y analice un supervisor de la base de datos para ver cómo llaman las aplicaciones a la base de datos. Otras veces, verá que la agrupación está dominada por objetos asociados con la creación del trabajo, lo que nos llevará a otra clase de examen. Para obtener el número de la agrupación que le interesa, utilice el mandato WRKSYSSTS para consultar el sistema (use el identificador de la agrupación que se ve a la izquierda de la pantalla de WRKSYSSTS de la interfaz SQL). Por ejemplo, utilice la pantalla de WRKSYSSTS de la Figura 3 para buscar el ID de la agrupación que se corresponde con la agrupación interactiva. Puede utilizar una consulta parecida a esta para examinar únicamente los resultados de la agrupación interactiva. Piense en la posibilidad de tomar instantáneas de la imagen anterior y posterior de la memoria de operaciones de SQL problemáticas.
¿Qué está provocando faltas de página? La herramienta DMPMEMINF también puede servir para identificar qué está provocando faltas de página. Empiece buscando patrones en los datos recopilados utilizando el método de ejecutar varias muestras. Preste especial atención a los datos que en un momento dado están en memoria y al minuto siguiente ya no... algo en ese intervalo de tiempo está causando las faltas de página. Tras identificar los dos momentos, busque los objetos que hay en memoria que no estaban antes. En algunos casos, no será un objeto nuevo, sino uno que ya reside en memoria pero que ahora tiene más páginas asociadas. Si el objeto no está allí y algún otro objeto está utilizando más páginas de memoria principal que antes, estará en vías de descubrir qué ha sacado el objeto de la memoria.
ENERO 2008 ServerNEWS
29
Management
acabando por PAGEPIN son indicadores que usa y determina el sistema operativo, y en particular la gestión de almacenamiento, para tomar decisiones sobre qué páginas se han de conservar en la memoria o sacarlas fuera de ella.
SELECT LIBNAME, OBJNAME, count(*) FROM jms/memory where pool = 1 GROUP BY libname, objname ORDER BY 3 desc
▲ ▲ ▲
FIGURA 1 Pantalla del mandato DMPMEMINF
■ VOLCAR INFORMACIÓN DE LA MEMORIA Sus hallazgos le indicarán cómo y dónde realizar los análisis. Si ve un montón de objetos de la base de datos o del sistema asociados con operaciones de SQL en ejecución, puede empezar el análisis intentando averiguar qué operaciones de SQL se estaban ejecutando. Puede ver objetos del sistema asociados con la iniciación del trabajo u objetos asociados con el crecimiento del espacio de almacenamiento dinámico. Pero no se agobie. Si tiene servicios de recogida ejecutándose en segundo plano, como la mayoría de los buenos departamentos que trabajan con System i, significa que ya está supervisando el trabajo que le está creando ese quebradero de cabeza. Por ejemplo, se puede tomar el periodo de tiempo en que cree que se está produciendo el problema e investigar los servicios de recogida en ese mismo intervalo de tiempo. Al imprimir el informe de los trabajos o consultar los datos en bruto de los servicios de recogida podrá ver inmediatamente si se han introducido trabajos nuevos en el sistema o si ha ocurrido alguna actividad inusual para un trabajo determinado. Los servicios de recogida también recopilan información sobre todas las tareas, de modo que puede verse lo ocupadas que están las tareas de gestión de almacenamiento.
Indicadores Ahora ya se habrá hecho una idea de cómo usar la herramienta DMPMEMINF. Pero todavía hemos de hablar de esos indicadores que hay al final del archivo y que utiliza el código del sistema operativo, más concretamente el código de gestión de almacenamiento, para determinar qué memoria se queda y cuál se va. Un conocimiento básico de algunos de esos indicadores nos ayudará a entender mejor la gestión de almacenamiento del System i. BLOCKXFR: transferencia de bloques PAGEVALID: la página es válida PAGEREF: se hace referencia a la página PAGECHG: la página ha cambiado PAGECHGL: la página está en una lista de cambios PAGEACPND: acceso pendiente PAGEPURGE: la página se ha purgado PAGEPIN: la página está asegurada
Management
▲ ▲ ▲
30
Examinemos esta lista en orden inverso empezando por el campo PAGEPIN del archivo. Si el campo PAGEPIN es verdadero, la página continuará en el almacenamiento bajo cualquier circunstancia. Muchos profesionales del System i creen que si se ejecuta el mandato Establecer acceso a los objetos (SETOBJACC) para cargar un archivo en memoria se está, en cierto modo, asegurando su contenido. Esto es simple y llanamente falso. Las páginas no están aseguradas (pinned); simplemente se sitúan en memoria y las páginas asociadas son tan aptas para obtenerlas como cualquier otra. El indicador PAGEPURGE significa que una página probablemente no se va a utilizar con suficiente frecuencia como para conservarla y el contenido de la página probablemente se eliminará pronto del almacenamiento principal. El indicador de purgado también se activa si el código del sistema operativo desea indicar a la gestión de almacenamiento que gra-
ServerNEWS ENERO 2008
FIGURA 3 Pantalla de WRKSYSSTS be la página y que luego la convierta en candidata a ser “fácilmente obtenible”. El indicador de purgado significa que la página tal vez se eliminará del almacenamiento principal puesto que probablemente no se va a utilizar. El indicador PAGEACPND notifica al sistema operativo que ha surgido una situación tal que la página está a la espera de que se acceda a ella. El indicador permite garantizar que la página residirá en el almacenamiento principal cuando un IOP intente leerla de éste o grabarla en él. Los dos indicadores siguientes se complementan y tienen que ver con las páginas que se están modificando. El campo PAGECHG se establece como verdadero si la página ha cambiado desde la última vez que el bit de cambio se desactivó. Si este indicador es verdadero, significa que la página debe grabarse a disco. El indicador PAGECHGL es verdadero si la página está esperando tareas que la sacarán del almacenamiento principal para grabarla. La página se habría obtenido y reutilizado si no hubiera cambiado. El campo PAGEREF se establece como verdadero cuando una tarea ha “tocado” la página desde que el bit de referencia se restableció por última vez. La gestión de almacenamiento restablece el bit de referencia en las páginas que llevan mucho tiempo en la agrupación para ayudar a identificar a qué páginas no se les hace referencia de forma activa. Básicamente, la gestión de almacenamiento toma una página antigua y desactiva el bit y, si ninguna tarea lo activa, la página puede convertirse en candidata a obtenerse. El indicador PAGEVALID se establece como verdadero si la página es válida. El indicador se usa para determinar si una referencia a una página es válida. El indicador es falso si la página actualmente está cargada de disco. BLOCKXFR lo usa internamente el código índice de la máquina en un intento de evitar faltas de páginas cuando se traen páginas lógicas. ■ John Santosuosso es ingeniero de software del grupo de sistemas de IBM. Actualmente es miembro del equipo de servicios basados en laboratorio del System i y está especializado en optimización del rendimiento de sistemas y tecnologías de bases de datos multiplataforma.
www.help400.es
Management
▲ ▲ ▲ www.help400.es
ENERO 2008 ServerNEWS
31
V6R1 Navigator para i5/OS: un sueño hecho realidad Prepárese para una nueva versión de Navigator rápida, basada en web y muy funcional por Greg Hintermeister
E
n los años que mi equipo y yo llevamos metidos en el desarrollo de iSeries Navigator, nos hemos puesto como objetivo disponer de un producto rápido, intuitivo y muy funcional que pueda usarse desde un navegador web para gestionar los entornos System i e i5/OS. Aunque no puedo contarles todo lo que tenemos previsto para la V6R1 de i5/OS, puedo darles un aperitivo de lo que les estamos preparando.
Para empezar En el release V6R1, cada instancia de i5/OS viene precargada con el nuevo Navigator para i5/OS, que se ejecuta en la instancia por omisión del servidor web. Así que, básicamente, para empezar a usarlo no tiene que hacer nada; ya está listo para gestionar inmediatamente su sistema operativo i5/OS. Simplemente escriba https://elnombredelsistema:2001 en el navegador, use el ID de usuario de i5/OS para iniciar la sesión y ya está. El “puerto 2001” puede que le resulte familiar; es donde, en versiones anteriores, se habían añadido otras funciones basadas en web. Pero ahora, con V6R1, se pueden utilizar las funciones mejoradas basadas en web para gestionar todas las tareas. (A partir de aquí, usaré “iSeries Navigator” cuando haga referencia al cliente instalado en Windows y “Navigator para i5/OS” para referirme al nuevo producto basado en web).
Un primer vistazo
En directo
▲ ▲ ▲
32
que desea realizar. En este ejemplo, si quiere cambiar valores del sistema o gestionar unidades de disco, basta con que seleccione el enlace para ver los objetos y las tareas dependientes del contexto. Otra función nueva es el botón Mostrar todo, presente en todas las páginas de resumen de la nueva interfaz de usuario web. Pulsando este botón (puede verse en la parte inferior de la Figura 2), se puede consultar una tabla diseñada a gusto del usuario de todas las tareas de una determinada categoría (Figura 3). No sólo se ve el nombre de la tarea sino que, seleccionándola, se puede ejecutar la tarea inmediatamente. Si la tarea necesita contexto, se le solicitará el objeto con el que desea trabajar. A estas alturas, puede que se haya dado cuenta de que cada tarea se encuentra en una pestaña de la interfaz de usuario web. Esta característica permite abrir fácilmente vistas de interés y luego conmutar entre ellas para poder tomar decisiones y solucionar problemas más deprisa. La característica Páginas de inicio también es nueva. Con esta función se puede seleccionar una o varias pestañas que se abrirán inmediatamente después de iniciar la sesión. Por ejemplo, supongamos que me encanta la vista Estado del sistema que me muestra información en tiempo real sobre i5/ OS. Pero también suelo hacer tareas de gestión de usuarios, por lo que me gusta que la lista de usuarios del sistema aparezca enseguida. Solamente tengo que abrir estas tareas y seleccionar Establecer como página de inicio en la lista desplegable que hay en la esquina superior derecha para gestionar las páginas de inicio (Figura 4). Esto me permite escoger qué tareas ver por omisión y eliminar otras. Gracias a esta característica se pueden obtener
Al iniciar sesión en el nuevo sistema V6R1 aparece la página de bienvenida (Figura 1). Incluso a primera vista, verá algunos elementos parecidos. Las carpetas del área de navegación de tareas de la izquierda son las mismas que las de la interfaz de iSeries Navigator. También observará que puede usar el mismo perfil de usuario de i5/ OS: para esta interfaz de usuario web no se necesita un ID de usuario alternativo (aunque esto parece obvio, en productos anteriores se exigía un ID de usuario exclusivo además del perfil de usuario de i5/OS). Navigator para i5/OS también está basado en cometidos, de modo que dependiendo del tipo de acceso que desee otorgar a un usuario, pueden eliminarse tareas del área de navegación. En Navigator para i5/OS, la lista de tareas se muestra claramente en las páginas de resumen de tareas FIGURA 1 (Figura 2). Fíjese en lo fácil que es buscar la tarea Página de bienvenida
ServerNEWS ENERO 2008
www.help400.es
datos cruciales inmediatamente, sin la demora que representa buscar la tarea y abrir la ventana. Reduce drásticamente el tiempo percibido al mostrar listas de elementos. Esto es así porque mientras estoy consultando mi página favorita, Estado del sistema, las otras tareas están recopilando todos los usuarios, trabajos y mensajes del servidor que me interesan.
Tareas basadas en web
FIGURA 2 Página de resumen de Configuración y servicio
Navigator para i5/OS no sólo proporciona una conveniente interfaz basada en web para gestionar i5/OS, sino que también incluye un montón de funciones adicionales (vea el panel de navegación de la izquierda de la Figura 4). Veamos un par de tareas con las que probablemente trabajará a menudo: Sistemas de archivos y Usuarios y grupos. En un artículo futuro explicaré más funciones.
Sistemas de archivos
FIGURA 3 «Mostrar todo» para las tareas de Configuración y servicio
Usuarios y grupos
www.help400.es
Navigator para i5/OS usa la técnica de iSeries Navigator para gestionar los usuarios. Por ejemplo, en la Figura 8 puede verse el recuadro de diálogo basado en web Nuevo usuario. Si está acostumbrado a la interfaz de iSeries Navigator, se sentirá cómodo usando esta función, con la
▲ ▲ ▲
FIGURA 4 Gestión de las Páginas de inicio
En directo
Ahora es posible gestionar sistemas de archivos desde la interfaz de usuario web. En la Figura 5 se muestra la página de resumen Sistemas de archivos. Una vez seleccionado Sistema de archivos integrado, verá el mismo árbol al que está acostumbrado en iSeries Navigator. En la Figura 6 se puede ver el sistema de archivos raíz con las tareas del menú contextual para el archivo seleccionado. Como en iSeries Navigator, Navigator para i5/OS admite funciones mejoradas de inclusión y ordenación. Los recuadros de diálogo de inclusión permiten filtrar las listas para mostrar sólo las que desee (Figura 7). Navigator para i5/OS recuerda los criterios de inclusión, por lo que el rendimiento es aún mayor. Esto es perfecto para sistemas de archivos que pueden tener miles de entradas; más aún, las funciones de inclusión están disponibles en prácticamente todas las listas de Navigator para i5/OS. Los criterios de inclusión pueden añadirse incluso en el URL. Esto significa que puede crearse un marcador, directamente desde el URL de un navegador web, para poder ver únicamente los trabajos activos que nos interesen (o que puede incorporar los resultados en un portal personal o en una aplicación basada en web).
ENERO 2008 ServerNEWS
33
■ ISERIES NAVIGATOR
FIGURA 5 Página de resumen de Sistemas de archivos
FIGURA 7 Criterios de inclusión de Sistemas de archivos
FIGURA 6 Sistemas de archivos mostrando el menú contextual de archivos ventaja añadida de poder crear un marcador para la tarea y acceder a ésta rápidamente cuando la necesite.
Otras bondades de V6R1
En directo
▲ ▲ ▲
34
Al pasar las tareas a un formato web, lo que queríamos era ofrecer las siguientes capacidades básicas: poder añadir marcadores para cada tarea, incorporar las tareas suministradas por IBM en sus propias aplicaciones basadas en web y personalizar las tareas en función del cometido del usuario. Todas las tareas de i5/OS en V6R1 brindan esas posibilidades. Por ejemplo, puesto que i5/OS ya tiene una interfaz de usuario para crear usuarios, visualizar mensajes, archivos y la salida impresa, e incluso convertir la salida en PDF, no tiene por qué crear su propia versión de una tarea si su aplicación la necesita. El Asesor de URL, que se encuentra en la categoría Internet, permite componer el URL de la tarea que se quiere incorporar. Después de haber seleccionado una categoría, la tabla se amplía y muestra las tareas que presentan una lista de objetos y las tareas que llevan a cabo acciones. Por ejemplo, en la categoría Gestión de trabajos, verá tareas
ServerNEWS ENERO 2008
FIGURA 8 Nuevo usuario conserva la sencillez de la interfaz de usuario de iSeries Navigator para Windows de listas como Trabajos activos y Trabajos de servidor, así como tareas de acción como Retener trabajo y Visualizar anotaciones de trabajos. A continuación, basta con seleccionar una tarea para agregarla a los marcadores. Como puede ver, en el release V6R1 Navigator para i5/OS presenta muchas mejoras que facilitan aún más la gestión del sistema i5/OS. Háganos saber lo que piensa del producto cuando lo pruebe. ■
Greg Hintermeister trabaja en IBM como diseñador de mecanismos de interacción con el usuario y artífice experto de IBM. Tiene amplia experiencia en el diseño de mecanismos de interacción con el usuario para los productos de gestión de sistemas y virtualización de IBM, aplicaciones inalámbricas y varias aplicaciones web. Es un conferenciante habitual en grupos de usuarios y congresos técnicos.
www.help400.es
SUMARIO 2007
01 Trucos del oficio. En algunas disciplinas técnicas la habilidad para resolver problemas sólo se desarrolla practicando... Es así como se consiguen conocer los Trucos del oficio, incluso en la programación y desarrollo de aplicaciones informáticas. (Antonio Montía, EDITORIAL) 08 Empezar con las interfaces basadas en navegador. Existen diversas alternativas para modernizar las aplicaciones del System i. Sin embargo, averiguar cómo empezar con ellas es todo un reto. Un buen punto de partida podría ser el familiarizarse con soluciones que generen interfaces basadas en navegador para, desde esta experiencia, pasar al desarrollo de aplicaciones web. (Sharon L. Hoffman, OPINIÓN) 10 Sugerencias de programación y desarrollo. Convenientemente clasificados por su temática, se presentan diferentes sugerencias y consejos sobre depuración de programas, documentación de aplicaciones, el sistema integrado de archivos o sobre cómo utilizar con ventaja los recursos propios de los lenguajes RPG, CL y SQL. Sin duda, siguiendo estos prácticos consejos y “trucos del oficio” propios de todo buen profesional, la vida le resultará más fácil. (Varios autores, EN PORTADA) 20 iSeries Navigator: novedades en V5R4. La interface gráfica del i5/OS en V5R4 viene cargada de mejoras: Más tareas basadas en web, mejor soporte para clusters, supervisores del rendimiento de la base de datos mejorados, nuevas posibilidades del Management Central, etc. (Greg Hintermeister, MANAGEMENT) 28 Secretos de la gestión de proyectos de software. Con la llegada de nuevos lenguajes y tecnologías, las aplicaciones se han vuelto más complejas. Para que sus nuevos proyectos lleguen a buen fin, entérese de lo que los gestores de proyectos de software más veteranos ya saben. (Paul Conte, MANAGEMENT)
36 Todo el mundo tiene una. El autor se refiere a una opinión, claro. Y más en concreto la suya se centra en analizar, a través de tres preguntas razonables, las posibilidades de que el iSeries siga teniendo una continuidad en un departamento informático. (Craig Pelkie, EN DIRECTO) www.help400.es www.help400.es
26 Desarrollo de APIs en RPG reutilizables. En este artículo, que se limita a tratar las llamadas a programas externos, se explican casos reales en los que las aplicaciones web (tanto si se basan en CGI como en RPG, .NET o Java) requieren una API escrita en RPG para aprovechar el código base existente y conectarlo con la aplicación web lo antes posible. (Don Denoncourt, PROGRAMACIÓN)
SUPLEMENTO HELP400
32 Un programador de programadores del siglo XXI. El paso de ser un programador de las clásicas aplicaciones monolíticas verticales a ser un programador de aplicaciones compuestas horizontales, propias de los nuevos desarrollos, nos convierte en programadores de otros programadores. No se lo tome a la ligera porque es así como se creará la próxima generación de software. (Roger Pence, MANAGEMENT)
01 Guía práctica sobre las transacciones de la base de datos. Una transacción es una operación lógica que normalmente implica leer o actualizar una o varias tablas de la base de datos. Para asegurar su integridad estas transacciones deben ser fiables. Como podrá comprobar, en el i5 esto no es un problema si las aplicaciones aprovechan el registro por diario y el control de compromiso, dos características integradas en su arquitectura desde los tiempos del S/38. (Paul Conte, SUPLEMENTO HELP400)
172 03 Llega la Web 2.0. Si bien la primera ola de aplicaciones web dependía del navegador y del servidor, la segunda ola, gracias a la denominada tecnología Ajax, extenderá el uso de las tradicionales aplicaciones de escritorio a la web. (Antonio Montía, EDITORIAL) 08 ¿Es el momento de actualizarse a Vista? Las empresas del entorno System i no tienen por qué actualizarse a Vista pero como su expansión es inevitable, puesto que vendrá preinstalado en casi todos los PCs que se compren, sus departamentos informáticos deben estar preparados para darle soporte. La parte positiva es que Vista se ejecuta sin problemas en la mayor parte de sistemas XP ya instalados y funciona bien con el iSeries Access de IBM. (Michael Otey, OPINIÓN) 10 Guía de campo de Ajax. Ajax rompe el esquema de las páginas web, limitadas y lentas, y permite ofrecer al usuario una experiencia comparable con la calidad de muchas aplicaciones de escritorio. Con esta “Guía de campo” en donde se presentan las bibliotecas e infraestructuras más importantes (y sus links), podrá conocer el actual ecosistema de Ajax y realizar la mejor elección para sus aplicaciones. (Mel Beckman, EN PORTADA) 18 Patrones de diseño de Ajax. Un ejemplo nos muestra como la naturaleza asíncrona de las interacciones de Ajax permite conectar la lógica de la empresa, escrita en RPG en el servidor, con una interfaz altamente interactiva, escrita en DHTML y JavaScript en el cliente. Los patrones de diseño de Ajax nos permiten hacerlo sin tener que volver a inventar la rueda. (Nathan M. Andelin, EN PORTADA)
36 Tenga cuidado con iSeries Navigator. Este divertido artículo nos advierte de que utilizar las herramientas de fácil manejo de iSeries Navigator para gestionar perfiles de usuario, unidades de disco, arreglos, bases de datos, etcétera, no sólo produce adicción sino que puede dejarle tiempo libre para estar con su familia o amigos... Allá usted, luego no diga que nadie le avisó. (Greg Hintermeister, MANAGEMENT) 42 ¿Quién ganará la batalla de las nuevas aplicaciones Web? Cuando apenas hemos tenido tiempo de asimilar los conceptos de AJAX y su posible utilización, aparecen nuevas soluciones que combinan las funciones y potencia de las aplicaciones del escritorio con el alcance, conectividad y facilidad de desarrollo de las aplicaciones web. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 El punto de salida “Abrir archivo de base de datos”. El i5 proporciona muchas funciones de seguridad, incluyendo medios de proteger los datos. En este artículo le ofrecemos una introducción sobre el punto de salida ¿Abrir archivo de base de datos? y le explicaremos cómo puede utilizarse para solucionar potenciales vulnerabilidades de la seguridad de la base de datos del i5. (Gene Cobb, SUPLEMENTO HELP400)
173 03 Listo para ganar. Por primera vez en la historia del entorno AS/400 existe un modelo pequeñito pero increíblemente potente, capaz de competir con los entornos Wintel. Si a ello le añadimos PHP, el popular entorno de desarrollo de aplicaciones web, bien pudiéramos decir que ahora el System i está preparado para ganar. (Antonio Montía, EDITORIAL) ENERO 2008 ServerNEWS 35 ENERO 2008 ServerNEWS
En directo
32 Crear procedimientos almacenados en RPG. Un popular método de diseño consiste en separar la lógica empresarial de la vista. Como veremos, en esta metodología los procedimientos almacenados permiten reutilizar el código de la lógica existente creado en RPG y extenderlo a la aplicación cliente. (Schadd Gray, PROGRAMACIÓN)
42 El canon digital, un “impuesto irracional”. Después de 4 meses, las patronales del sector de las TIC (AETIC y ASIMELEC) y las entidades gestoras de derechos de autor (liderada por SGAE) han roto las negociaciones. La codicia de esas entidades es tal que puede que acaben con la «gallina de los huevos de oro» que para ellos representa el chollo del canon (con el beneplácito de todos los Partidos políticos). (Carlos Bell, CONFIDENCIAL)
▲ ▲ ▲
171
35
SUMARIO 2007 06 Los nuevos IBM System i 515 y 525 Express. El 10 de Abril de 2007, entre otras novedades IBM anunció dos nuevos modelos System i cuya característica más significativa se basa en el licenciamiento por número de usuarios. (Redacción, MANAGEMENT)
samente sobre el entorno PHP en el System i. A este nuevo tipo de documentación IBM lo llama un Redwiki. Además, hemos sabido que MySQL pasará a ser otra base de datos del System i. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 08 Sea consciente de sus susceptibilidades. Los programadores suelen cogerle cariño a sus aplicaciones. Criticarlas puede ser como decirles que su hijo es feo y esto hace que muchos levanten barreras mentales en su defensa, dificultando la conversación. Como desarrollador, debería ser consciente de sus propias susceptibilidades y seguir las pautas que se exponen en este artículo. (Jef Sutherland, OPINIÓN)
10 PHP en el System i, ¿es para mí? La popularidad del lenguaje PHP hará que se abra camino entre los entornos más habituales de desarrollo en la plataforma System i: RPG, Java y .NET. Sepa la verdad sobre los pros y los contras de utilizar PHP para el desarrollo de aplicaciones web. (Don Denoncourt, EN PORTADA) 16 Creación de feeds RSS con RPG o PHP. Con las RSS los usuarios pueden obtener enseguida información actualizada de sus páginas web. En este artículo se describe su formato y se explica con dos ejemplos escritos en RPG y PHP cómo generar feeds RSS a partir de datos residentes en el System i. (Tim Massaro, EN PORTADA) 22 Optimizar el rendimiento de ODBC y OLE DB. Para lograrlo, se explican cuáles son las opciones más comunes que afectan al rendimiento del controlador ODBC de iSeries Access y se analizan algunas de las propiedades más importantes que afectan al rendimiento del proveedor OLE DB. (Michael Otey, MANAGEMENT) 28 Habilitar servicios web basados en RPG con Java. Partiendo de una breve lista de estándares de RPG y recomendaciones expuestas en el artículo “Desarrollo de APIs en RPG reutilizables” del número anterior, se proporciona una estrategia para habilitar servicios web basados en RPG con Java. (Don Denoncourt, PROGRAMACIÓN)
36 El SQL en V5R4 simplifica el control de nombres de formato de registro. En V5R4, gracias a la posibilidad de utilizar la palabra clave RCDFMT en la sentencia CREATE TABLE se simplifica el control de nombres de formato de registro y se elimina la necesidad de ejecutar la sentencia RENAME TABLE. (Kent Milligan, TRUCOS Y TÉCNICAS) 37 Comprimir y descomprimir objetos nativos del System i. Siguiendo la técnica descrita, se pueden comprimir fácilmente objetos nativos en un servidor System i de origen y luego descomprimirlos en un servidor System i de destino. (Redacción, TRUCOS Y TÉCNICAS) 42 PHP para i5/OS, primer Redbook en formato wiki. En marzo IBM inició una prueba piloto para facilitar en formato wiki documentación técnica de calidad, preci36 ServerNEWS ENERO 2008
01 El proceso de documentos XML con RPG se ha simplificado. Dada la creciente utilización de documentos XML en el entorno empresarial, en el release V5R4 de i5/OS se añadieron nuevas funciones al compilador de RPG para analizar código XML; como veremos detalladamente en este artículo, la mejor es el código de operación XML-INTO. (Barbara Morris, SUPLEMENTO HELP400)
174 03 Una ventaja competitiva. Las actuales soluciones de Business Intelligence ofrecen a las organizaciones un marco para analizar la gran cantidad diaria de datos para extraer valoraciones que les proporcionen una ventaja competitiva. Como verá en este número, la misión no es imposible. (Antonio Montía, EDITORIAL) 08 Si es fácil, ¡no se fíe! Por alguna razón, en nuestras vidas personales no queremos hacernos cargo del nivel de complejidad asociado a un buen sistema de contraseñas. Incluso, en Internet, nos gusta que se simplifique este proceso de identificación; pero en la banca online, si el sistema es fácil, ¡no se fíe! (Sean Chandler, OPINIÓN) 10 Recorrer megadatos: “Mission Possible”. El análisis empresarial (business analytics) en tiempo real se ha convertido en un componente importante para llevar con éxito un negocio. Se pueden utilizar dispositivos de base de datos para acceder y gestionar con eficacia terabytes de datos. (Nahid Jilovec, EN PORTADA) 16 Business Intelligence en System i. Tras una detallada introducción a los conceptos y herramientas propias de las soluciones de Business Intelligence, se comenta la idoneidad técnica de la plataforma System i para funciones de data warehousing y se analizan sus tendencias de futuro respecto a este tema. (Joel Klebanoff, EN PORTADA) 24 Breve historia del mundo de DB2. A través de esta historia que se remonta a 1971, nuestros lectores recordarán sus inicios como profesionales del entorno y, de sistema en sistema y de versión en versión, comprenderán la razón por la cual la actual DB2 UDB para System i, la única base de datos relacional integrada en un sistema operativo, no necesita de un administrador dedicado. (Paul Conte, MANAGEMENT)
28 Ajax en acción. Ajax permite que una página web intercambie información con un servidor sin actualizar toda la página. Alrededor de tres ejemplos el autor nos muestra de forma práctica cómo añadir y aprovechar bibliotecas externas de Ajax para simplificar expresiones de programación comunes. (Catalina Vázquez, PROGRAMACIÓN) 32 Análisis del operador Union de SQL. La finalidad del operador Union de SQL es crear datos consolidados a partir de varias sentencias Select. Para resumirlo brevemente, se puede decir que un operador Join agrupa los datos horizontalmente, mientras que el operador Union los agrupa verticalmente. (Sharon L. Hoffman, PROGRAMACIÓN) 34 Un sistema de Recuperación más económico. Se expone cómo utilizar la actualización periódica de datos para mantener archivos vitales a salvo. No se trata de un método de alta disponibilidad en el sentido tradicional. De hecho, sería justo referirnos a él como un método de mediana disponibilidad, como mucho; hay entornos el que resultaría inapropiado. ¡Pero esta técnica es gratuita! (Larry Youngren, TRUCOS Y TÉCNICAS) 42 Echelon: el conocimiento es poder. Cuando el conocimiento es poder, y de eso saben un montón los responsables del espionaje norteamericano (NSA, la Agencia Nacional de Seguridad de EE.UU.) todo es posible, como en el caso del denominado “programa Echelon”. Sin olvidarnos, claro está, de Carnivore, el del FBI... o de Google. ¡Ah, si George Orwell levantara la cabeza...! (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 Las API, una guía para principiantes. Aprenda de forma rápida a utilizar las APIs que tiene a su disposición en el System i. Como con i5/OS IBM suministra más de 2.500 APIs, cifra que está muy lejos de lo que se pretende tratar en este suplemento, vamos a examinar cómo encontrar en el Information Center la documentación de las API que desee utilizar y cómo leer esa documentación. (Scott Klement, SUPLEMENTO HELP400)
175 03 Somos “fans” del System i. Efectivamente, y con todo respeto para otras opciones, nuestro entusiasmo por el System i nos delata. Aproveche QShell, PASE o PHP (opciones gratuitas) para poder utilizar aplicaciones de código libre de todo tipo en su sistema. (Antonio Montía, EDITORIAL) 05 Llegan los System i POWER6… IBM anuncia el primer System i con procesadores POWER6, el System i www.help400.es
542, que estará disponible a partir del 14 de septiembre. Otras novedades son: el preanuncio de la Versión 6 de i5/ OS para el 2008 y los anuncios de la V5R5, DB2Web Query y MySQL para i5/OS, también para el 14 de septiembre. (Redacción, MANAGEMENT)
08 ¿Eso de modernizar es un lío? La “modernización de las aplicaciones” es en cierta forma una de las cuestiones más comentadas del System i. ¿Pero qué queremos decir exactamente con eso de modernizar las aplicaciones? El término “modernización” se ha vuelto tan universal que convierte cualquier debate en un lío. (John Ghrist, OPINIÓN)
10 Lo que pueden hacer por usted QShell y PASE. Ambos abren un mundo de posibilidades para i5/OS. QShell es una excelente herramienta para gestionar el IFS integrándose en aplicaciones nativas. PASE nos permite utilizar programas open source. (Scott Klement, EN PORTADA)
16 GNU en el System i. ¿Sabía que sin necesidad de crear un LPAR con Linux el System i puede ejecutar aplicaciones de código libre para Unix/Linux? Efectivamente, y puede requerir muy pocos recursos si sabemos cómo funciona PASE y algo de los mandatos tipo Unix. Los ejemplos de este artículo le permitirán familiarizarse con el tema. (Jeff Yanoviak, EN PORTADA) 20 Un libro sobre la Web 2.0. Puesto que el futuro de la web todavía se está definiendo, es importante que podamos contar con buenos argumentos y ejemplos de referencia. Por esta razón les presentamos “Web 2.0”, el primer libro en España que analiza su evolución y, también, un mapa visual que agrupa ejemplos de servicios web 2.0 hispanos. (Carlos Bell, PRESENTACIÓN) 24 Sesión doble de eventos Microsoft: CodeCamp y ReMIX. Desde el lanzamiento de Windows Vista la actividad de Microsoft no cesa. Como no nos queríamos perder sus últimas novedades en el campo del desarrollo de software, hemos participado “en directo” en dos de sus presentaciones, Code Camp y ReMIX, realizadas a primeros de junio. (José Luis Latorre, EN DIRECTO)
26 ¿Dónde están las anotaciones de trabajo? El nuevo mandato WRKJOBLOG (Trabajar con anotaciones de trabajo) de la V5R4 ofrece una nueva forma de buscar, mostrar y eliminar en el sistema anotaciones de trabajo pendientes y en spool. Familiarizarse con él y sus parámetros le facilitará su labor cotidiana con el sistema. (Greg Fix, PROGRAMACIÓN)
objetos - Cómo ejecutar sentencias de SQL en archivos de múltiples miembros. (Redacción, TRUCOS Y TÉCNICAS)
42 ¿Merece la pena empaparse de tecnología? No te lo pierdas: acaba de nacer un incipiente mercado de aplicaciones capaces de sincronizar el trabajo en Internet y en el escritorio. ¿Te imaginas si los mecánicos o los arquitectos renovaran toda su tecnología cada tres o cuatro años? Pues es lo que hay. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 Ejemplos de envolturas de API. Una API es un programa interno que permite a los programas de usuario acceder a funciones del sistema; sin embargo, dadas sus características, su utilización no es fácil. Recurrir a la creación de envolturas (o wrapers en inglés) puede simplificar muchas de las complejidades de las API. (Robb Wiedrich, SUPLEMENTO HELP400)
176 03 Iniciamos un nuevo curso. Nosotros, simbólicamente y como han hecho más de ocho millones y medio de españoles, también iniciábamos un nuevo curso. Y nos pareció oportuno hacerlo con un número casi monográfico dedicado a temas de SQL en System i. Aprender y/o profundizar en SQL será “su mejor jugada”. (Antonio Montía, EDITORIAL) 08 Marty McFly le da la bienvenida al AS/2007. El autor, Bob Tipton, colaborador habitual de la edición internacional de la revista desde 1984, valorando positivamente los modelos 515 y 525 del System i y la nueva estrategia comercial de IBM, hace un paralelismo con la primera película de ‘Regreso al futuro’. En su opinión, por fin IBM ha dado en el blanco. (Robert Tipton, OPINIÓN) 10 La definición de columnas de SQL. Desde los inicios del AS/400 hemos utilizado archivos físicos creados con DDS y el mandato CRTPF. En SQL cambian las denominaciones, pero en el fondo también se crean y se trabaja con archivos físicos. En el artículo se exponen los conceptos más básicos: la definición de columnas y cómo trabajar con ellas. (Sue Romano, EN PORTADA) 18 Programar con SQL incrustado. Para muchos
32 Cómo utilizar JDBC para acceder a SQL Server desde el iSeries. Muchos controladores tipo ODBC permiten acceder a datos del iSeries, pero es difícil hallar uno que permita una conexión en sentido contrario. Sepa cómo utilizar JDBC para conectar el iSeries a bases externas. (Michael Otey, PROGRAMACIÓN)
desarrolladores que trabajan con System i, incluir sentencias SQL dentro de un programa RPG (u otro HLL) permite aprovecha lo mejor de ambos mundos. Y realmente, todo lo que se necesita es saber programar en RPG y conocer por encima la sintaxis de SQL. (Sharon L. Hoffman, EN PORTADA)
36 3 Trucos & Técnicas. Optimización de las velocidades de lectura del IFS - Cómo recuperar un bloqueo de
24 Seguridad de SQL en i5/OS. En cualquier aplicación la seguridad es muy importante; funciones como la
www.help400.es
seguridad a nivel de columna, por ejemplo, hacen que las opciones de seguridad propias de SQL sean particularmente útiles para complementar las funciones de seguridad del i5/OS. (Kevin Forsythe, PROGRAMACIÓN)
28 La memoria caché de planes de SQL al descubierto. La gestión automática de los planes de acceso que genera el optimizador de consultas de DB2 para i5/ OS facilita el trabajo de sus administradores. Saber cómo DB2 utiliza la memoria caché de planes de SQL y su gestión centralizada le permitirán aumentar su rendimiento. (Kent Milligan, MANAGEMENT) 34 Acceso a la base de datos desde CL con la CLI de SQL. Desde la V5R3 es posible utilizar las APIs CLI (Call Level Interface) de SQL desde programas ILE CL. Con ellas se puede utilizar SQL para leer archivos con muy pocas restricciones, así como hacer actualizaciones, agregar nuevos registros, etc. (Scott Klement, TRUCOS Y TÉCNICAS) 36 Introducción a Silverlight. Silverlight, un complemento para navegadores de internet desarrollado por Microsoft, incluye algunas funciones de WPF (Windows Presentation Foundation, de .NET) como gráficos vectoriales, animaciones y otros elementos para el desarrollo de aplicaciones web de alta tecnología. (José Luis Latorre, PRESENTACIÓN) 42 Si no puedes vencer a tu enemigo, únete a él. Al anunciar Silverlight, Microsoft hizo publico el acuerdo alcanzado con Novell (que desarrolla Moonlight, una versión open source basada en Mono) para facilitarle las especificaciones, los test oficiales y acceso a los codecs que utiliza Silverlight. Con ello, Novell se compromete a implementar Silverlight para Linux. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 Optimización de consultas en DB2 para i5/OS. Como usuario de SQL y DB2 para i5/OS, debería tener un conocimiento básico de la optimización de consultas para sacar el máximo partido del sistema. La optimización de consultas es una idea dinámica y compleja. Aunque en System i el proceso parezca fácil, como desarrollador de aplicaciones le será de gran ayuda saber en qué consiste esta optimización. (Jim Flanagan, SUPLEMENTO HELP400)
177 03 Querer es poder. Internet ha alcanzado su mayoría de edad. Ha llegado el momento de que el desarrollo de aplicaciones web sea algo habitual en nuestras instalaciones. Ante las dudas, y como responsable, recuerde que “querer es poder”. (Antonio Montía, EDITORIAL) ENERO 2008 ServerNEWS 37
SUMARIO 2007 08 Alta Disponibilidad: el sector se concentra. A todos los sectores de TI les acaba llegando la concentración, por tanto, no es sorprendente que también haya ocurrido en el sector de Alta Disponibilidad para System i. Es lógico que ahora sus usuarios deseen saber cómo esta concentración afecta a sus intereses particulares. (José Mª Martín, OPINIÓN) 10 Introducción al desarrollo de aplicaciones web. Para empezar, aunque las aplicaciones web sean más complejas que sus equivalentes de pantalla verde, saber definir las decisiones a adoptar y reunir toda la información necesaria para hacerlo, es la forma más práctica de abordar su desarrollo. (Sharon L. Hoffman, EN PORTADA) 14 15 principios para diseñar la interfaz de usuario de un navegador. Las aplicaciones basadas en navegador pueden compararse favorablemente con las tradicionales; el reto es conservar la facilidad de uso y, para eso, lo mejor es respetar los conceptos básicos del desarrollo de interfaces de usuario. (Mel Beckman, EN PORTADA) 18 JavaScript y DOM. Este artículo muestra cómo únicamente con JavaScript y DOM (es decir, sin recurrir a tecnología Ajax) se puede crear una aplicación web dinámica, capaz de manipular formularios y divisiones de HTML y rellenar con datos de un archivo XML una tabla que puede ordenarse. (Craig Hatmaker, EN PORTADA) 26 Instalación de aplicaciones web de código libre escritas en PHP. PHP para System i aporta algo más que una nueva herramienta de desarrollo de aplicaciones web. Ahora los usuarios del System i pueden elegir entre miles de aplicaciones de código libre y completamente gratuitas. El artículo muestra cómo instalar varias de ellas y la popular base de datos MySQL. (Alan Seiden, PROGRAMACIÓN) 32 Apúntese un tanto con el desarrollo de software ágil. En el enloquecido panorama actual del desarrollo de software, necesitará toda la ayuda posible. Adoptar los principios del desarrollo de software ágil no es la panacea, pero sus valores y conceptos básicos pueden indicarle cuál es el camino a la cordura. (Roger Pence, MANAGEMENT) 36 Informática empresarial con capacidad de recuperación. No hay nada más importante para un departamento informático que asegurarse de que el sistema empresarial tiene capacidad de recuperación y está protegido. Por tanto, siempre será útil poder contar con los consejos de un experto, fruto de la experiencia vivida en muchas instalaciones. (Dan Riehl, MANAGEMENT) 42 No basta con que el System i sea bueno… Desde hace varios años y pese a los esfuerzos de IBM, las ventas del System i siguen bajando. Por muy bueno que éste sea ¿quién confiaría en un sistema para el que apenas hay una oferta visible en el mercado de aplicaciones y servicios? Con que el System i sea el mejor sistema 38 ServerNEWS ENERO 2008
no basta, también ha de aparentarlo. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 Como realizar una buena implementación ILE. No permita que los conceptos de ILE –subprocedimientos, programas de servicio, módulos, directorios de enlace, lenguajes enlazadores o grupos de activación, entre otros–, le paralicen. En el artículo se revisan las cuestiones a tener en cuenta para controlar y gestionar el entorno de desarrollo y cómo aprovechar al máximo las ventajas que ofrece ILE. (Paul Tuohy, SUPLEMENTO HELP400)
178 03 Es hora de renovar. La mejor estrategia para modernizar aplicaciones consiste en buscar el equilibrio entre las necesidades informáticas y las de la organización; eso sí, sin descuidar la modernización del entorno de desarrollo. (Antonio Montía, EDITORIAL) 08 No es tan fácil ser verde. Puede que la primera impresión al ver una pantalla verde del System i sea la de que estamos ante un sistema obsoleto, pero aunque a nivel tecnológico se trate de una falsa impresión, vale la pena tenerlo en cuenta para “ocultarla” y que nadie pueda cuestionar la modernidad de la plataforma. (Randall Munson, OPINIÓN) 10 Equilibrar las necesidades informáticas y de la empresa. La mejor estrategia para modernizar las aplicaciones se basa en lograr un equilibrio entre la tecnología y las necesidades de la empresa, garantizando que primero se obtendrá lo que más se necesite. (Carsten Flensburg, EN PORTADA) 14 El desarrollo en System i sigue progresando. En IBM, conscientes de que para ese trabajo de modernización hacen falta buenas herramientas, sigue mejorando las posibilidades y funciones de WDSc (WebSphere Development Studio client), el actual entorno de desarrollo integrado del System i. (George N. Farr, EN PORTADA) 18 Integrar Windows Vista y el System i. En ese proceso de renovación no podemos olvidar las infraestructuras tecnológicas que lo sustentan. En este artículo veremos qué nos ofrece Vista y algunos consejos para que funcione correctamente con el System i. (Michael Otey, EN PORTADA) 24 Conectar aplicaciones en VB y RPG con colas de datos. Las colas de datos son una de las mejores tecnologías para conectar aplicaciones escritas en RPG del System i con aplicaciones de Windows escritas en Visual
Basic (VB), con la ventaja de ser un mecanismo de transferencia muy rápido y muy fácil de utilizar. (Michael Otey, PROGRAMACIÓN)
30 Utilización de tablas de consultas materializadas. Con las MQT (tablas de consulta materializadas) de la V4R5, disponemos de un nuevo método para crear los omnipresentes resúmenes ejecutivos. Sin programar, ahora podemos crear una tabla de resumen y volver a sincronizar los datos cuando sea necesario. (Eddie Alexander, PROGRAMACIÓN) 36 El aluvión de adquisiciones en el entorno System i, ¿es contagioso? No debe tratarse de una epidemia pero sea por la razón que sea, el mundo del System i ha estado y parece que sigue estando en el ojo del huracán de las fusiones y las adquisiciones de empresas de tecnología informática. (Chris Miller, MANAGEMENT) 39 A la caza de los misteriosos devoradores de discos. Al buscar al culpable, no olvide repasar los archivos de salvar. - Además, cómo podemos restringir la conexión de los usuarios a horas determinadas. (Dan Riehl, TRUCOS Y TÉCNICAS) 42 Más información sobre la próxima V6R1 de i5/ OS. Como la información que hallamos en la web de IBM España es muy... –ésteee, ¿cómo lo diría yo, muy parca en detalles?, mejor acudir a la de EE.UU. en donde hallaremos un interesante resumen de las novedades planificadas, de entre las que he seleccionado varias. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 La arquitectura MVC facilita la programación en ILE RPG. Muchos expertos sugieren adoptar la estrategia Modelo-Vista-Controlador (MVC) para escribir nuevas aplicaciones. Si piensa sobre las estructuras básicas que utiliza normalmente cuando programa, descubrirá otras formas de abordarlas en ILE RPG. (Scott Klement, SUPLEMENTO HELP400)
179 03 Voz sobre IP. Como veremos en este número, la tecnología de Voz sobre IP, tras un largo periodo de gestación, ha empezado a cumplir sus promesas y, consecuentemente, figura en la agenda de mejoras tecnológicas de muchas empresas y es, por supuesto, una parte importante en las estrategias de IBM y Microsoft. (Antonio Montía, EDITORIAL) 08 ¿Por qué dificultan tanto la información de la web? No es lógico, pero hay un considerable número de www.help400.es
sitios web de proveedores de productos que, sin razón aparente, dificultan la obtención de información sobre sus ofertas, como pueden ser sus características, sistemas operativos, o precios orientativos. ¿Por qué parece que para algunas empresas esto es pedir demasiado? (John Ghrist, OPINIÓN)
10 Entender VoIP. El que una llamada telefónica pueda convertirse en un flujo de paquetes IP (Voz sobre IP) no sólo permite ahorrar costes sino también integrar la voz en las aplicaciones de la empresa. En este artículo se exponen todos los conceptos necesarios para entender la transición de voz a datos... y no morir en el intento. (Mel Beckman, EN PORTADA) 20 Telefonía IP en el System i. El poder utilizar telefonía IP en el mundo empresarial es una ventaja competitiva: por ello IBM y 3Com han trabajado juntos para poder ofrecer la primera solución de la industria que permite integrar la telefonía IP con las aplicaciones empresariales, correo electrónico y mensajería en una misma plataforma: el System i. (Carlos Bell, EN PORTADA) 22 Alta Disponibilidad: entrevista con Daniel NeVille. Un resumen de los temas tratados por Software Greenhouse y Vision Solutions en su reunión de usuarios, complementado por una entrevista en exclusiva con Daniel NeVille, fundador y presidente de iTera hasta su fusión con Vision de la que ahora es miembro del consejo de administración. (Alberto C. Blanch, EN DIRECTO) 26 ¿Cuál es el estado de su base de datos? En V5R4, la nueva función Health Center de DB2 para i5/OS ofrece la posibilidad de conocer el estado de la base de datos –visión general, límites de tamaños y de diseño– desde una única ubicación. Una herramienta que permite mantenerla en forma para prevenir futuros problemas. (Jim Flanagan, PROGRAMACIÓN)
30 Utilizar DB2 Web Query con vistas de SQL y procedimientos almacenados. Este artículo no pretende ser una introducción a DB2 Web Query, anunciado por IBM en julio, sino que se centra en algunas cuestiones y técnicas más avanzadas que demuestran su potencia, como la creación de sinónimos utilizando vistas de SQL o los basados en procedimientos almacenados. (Gene Cobb, PROGRAMACIÓN)
34 El entorno System i al descubierto. A través de una encuesta realizada por System iNetworks, más de 600 profesionales del System i nos invitan a visitar sus lugares de trabajo y comparten con nosotros sus inquietudes, sus iniciativas más importantes en modernización y desarrollo y cuales consideran que son los mayores desafíos a los que se enfrentan sus departamentos. (Redacción, MANAGEMENT) 42 Del canon a la contracultura. Al final se han aprobado las tarifas de un canon que afecta indiscriminadamente a todo tipo de soportes digitales. Según la SGAE, eso es defender la cultura. Según la opinión públiwww.help400.es
ca, este canon no tiene nada que ver con la cultura, sólo es el dinero que propiciará su corrupción. (Carlos Bell, CONFIDENCIAL)
SUPLEMENTO HELP400 01 Utilizar DOM y XML Toolkit para procesar XML con RPG. Desde la V5R4, RPG dispone de varias funciones y códigos de operación para procesar directamente documentos XML, pero sin considerar su DTD y omitiendo los espacios de nombres. Si necesita más potencia o todavía no dispone de la V5R4, puede que le interese conocer cómo hacerlo con XML Toolkit para System i5. (Craig Hatmaker, SUPLEMENTO HELP400)
180 01 Puede que la “i” sea de “indeciso”. Hace años que en sus estrategias de consolidación de líneas de fabricación, IBM inició la convergencia del hardware de los System i y System p. Sin embargo, por alguna que otra razón IBM no es capaz de decidirse. ¿Es esta indecisión la que marca la “i” de nuestra plataforma? (Sean Chandler, OPINIÓN) 10 Las reglas de oro de RPG. Hace más de 40 años que el RPG fue diseñado expresamente para el desarrollo de aplicaciones empresariales. Hoy en día, para aprovechar esta característica única que lo diferencia del resto de lenguajes, sólo es necesario seguir una serie de “reglas de oro” al escribir un programa en ILE RPG que sea actual. (Scott Klement, EN PORTADA) 14 Asimilando el desarrollo del software. Como programadores, sumergirnos totalmente en el código de un programa nos permite entender como funciona y abordar con éxito su mantenimiento. Además, para aquellos que estén aprendiendo Java, PHP o .NET, estudiar aplicaciones existentes es una estrategia de aprendizaje fantástica. (Don Denoncourt, EN PORTADA) 20 Cómo usar iSeries Navigator para analizar la caché de planes de SQL. En V5R4, iSeries Navigator
¿LOS RECUERDA? CON UN ESPACIO REDUCIDO TAMBIÉN PUEDE LOGRAR UN GRAN IMPACTO
permite acceder de forma gráfica a la información disponible en la memoria caché de planes del motor de consultas de SQL. En el artículo se exponen las cinco formas imprescindibles de analizar esta información que siempre está activada y siempre está ahí. (Mike Cain, PROGRAMACIÓN)
24 Ventajas e inconvenientes de las copias de seguridad incrementales. El entorno actual de trabajo ininterrumpido nos obliga a buscar la mejor estrategia para reducir las ventanas de copia de seguridad y recuperación. Las copias de seguridad incrementales parecen una sabia elección, pero al desarrollar una buena estrategia de copias también debemos tener en cuenta la mejor estrategia de recuperación. (Debbie Saugen, MANAGEMENT) 28 Volcar información de la memoria principal. Desde la V5R4 el mandato DMPMEMINF (Volcar información de la memoria principal) forma parte del i5/OS. Este mandato vuelca en un archivo información sobre páginas de memoria y puede ser un mandato muy eficaz para analizar el rendimiento del sistema. (John Santosuosso, MANAGEMENT) 32 V6R1 Navigator para i5/OS: un sueño hecho realidad. Un pequeño anticipo de una de las novedades incorporadas en el próximo release V6R1 de i5/OS. Prepárese para una nueva versión de Navigator más rápida, basada en web y muy funcional que facilita aún más la gestión del sistema. (Greg Hintermeister, EN DIRECTO) 35 Resumen de los arículos publicados durante el año. Como cada año, incluimos un indice con el contenido de cada uno de los números de la revista y del Suplemento Help400 (sólo para suscriptores)- (Redacción, SUMARIO 2007).
SUPLEMENTO HELP400 01 Creación de documentos de XML con RPG y DOM. Los largísimos nombres de procedimientos y las extensas listas de parámetros hacen que los programas del XML Toolkit para iSeries sean difíciles de leer y de entender. En esta segunda parte sobre su utilización para procesar XML con RPG se muestra un ejemplo de cómo crear un documento de XML para enviarlo como archivo de texto a otro sistema. (Craig Caulfield, SUPLEMENTO HELP400)
Recordando un anuncio de 1971
UN FORMATO PARA PEQUEÑOS PRESUPUESTOS CON EL QUE OBTENDRÁ GRANDES RESULTADOS
Para más información: Srta. Nuri, telf. 932.310.049 - email: n.navarro@help400.com ENERO 2008 ServerNEWS 39
GUIA
40 ServerNEWS ENERO 2008
www.help400.es
GUIA
MANTENIMIENTO Y BROKERAGE INFORMÁTICO, S.L. Mantenimiento / Alquiler y Brokerage / Venta / Redes Backup Center Pere IV 78-82, 7º 3ª 08005 - Barcelona (Spain) T. 34 934 854 427 Fax 34 934 850 168
www.help400.es
P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga
ENERO 2008 ServerNEWS 41
confidencial
por Carlos Bell
2008: EL AÑO DE LOS BLADECENTER CON i5/OS En el número de noviembre, cuando a grandes rasgos os comentaba las novedades previstas para la V6R1 del i5/OS, también os comenté que IBM acababa de anunciar el primer servidor blade basado en POWER6, el JS22, con unas capacidades de virtualización, rendimiento y fiabilidad sin precedentes en un formato blade. Añadía, además, que posiblemente la próxima V6R1 de i5/OS también estaría disponible para los nuevos JS22 BladeCenter. Pues... va a ser que sí. La confirmación la hallé poco después en una Nota de prensa de IBM del mismo mes, donde, bajo el título de “IBM lanza nuevas soluciones y servicios para potenciar la eficiencia energética y la disponibilidad en los centros de datos” así lo indicaba. Lástima, el título me hizo perder la oportunidad de confirmaros el insistente rumor de aquellos días. Además de ensalzar las “características ecológicas” del JS22, en la nota se hablaba del “Power Systems Software”, una nueva oferta de software modular para clientes de UNIX, Linux e i5/OS, compatible con los nuevos servidores blade basados en POWER6 así como en los servidores System p y System i. Este software incluye las siguientes novedades: • La aplicación Advanced POWER Virtualization (APV) Standard Edition que permite alojar hasta 10 servidores virtuales por núcleo de procesador en un único servidor y puede reducir hasta un 72% el coste total de propiedad si se combina con servidores basados en POWER. IBM presentaba además la APV Enterprise Edition, que permite mover particiones lógicas activas de un servidor POWER6 a otro, incluyendo el sistema operativo y todas las aplicaciones asociadas. • Active Energy Manager, una herramienta que proporciona tendencias de consumo y facilita el ahorro de energía, la limitación de la potencia máxima y la elaboración de mediciones térmicas e informes que ayudan a realizar una mejor planificación de las instalaciones y los costes. • La versión final de AIX 6, la más reciente del sistema operativo UNIX de IBM y que aprovecha la tecnología de POWER6 y sus avances en ahorro energético y capacidades de virtualización. • IBM Workload Partition Manager para AIX, una tecnología de virtualización que reduce el número de imágenes del sistema operativo que hay que gestionar cuando se consolidan cargas de trabajo. • Nuevas versiones de la herramienta High Availability Cluster Management Program (HACMP) V5.4.1 y de Cluster Suite Manager V1.7 para AIX y Linux, diseñadas para ayudar a maximizar la disponibilidad y rendimiento del sistema. Volviendo al aquí y ahora, los dimes y diretes que circulan por Internet sobre la próxima versión de i5/OS lo confirman. En los BladeCenter, y según estos rumores, el i5/OS se ejecutará bajo la supervisión del llamado “POWER6 hypervisor” que gestiona la virtualización de dispositivos de IO, como los discos, por ejemplo. Esta virtualización permitirá que el i5/OS opere de forma transparente con la base de datos DB2, integrada en el propio sistema operativo. Bueno ¿y...? Como cita el marketing de IBM, si tu empresa es dinámica, una solución de tamaño único sencillamente no te funcionará. Para solucionar las amplias y diversas necesidades, la infraestructura TI debe ser abierta, flexible, modular e innovadora, y eso es lo que ofrece esta tecnología. Ese es el gran atractivo de los servidores blade, por eso opino que éste será el año de los BladeCenter. Encontrarás más información en www.blade.org.
■ INDICE DE ANUNCIANTES ENERO 2008 Empresa
Página
AMERICAN TOP TOOLS ..................... Interior portada AMERICAN TOP TOOLS ....... Interior contraportada CACOVAI ................................................................................ 15 GUÍA ................................................................................. 40, 41 IBM .................................................................. Contraportada SOFTWARE GREENHOUSE .............................................. 19 SUSCRIPCION ServerNEWS ............................................ 31 TANGO/04 ................................................................................ 9 VISION SOLUTIONS ............................................................ 19
42 ServerNEWS ENERO 2008
Un nuevo enfoque para el entorno AS/400
Sería desleal con todos vosotros si no resaltara que, por primera vez en los dos últimos años, los resultados de IBM con el System i han sido positivos en el cuarto trimestre de 2007: un 2% de crecimiento en comparación al mismo periodo del año anterior. Es poquito, lo sé. Pero algo es algo. Y si en estas condiciones los de IBM saben aprovechar “la jugada”, es muy posible que, cuando leas estas líneas, ya se haya producido el anuncio de la nueva V6R1 del i5/OS y sea público que se podrá ejecutar en los BladeCenter basados en POWER6. Eps... para nosotros, acomodados en aquel AS/400 “todo en uno” no es una panacea, porque son más difíciles de configurar, pero es que estamos hablando del mundo real de las empresas, donde los servidores Intel, las SAN (Storage Area Networks) y/o las infraestructuras de VoIP, son “el pan nuestro de cada día” de los informáticos. ■ Como sabes, esta información es estrictamente confidencial. Aunque nosotros neguemos haberlo dicho o escrito, te autorizo a que obres en consecuencia www.help400.es