Las nuevas características del DB2 Express-C 9.7.2

IBM® DB2® Express-C ha sido recientemente mejorada con una serie de características importantes y mejoras que antes solo eran disponibles en las versiones pagadas de DB2 para Linux®, UNIX®, y Windows®. Aprende como puedes tomar ventaja de estas nuevas capabilidades relacionadas con performance, desarrollo de aplicaciones, almacenamiento, seguridad, y más!.

Raul F. Chong, DB2 on Campus program manager, IBM

Raul Chong photoRaul F. Chong es el gerente del programa DB2 on Campus y evangelizador de DB2 basado en el laboratorio de IBM en Toronto. Su principal responsabilidad es hacer crecer la comunidad de DB2 a nivel mundial. Raul es certificado en DB2 como experto en soluciones tanto como administrador de DB2 como desarrollador de aplicaciones. El ha trabajado en muchas posiciones dentro de IBM desde 1997 y es el autor principal del libro Understanding DB2 - Learning Visually with Examples 2da Edicion (ISBN-10: 0131580183).


Nivel de autor contribuyente en developerWorks

07-07-2010

Introducción

DB2 Express-C es la edición para la comunidad y gratuita de DB2. Uno la puede utilizar en un sistema en producción, embeberla y distribuirla en su aplicativo o simplemente utilizarla para desarrollo. Todo de manera gratuita! Descargue ahora el DB2 Express-c

DB2 Express-C puede ser instalada en servidores de cualquier tamaño, sin embargo, solo se utilizará dos cores y 2GB de memoria. Mas aún, no hay límite en el tamaño de la base de datos. El juego robusto de funciones ofrecidas por el DB2 Express-C es mucho mas favorable que el de otras ediciones para la comunidad de otros vendedores de bases de datos.

La version 9.7 de DB2 Express-C fue lanzada en Junio del 2009. Desde entonces, la imágen del DB2 Express-C ha sido refrescada dos veces. El último refresco es el 9.7.2, que fué lanzada el 28 de Mayo del 2010. Este artículo resume algunas de las nuevas características y mejoras claves que se han añadido al producto desde la versión 9.7 al presente refresco 9.7.2. Para una descripción completa de todas las nuevas funcionalidades incluídas en la versión 9.7 y los dos refrescos de la imágen, visite la sección Qué hay de nuevo en el Centro de Informaciones online del motor de base de datos IBM DB2 para Linux, UNIX, y Windows.

Mejorias de bloqueo

Con la nueva semántica Currently Committed (CC) del aislamiento Cursor Stability (CS), actualizadores (operaciones UPDATE) no más bloquean a lectores (operaciones SELECT). Lectores pueden leer ahora el valor que está actualmente comitido (committed) antes de haber realizado una operación UPDATE. Esta mejoría ayuda con concurrencia y reduce el bloqueo mutuo.

Por ejemplo, asuma que tiene la tabla T1 con el siguiente contenido:

Table 1. Contenido de la tabla T1
FIRSTNAME LASTNAME
Raul Chong
Jin Xie

Ahora, asuma que una aplicación AppA ejecuta la siguiente sentencia, pero no hace un commit:

 update T1 set lastname = 'Smith' where firstname = 'Raul'

Luego, asuma que la aplicación AppB ejecuta esta sentencia:

 select lastname from T1 where firstname = 'Raul' with CS

Con versiones anteriores a la 9.7 de DB2, esta sentencia ejecutada por AppB se hubiera colgado porque estaría esperando que el candado exclusivo que lo tiene la sentencia update de la aplicación AppA (el actualizador) sea soltado. Cuando uno habilita este nuevo comportamiento CS (que es el de default para nuevas bases de datos creadas con DB2 9.7), la sentencia de AppB retorna el valor actualmente comitido (committed), en vez de esperar. En este ejemplo, el valor que se retorna seria Chong porque la actualización de AppA aún no ha sido comitida.


Mejorías de performance

DB2 9.7 introduce la característica concentrador de sentencias (statement concentrator), que mejora el performance de programas que usan SQL dinámico y que son desarrolladas en lenguajes como Ruby y PHP. El concentrador de sentencias busca a las sentencias SQL que se ven exactamente igual, excepto por el valor del parámetro. Luego, como su nombre sugiere, concentra todos esas sentencias parecidas en una sola sentencia. Por ejemplo, con el concentrador de sentencias, las siguientes sentencias:

 SELECT name FROM employee WHERE empid = 10 SELECT name FROM
                employee WHERE empid = 20 SELECT name FROM employee WHERE empid = 30

se concentraria en lo siguiente:

 SELECT name FROM employee WHERE empid = ?

El signo de interrogación (?) representa un marcador del parámetro. Para este ejemplo en particular, DB2 proveeria los valors de 10, 20, y 30 durante el runtime.

Esta característica ofrece mejorías importantes de performance sobre versiones anteriores de DB2. Sin el concentrador de sentencias, DB2 pensaría que cada sentencia en el ejemplo anterior, es única, y compilaría y ejecutaría cada sentencia de manera separada. Sin embargo, el plan de acceso para todas las sentencias es posiblemente el mismo, asi que esto significaría un desperdicio de recursos para calcular el mismo plan repetidamente. Con el concentrador de sentencias, DB2 9.7 ahora compila la sentencia solo una vez para obtener el plan de acceso para la sentencia, y luego lo reusa.

Otra mejoria de performance es relacionada con el almacenamiento de objetos largos (LOBs). Uno ahora puede guardar LOBs con las filas de datos siempre y cuando estos LOBs son mas pequeños que un tamaño especificado. Esto mejora el performance porque estos LOBs ahora pueden ser accesados a través del bufferpool.


Mejorías para el desarrollo de aplicativos

DB2 9.7 incluye un gran número de mejoras para desarrolladores de aplicativos:

  • Disparadores (Triggers) y funciones definidas por el usuario (UDFs) ahora tienen un soporte mas completo de SQL PL. Antes de DB2 9.7, estos solo soportaban SQL PL en línea (inline SQL PL), que era un pequeño subconjunto de SQL PL.
  • Con respecto a procedimientos de almacenamiento SQL PL y UDFs, uno puede especificar un parametro de default y asignar valores en base a nombres. Además, nuevos tipos de datos como Boolean, cursor, row, y array son ahora soportados.
  • Sintaxis alternativo de SQL, como el uso de ROWNUM y ROWID, se soporta.
  • DB2 9.7 ahora soporta el concepto de módulo (module), que es similar al concepto de "Package" en Oracle. Uno puede utilizar a un módulo para juntar definiciones de objetos de la base de datos que tienen alguna relación entre ellos.
  • DB2 9.7 ahora soporta casting implícito entre tipos de datos. Esto es bastante útil para lenguajes dinámicos como PHP y Ruby. Por ejemplo, lo siguiente ahora es permitido:
     create table t1 (col1 int) select * from t1 where col1 =
                            '42'

    En el ejemplo, uno ahora puede comparar el valor de un string 42 con el de una columna integer col1.
  • Hay muchas nuevas funciones para manipular fechas, strings, y otros tipos de datos.
  • DB2 ahora soporta Create Global Temporary Tables (CGTTs), que son tablas temporales con data que esta disponible solamente durante la sesión. La diferencia entre CGTTs y Declared Global Temporary Tables (DGTTs) es que en el caso de CGTTs, la definición de la tabla persiste en el diccionario o catálogo de DB2. De esta manera, cuando una CGTT se crea, se puede reusar por cualquier otra sesión sin tener que crearla de nuevo. Las filas, sin embargo, son independientes por sesión.
  • Uno ahora puede utilizar aliases públicos (también conocidos como sinónimos públicos) para referenciar a objectos globales. Antes de la versión 9.7 de DB2, todos los objectos de DB2 tenian que tener un nombre de dos partes que fuera único. La primera parte era el nombre del esquema (schema name), y la segunda parte era el nombre del objecto (object name). Cuando uno crea un sinónimo público, uno puedo referir al objeto sin el esquema, independiente de que usuario esta conectado a la base de datos. Por ejemplo:
     connect to sample user arfchong using mypsw create public
    synonym raul for table arfchong.staff select * from raul ## works OK select
    * from arfchong.raul ## Error connect to sample user db2admin using psw
    select * from raul ## works OK
  • DB2 9.7 ha relajado las reglas de dependencia de objectos para permitir mas flexibilidad para evoluciones en el esquema. Por ejemplo, asuma que tiene la siguiente dependencia:

    Vista2 --> Vista1 --> Tabla1

    Anteriormente, si uno deseaba cambiar la Vista1, uno primero tenia que drop la Vista2 porque era dependiente de la Vista1. Pero con DB2 9.7, uno no requiere de hacer un drop a la Vista2. Ahora, DB2 realiza una revalidación de la Vista2 automáticamente de manera inmediata o cuando la vista es utilizada de nuevo. Esto es bastante útil para personas que prueban (test) aplicativos, o cuando uno necesita cambiar el esquema de la base de datos (por ejemplo, cuando uno quiere añadir columnas).

    Otras mejorías en el área de evolución de esquemas son:

    • Uno puede renombrar columnas.
    • La opción REPLACE ha sido añadida a varias sentencias CREATE de manera que uno no tiene que usar una sentencia drop. Esto significa que los privilegios del objeto se mantienen.
    • ALTER COLUMN ahora puede utilizar SET DATA TYPE para cambiar cualquier tipo de dato.
  • Las adiciones (add-ins) para Visual Studio han sido mejoradas, asi como el IBM Data Server Provider for .NET. Este proveedor ahora soporta host variables, módulos, el tipo de dato ARRAY, sentencias compound, y timestamps de tamaño variable.

    Con el refresco 9.7.2, las versiones 32-bit del IBM Data Server Provider para .NET son incluídas en el paquete del driver de 64-bit. Cuando uno instala los drivers de 64-bit, los drivers de 32-bit tambien son instalados en un directorio separado llamado sqllib\bin\netf20_32.

    También hay una nueva palabra clave en el archivo db2dsdriver.cfg que se llama QueryTimeout, que define cuanto tiempo un cliente debe esperar a una consulta que corra antes que termine su tiempo límite (timeout).

    Otras mejoras incluyen la habilidad de CALL (llamar) sentencias con argumentos con nombres en cualquier orden.

  • Se han hecho mejoras en JDBC y SQLJ para soportar otras mejoras mencionadas anteriormente en este artículo.
  • La sentencia TRUNCATE SQL ahora se soporta para delete (borrar) rápido.
  • Nuevos tipos de datos, tal como NUMBER, VARCHAR2, y TIMESTAMP con un seteo de precisión fraccional, ahora se soportan.
  • Hay un soporte mejorado para aplicaciones Python-DB2.
  • Mejoras de pureXML incluyen soporte para Declared Global Temporary Tables.
  • Nueva sintáxis de SQL usando las cláusulas LIMIT y OFFSET ahora se soportan. La cláusula LIMIT es útil cuando uno quiere limitar el número de filas devolvidas por una sentencia SQL. Por ejemplo, si la tabla USERS tiene 100 filas, pero se quiere devolver solo cinco filas, uno puede utilizar esta sentencia:
     SELECT * FROM users LIMIT 5

    La cláusula OFFSET indica cuantas filas se saltan contando desde la primera fila para empezar a devolver resultados. Por ejemplo, si uno quiere devolver las filas 11 a la 15 de la tabla USERS, uno puede usar esta sentencia:

     SELECT * FROM users LIMIT 5 OFFSET 10

    Estas dos cláusulas son útiles cuando uno quiere scroll a través de varias páginas de resultados directamente desde la base de datos en vez de filtrarlas a nivel servidor de aplicaciones.

    Las cláusulas LIMIT y OFFSET funcionan por default. Sin embargo, si nota que esta cláusulas no estan funcionando, asegúrese que se han activado ejecutando los siguientes comandos:

     $ db2set DB2_COMPATIBILITY_VECTOR=MYS $ db2stop $ db2start

Mejoras de almacenamiento

"Cuántos datos puede almacenar DB2?" es una pregunta común por usuarios o futuros usuarios de DB2. Con cada versión del producto, el equipo de desarrolladores de IBM DB2 continúa empujando los límites. Para la versión 9.7 de DB2, los límites del tamaño para tablas de espacio largas y temporales se han cuadriplicado. Por ejemplo, una tabla de espacio usando una página de tamaño 32KB ahora puede guardar 64 TB. Anteriormente "solo" podia guardar 16 TB.


Mejoras en seguridad

En versiones anteriores de DB2, el administrador del sistema (system administrator) tenía acceso practicamente a todo. Con DB2 9.7, el modelo de seguridad ha sido mejorado para permitir una separación de tareas. Esto minimiza el riesgo de exponer datos y ayuda a organizaciones a cumplir con los requerimientos de seguridad de algunos gobiernos. Hay varios nuevos niveles de autoridades administrativas. Dos de estos nuevos niveles son DATAACCESS y ACCESSCTRL, que puede utilizar para dar a usuarios acceso a datos o garantizar acceso a datos, respectivamente. Esto significa que un administrador de seguridad puede revocar estos niveles de autoridad a un administrador de sistemas o a un administrador de base de datos (DBA), que esencialmente dejaria a ese usuario sin acceso a ningun dato.

El refresco 9.7.2 de DB2 tambien incluye mejorias en cuanto auditoría que permite el replay de actividades de base de datos pasadas. Por ejemplo, si tiene que analizar como un determinado pedido que ocurrió unos años atrás afectó algunas tablas, ahora puede usar la información de auditoría para obtener lo que necesita para este análisis.


Mejorias de manejo

DB2 ahora provee con la capacidad de mover tablas a una tabla de espacio diferente aun cuando la tabla esta en línea (online). Esto significa que aún cuando usuarios estan accesando una tabla, uno puede cambiar el almacenamiento donde esta tabla reside. Este es otro ejemplo más de como DB2 busca siempre el llegar a tener disponibilidad 24x7 para sus datos. Si un DBA detecta que el almacenamiento en una de las tablas de espacio se está llenando rápidamente, el o ella puede usar el procedimiento de almacenamiento ADMIN_MOVE_TABLE que se incluye con DB2 9.7 para mover la tabla a otra tabla de espacio que este mas vacía. Usuarios no se impactarían en absoluto; ellos podrían SELECT, INSERT, UPDATE, y DELETE como lo hacen usualmente. Para implementar esta funcion, DB2 create una copia "sombra" de la tabla y se mantiene al tanto de los cambios en la tabla original. Los cambios luego se aplican a la copia sombra.

Otras mejoras en el area de manejo son relacionadas al transporte de esquemas de la base de datos. Uno puede pensar en un esquema SQL en DB2 como una forma de agrupar diferentes objectos de la base, como tablas, vistas, indices, etc. Por ejemplo, asuma que la tabla RFCHONG.T1 y la vista RFCHONG.V1 usan el mismo esquema RFCHONG. Algunas veces uno quiere transportar todos los objetos de un esquema a otra base de datos. Un método de hacerlo, que solo aplica a tablas, es usando la utilidad db2move. Con el refresco 9.7.2 de DB2, uno ahora puede usar el comando RESTORE con la opción TRANSPORT para copiar tablas de espacio y esquemas SQL como un conjunto desde un backup hacia otra base de datos activa.


Mejoras de instalación

Ahora uno puede utilizar el comando de validación de una copia de DB2 llamado db2val, para rápidamente verificar que la instalación y configuración de DB2 Express-C es correcta.


Extensor espacial de DB2

Aún cuando DB2 ha tenido capabilidades espaciales desde hace casi 10 años, no muchos usuarios saben de ello. Por tal motivo, aun cuando la funcionalidad no es nueva con el refresco 9.7.2 de DB2, es valioso hacerle saber que puede tomar ventaja del extensor espacial de DB2 que es gratuito para todas las ediciones de DB2, incluyendo DB2 Express-C. El extensor espacial le permite trabajar con datos espaciales y geodeticos usando SQL. Por ejemplo, esta característica le permite responder preguntas como "Cual es la tienda más cercana para clientes que viven en Toronto y que gastaron mas de $3000 con nosotros el año pasado?" Hasta uno puede utilizar el extensor espacial de DB2 para aplicaciones médicas. Por ejemplo, le puede ayudar a responder la pregunta "Cuáles son las huellas o características de células malignas en un análisis MRI del cerebro?" Para mas información, visite el tema Acerca del extensor espacial de DB2 en el Centro de Información de la base de datos IBM DB2 para Linux, UNIX, y Windows.


Conclusión

Este artículo resaltó algunos de las mejoras mas notables que se han introducido al DB2 Express-C desde la versión 9.7 hasta el refresco mas reciente, el 9.7.2. Esta última version de la edición gratuita para la comunidad de IBM DB2 incluye nuevas características relacionadas a performance, desarrollo de aplicaciones, almacenamiento, seguridad, y más! que anteriormente solo eran disponibles en las versiones pagadas de DB2.

Disfrute del nuevo DB2 Express-C 9.7.2!

Recursos

Aprender

Obtener los productos y tecnologías

  • Descarga DB2 Express-C 9.7.2, un producto completamente licensiado y disponible sin costo para la comunidad.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=499448
ArticleTitle=Las nuevas características del DB2 Express-C 9.7.2
publish-date=07072010