[en]

Contexto

¿Qué es db2?

DB2 es uno de los motores de bases de datos de IBM, el cual tiene ya varios años de historia, además de ser el precursor de muchas nuevas tecnologías. A la fecha de la creación de esta aplicación, acababa de salir la versión 9.7 la cual ofrece características muy innovadoras. (http://es.wikipedia.org/wiki/DB2)

Este motor de bases de datos tiene muchas funcionalidades, varias de las cuales se pueden utilizar: en entorno gráfico y en línea de comando, otras solo en entorno gráfico y finalmente otras solo en línea de comando.

Por tal motivo, para poder usar esta base de datos, ya sea como un administrador de bases de datos, como desarrollador o como un usuario normal, es necesario conocer qué es lo que se quiere hacer, y cómo se puede hacer. En un entorno gráfico, el cómo utilizar una funcionalidad es sencillo, ya que la interfaz misma ayuda al usuario en la operación, presentando gráficas, mensajes, asistentes, etc. Por el contrario, en la línea de comando, el usuario es el que debe conocer cómo puede hacer lo que quiere hacer.

¿Qué es la línea de comando?

La línea de comando siempre ha existido en los computadores, y por medio de esta es que se realizan muchas de las operaciones de administración de sistemas (sysadmin) y de bases de datos.

La línea de comando generalmente es una pantalla negra, con un prompt el cual permite escribir comandos, y mostrar el resultado de la ejecución que genera el computador.

Los comandos son una serie de palabras, caracteres, números o signos que según el orden en que se digiten tendrán una significación para el computador. Esto es lo que se conoce como la gramática de un comando. Es responsabilidad del usuario digitar los comandos en la forma adecuada para que puedan ser procesador por el computador (escribir los parámetros de un programa.)

Descripción del problema

Con la gran cantidad de funcionalidades ya existentes en DB2, y con la continua adición en cada nueva versión, conocer la gramática de los comandos se vuelve complicado. Muchas veces, la adición de nuevas funcionalidad es simplemente la adición de un nuevo parámetro en un comando. Pero en otros casos el uso de un comando es cambiado totalmente, y es necesario conocer esa nueva estructura. Por tal motivo, estar al día con la gramática de los comandos es una tarea que se puede volver tediosa, teniendo en cuenta la cantidad de comandos que ofrece este motor de bases de datos y la cantidad de versiones disponibles, variando funcionalidad en cada una.

¿Cómo se trabaja actualmente?

Un usuario de la línea de comando puede trabajar de acuerdo a alguna de las siguientes maneras:

  • Conoce la gramática completa de todos los comandos diferenciando todas las versiones de DB2 (lo cual es casi imposible.)
  • Busca ayuda del comando a digitar en la misma línea de comando.
    db2 ? create table
    

    Por ejemplo, para buscar ayuda sobre el comando create table.

  • Busca ayuda en el centro de información https://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic

¿Por qué esto es un problema?

El problema surge cuando un usuario sabe qué es lo que debe hacer, pero no conoce bien la gramática. Entonces es aquí donde necesita analizar la documentación respectiva del comando para saber cómo es lo que debe hacer. En muchos casos, esto lo realiza intentando varias veces hasta que se tiene una gramática correcta del comando, y después ver si lo que se ejecutó es lo que se quería.

Algunos comandos tienen una gramática compleja ya que pueden recibir muchos parámetros, y comprender esta estructura puede consumir algo de tiempo, tiempo que es innecesario si el usuario tuviera una asistencia, tal como existe en un entorno gráfico.

Otro aspecto a tener en cuenta es, como se dijo anteriormente, que el usuario puede hacer uso del "Centro de Información", pero eso implica tener acceso a una interfaz gráfica, con un navegador de Web y acceso a este portal (el cual puede estar instalado localmente, o ser accedido por medio de Internet.) Todas estas condiciones no siempre se cumplen, y por lo tanto se vuelve más complicado el análisis de la gramática.

También hay que tener en cuenta a los nuevos usuarios de DB2, quienes no conocen la gramática de los comandos. El gran consumo de tiempo analizando gramáticas es agotador, y comenzar a trabajar realmente puede desanimar a muchos usuarios. Actualmente, hay muchos nuevos usuarios gracias a la versión disponible para la comunidad, DB2 Express-C, y dichos nuevos usuarios generalmente tienen muchas preguntas sobre cómo usar DB2.

Concluyendo, el problema que se presenta es:

El usuario sabe Qué es lo que quiere hacer, pero no sabe Cómo es que lo debe hacer, y para comprender Cómo lo debe hacer, el usuario consume Tiempo.

Video

Este video explica claramente por qué el uso actual es problemático.

Descripción de la aplicación

¿Qué es la aplicación?

Esta aplicación funciona como un asistente de sintaxis de comandos de DB2 que funciona en línea de comando, la cual va mostrando los posibles parámetros o opciones, mientras el usuario digita un comando.

¿Cómo funciona?

Para conocer el funcionamiento de la aplicación, por favor diríjase a la sección descripción.

Libre y Abierto?

El código de esta aplicación es Código Abierto (Open source) ya que está licenciado bajo los términos de LGPL v3. Al mismo tiempo, esta usa componentes abiertos para ejecutarse. Por ejemplo, las librerías necesarias son de Código Abierto, tales como jLine o SLF4J. Pero también, su ambiente de ejecución, ya que Java es Libre y Abierto.

Alcance

El alcance que se le dio en el momento de la concepción de la aplicación, más las ideas que han ido surgiendo, es:

  • Asistir al usuario en la parte léxica y sintáctica, teniendo en cuenta los parámetros y el orden de estos.
  • Asistir al usuario en algunos aspectos que van más allá del análisis estrictamente léxico y sintáctico, sino en elementos del ambiente de trabajo. Esto quiere decir, que si el comando necesita una ruta en el sistema de archivos, este puede ayudar a completarla; o si el comando necesita el nombre de una tabla en la base de datos, la aplicación le puede ayudar a buscar el nombre. Esta parte se busca que sea extensible, para que no se limite a un conjunto de opciones solo disponibles con la distribución oficial.
  • Que la gramática definida sea extensible o sea cambiada completamente para que funcione con otros ambientes de trabajo.

Fuera del alcance inicial previsto para la aplicación, se han pensado posibles extensiones las cuales hasta el momento son solo ideas.

  • Crear una aplicación para iPhone que permita controlar DB2 desde este teléfono, asistiendo al usuario en la compleción de comandos como existe actualmente en la aplicación terminal de dicho aparato.
  • En el nuevo entorno de trabajo para DB2, IBM Optim, crear un pluglet que haga uso de la aplicación, para que la escritura de comandos sea similar al ambiente de desarrollo Java en Eclipse.
  • Un plugin para escribir comandos en el Technology Explorer, el cual es un ambiente de administración y de trabajo en DB2, desarrollado en PHP.

Plan tentativo (Roadmap)

  • Versión 2:
    • Convertir la aplicación a un OSGi Bundle.
    • Modificación de la estructura de la gramática para que sea más fácil a definir.
    • Creación de un plugin para IBM Optim.
  • Versión 3
    • Crear una asistente para iPhone, que envíe los comandos a un servidor donde esté instalado un cliente de DB2, ya que actualmente no hay cliente DB2 para iPhone.
    • Creación de un plugin para el Technology Explorer, de manera que desde PHP se hagan llamados a Java.

Organización

La idea fue de Andrés Gómez Casanova, quién es un DB2 DBA certificado, y fue quién no solo pensó en el problema, sino que lo vivió varias veces.

Para más detalles del grupo de desarrollo, ver el Team List de la última versión estable (versiones).

[en]