jump to navigation

SchemaSpy - Generar documentacion del Modelo de Datos Abril 24, 2007

Posted by superpiwi in Bases de datos, Linux, Oracle, Programacion, Ubuntu.
trackback

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.

Comentarios»

1. Generar la documentacion del Modelo de Datos « Java.Lang.NullPointer - Abril 24, 2007

[...] Generar la documentacion del Modelo de Datos Abril 24, 2007 Posted by superpiwi in Eclipse, Programacion, Oracle, UML, Java. trackback Generar la documentacion del Modelo de Datos [...]

2. Marce - Noviembre 13, 2007

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

3. superpiwi - Noviembre 27, 2007

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.