SchemaSpy – Generar documentacion del Modelo de Datos

Cuando tengo que generar rapidamente un diagrama con las relaciones de un modelo de datos de una base de datos suelo emplear SchemaSpy.
Es una de mis aplicaciones Java favoritas.

schemaspy.jpg

Con esta herramienta y mediante ingenieria inversa se generan una serie de ficheros HTML que almacenan toda la informacion del modelo de datos. Veamos como instalarla y usarla en Ubuntu.

Primero descargate el fichero .jar (schemaSpy_3.1.1.jar) desde el sitio web.

Al copiarlo al destino, yo me he creado esta ligadura simbolica.

$ ln -s schemaSpy_3.1.1.jar schemaSpy

Asi puedo referenciar al fichero schemaSpy_3.1.1.jar pero empleando solo «schemaSpy».

Para generar las graficas necesitamos de otro programa denominado «Graphviz»
pues internamente, se usa un ejecutable con el nombre dot para generar las imagenes.
Para instalar graphviz ejecutamos:


sudo apt-get install graphviz

Y obtenemos algo similar a lo siguiente:


root@soledad:~# sudo apt-get install graphviz
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo información de estado... Hecho
Se instalarán los siguientes paquetes extras:
tcl8.4 tk8.4
Paquetes sugeridos:
msttcorefonts graphviz-doc tclreadline
Se instalarán los siguientes paquetes NUEVOS:
graphviz tcl8.4 tk8.4
0 actualizados, 3 se instalarán, 0 para eliminar y 159 no actualizados.
Se necesita descargar 0B/3475kB de archivos.
Se utilizarán 9728kB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? S
Seleccionando el paquete tcl8.4 previamente no seleccionado.
(Leyendo la base de datos ...
133023 ficheros y directorios instalados actualmente.)
Desempaquetando tcl8.4 (de .../tcl8.4_8.4.12-1.1_i386.deb) ...
Seleccionando el paquete tk8.4 previamente no seleccionado.
Desempaquetando tk8.4 (de .../tk8.4_8.4.12-1_i386.deb) ...
Seleccionando el paquete graphviz previamente no seleccionado.
Desempaquetando graphviz (de .../graphviz_2.8-2.1ubuntu1_i386.deb) ...
Configurando tcl8.4 (8.4.12-1.1) ...
Configurando tk8.4 (8.4.12-1) ...
Configurando graphviz (2.8-2.1ubuntu1) ...
root@soledad:~#

Podemos comprobar las bases de datos que podemos utilizar ejecutando el siguiente comando:


jose@soledad:~/Desktop/SchemaSpy$ java -jar schemaSpy -dbhelp
SchemaSpy generates an HTML representation of a database's relationships.
Built-in database types and their required connection parameters:
db2:
IBM DB2 with the 'App' Driver
-db database name
db2net:
IBM DB2 with the Type 4 'Net' Driver
-host database host
-port port on database host
-db database name
firebird:
Firebird
-host hostname[:port] (possibly just localhost)
-db database name
hsqldb:
HSQLDB Server
-host hostname[:port] (possibly just localhost)
-db
informix:
InformixSQL
-host hostname and port
-db database name
-server database server
mssql:
Microsoft SQL Server
-host database server host
-port database port on host
-db database name
mssql05:
Microsoft SQL Server 2005
-host database server host
-port database port on host
-db database name
mysql:
MySQL
-host hostname[:port] (possibly just localhost)
-db database name
ora:
Oracle with OCI8 Driver
-db database name (from TNSNAMES.ORA)
orathin:
Oracle with Thin Driver
-host database host
-port port on database host
-db database SID as known on host
pgsql:
PostgreSQL
-host hostname[:port] (possibly just localhost)
-db database name
sybase:
Sybase Server (jdbc3)
-host database server host
-port database port on host
-db database name
sybase2:
Sybase Server (jdbc2)
-host database server host
-port database port on host
-db database name
udbt4:
DB2 UDB Type 4 Driver
-host database host
-port port on database host
-db database name
You can use your own database types by specifying the filespec of a .properties file with -t.
Grab one out of schemaSpy and modify it to suit your needs.
Sample usage using the default database type (implied -t ora):
java -jar schemaSpy.jar -db epdb -s sonedba -u devuser -p devuser -o output

En mi caso que uso Oracle me he creado el siguiente shell script con nombre schema.sh:

# Añadir el driver de conexion JDBC orathin para ORACLE
DRIVER=./ojdbc14.jar
export DRIVER
# Lanzamos el schemaSPY. Cambia valores si es necesario.
DATABASE_SID=tu_base_de_datos
HOST=host_base_datos
PORT=1521
USER=usuario
PASSWORD=password
OUTPUT=destino
export DATABASE_SID
export HOST
export PORT
export USER
export PASSWORD
export OUTPUT
java -jar schemaSpy -t orathin -cp ./ojdbc14.jar -db $DATABASE_SID -host $HOST -port $PORT -u $USER -p $PASSWORD -o $OUTPUT

Naturalmente cambia estos valores por los que utilices en tu caso.
Como uso oracle tambien he copiado el driver «ojdbc14.jar» en la misma carpeta donde he dejado el jar de schemaSpy. Si utilizas otra base de datos, coloca en esta carpeta el driver jdbc correspondiente.

Y nada mas!!!. Lo ejecutamos con:

./schema.sh
jose@soledad:~/Desktop/SchemaSpy$ ./schema.sh
Using database properties:
[schemaSpy]/net/sourceforge/schemaspy/dbTypes/orathin.properties
Connected to Oracle - Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning option
JServer Release 9.2.0.8.0 - Production
Gathering schema details....................................(4sec)
Writing/graphing summary..................(8sec)
Writing/graphing results....................................(29sec)
Wrote relationship details of 36 tables/views to directory 'OUTPUT' in 41 seconds.
Start with OUTPUT/index.html

Tras unos instantes, Ya tenemos los ficheros html generados con la documentacion del modelo.

Por cierto para generar un PDF con la documentacion del modelo tambien suelo usar Druid. Pero esta ya la veremos en algun otro post.

9 Responses to “SchemaSpy – Generar documentacion del Modelo de Datos”


  1. 1 Marce noviembre 13, 2007 a las 9:48 pm

    Hola me gustria saber como comenzar de cero a utilizar el scahmaspy ya que no se como se utilizan los ficheros con extension .jar
    gracias

  2. 2 superpiwi noviembre 27, 2007 a las 12:37 pm

    En principio un jar es como un zip, si le cambias la extension podras ver su contenido.
    Estos jar realmente contienen clases de java ya compiladas.

    Cuando quieres ejecutar un jar, que es ejecutable, es decir tiene dentro una clase que implementa un metodo «Main», tienes que ejecutar:

    $ java -jar tu_fichero_jar

    con eso ya arranca la aplicacion incluida.
    Necesitas disponer de JRE (Java runtime instalado en tu maquina).

    Y respecto a SchemaSpy poco mas, en la pagina web del programa creo que hay alguna documentacion o tutorial, pero basicamente has de invocarlo pasandole los parametros de tu base de datos y el ya solito te va a gernerar un HTML. no tiene tampoco mucho misterio.

    Saludos.

  3. 3 tinuviel noviembre 4, 2008 a las 5:17 pm

    tengo una duda con schema.sh:
    pues realmente no se a que hace referencia el OUTPUT //es decir que deberìa colocar allÎ

    Me podrian ayudar
    Gracias

  4. 4 tinuviel noviembre 4, 2008 a las 5:24 pm

    TENGO EL SIGUIENTE PROBLEMA: ?? QUE PUEDO HACER

    Gathering schema details…

    No tables or views were found in schema ‘orfeo’.
    The schema does not exist in the database.
    Make sure that you specify a valid schema with the -s option and that
    the user specified (orfeo) can read from the schema.
    Note that schema names are usually case sensitive.

    85 schemas exist in this database.
    Some of these «schemas» may be users or system schemas.

    AAA521 ACZTMP ANONYMOUS APF851 ARM352 ARU051 BAHW1 BAHW2 BOR642 BVD458 BVP458 CAA327 CNTV CO CO_COMUN CONSUMO COR CT CTXSYS DBA_CNTV DBA_CNTV_PRUEBAS DBA_CNTV_PRUEBAS_1 DBA1 DBA12 DBSNMP DDL683 DES9I DEVOLUTIVO ERO318 FCC GCF293 HR HUGO JRG047 JRG793 LCB241 LM2 LOM267 LUNEL MAR184 MDSYS NOP323 ODM ODM_MTR OE OLAPSYS ORDPLUGINS ORDSYS ORFEO OUTLN PERFSTAT PM PR PR_COMUN PRTMP PRUEBAS PRUEBAXYZ QS QS_ADM QS_CB QS_CBADM QS_CS QS_ES QS_OS QS_WS RCS894 RH RMAN SAE SAE_COMUN SAI SAI_COMUN SAITMP SAM266 SCOTT SH SHDTMP SYS SYSTEM TOAD USU_CONSULTA WKPROXY WKSYS WMSYS XDB
    These schemas contain tables/views that user ‘orfeo’ can see:

    ACZTMP CNTV CO COR CO_COMUN CT CTXSYS DBA1 DBA12 DBA_CNTV DBA_CNTV_PRUEBAS DBA_CNTV_PRUEBAS_1 DES9I FCC HR LM2 MDSYS ODM ODM_MTR OE OLAPSYS ORDSYS ORFEO OUTLN PERFSTAT PM PR PRTMP PR_COMUN QS QS_CBADM QS_CS QS_ES QS_OS QS_WS RH RMAN SAE SAE_COMUN SAI SAITMP SAI_COMUN SCOTT SH SHDTMP SYS SYSTEM TOAD WKSYS WMSYS XDB

  5. 6 tinuviel noviembre 4, 2008 a las 7:11 pm

    el problema esta en
    Failed to query Graphviz version information: java.io.IOException: Cannot run program «dot»: java.io.IOException: error=2, No such file or directory
    me podrias ayudar???

    • 7 jose enero 20, 2010 a las 3:03 pm

      Para dibujar las graficas emplea un comando llamado «dot», por lo visto no lo tienes instalado o lo tienes sin permisos de ejecución.

      Lo comente aqui:

      Para generar las graficas necesitamos de otro programa denominado «Graphviz«
      pues internamente, se usa un ejecutable con el nombre dot para generar las imagenes.
      Para instalar graphviz ejecutamos:

      sudo apt-get install graphviz

      – intenta instalar graphviz en tu sistema y ya deberia funcionarte el comando «dot»

  6. 8 Miguel Casallas enero 20, 2010 a las 2:06 pm

    Hola, primero que todo agradecerte por el post, muy completo.

    Segundo

    Para tinuviel: El problem radica en que en el script publicado, no se incluye el schema y el usuario con el que te intentas conectar tiene derecho de explorar más de un schema, por eso te los lista para que tu selecciones uno, en mi caso le he hecho algunos ajustes al scrip de forma que me permita definir un schema en particular y me ha quedado así:

    #!/bin/bash

    # Añadir el driver de conexion JDBC orathin para ORACLE
    DRIVER=./ojdbc14for10.jar
    #Definimos los valores de la conexión
    DATABASE_SID=tu_base_de_datos
    HOST=host_base_datos
    PORT=1521
    USER=usuario
    PASSWORD=password
    OUTPUT=directorio_en_que_deseas_que_se_genere_la_salida
    SCHEMA=el_schema_que_quieres_exportar
    java -jar schemaSpy_4.1.1.jar -t orathin -cp $DRIVER -db $DATABASE_SID -host $HOST -port $PORT -u $USER -p $PASSWORD -s $SCHEMA -o $OUTPUT

    Espero que te haya podido servir.

    Saludos desde Colombia.


  1. 1 Generar la documentacion del Modelo de Datos « Java.Lang.NullPointer Trackback en abril 24, 2007 a las 2:51 pm

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

abril 2007
L M X J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Blog Stats

  • 31.252.052 hits

A %d blogueros les gusta esto: