MultiBase

Notas a la versión 3.4

La versión 3.4 de MultiBase incluye las siguientes novedades:

  1. Soporte para tablas de más de 2 GB para sistemas operativos basados en tecnología NT.
  2. Uso de procedimientos almacenados.
  3. Uso de triggers.

Actualización de BB DD generadas con versiones anteriores

Como consecuencia de los puntos 2 y 3 anteriormente indicados, ha sido necesario crear dos nuevas tablas en el catálogo de la base de datos: SYSPROCEDUR y SYSTRIGGERS. Esto implica que para poder utilizar estos mecanismos en bases de datos antiguas es necesario proceder de acuerdo a los siguientes pasos:

1. Creación de las tablas a partir de un script de SQL.

2. Renombrar los ficheros físicos ".dat" e ".idx" desde el sistema operativo en el directorio de la base de datos.

3. Modificar la columna "dirpath" de la tabla SYSTABLES.

Para la creación y el reemplazo de los procedimientos almacenados es necesario utilizar el editor de sentencias SQL (SQL Interactivo) proporcionado con la nueva versión. Por ejemplo, para la versión de Windows, ejecutando el archivo "CSQL.EXE" que se encuentra en el directorio "c:\multiway\bin".
Esta nueva versión de CTSQL lleva incorporado el "monitor CTSQL". Para que los clientes puedan conectarse al servidor es necesario que este monitor esté arrancado.
En Cosmos, la llamada a procedimientos almacenados se realizará mediante el método SqlExec de la clase SqlServer o bien a través de la clase SqlStatement.
En MultiBase, la ejecución de los procedimientos almacenados se realizará a través de la instrucción "tsql".

Procedimientos almacenados y triggers

Este apartado tiene por objeto explicar brevemente qué son, cómo se crean y para qué se utilizan los procedimientos almacenados y los triggers contra el motor de base de datos CTSQL de MultiBase.

El motor CTSQL de MultiBase podrá interactuar con un servidor de procedimientos almacenados (SP), el cual puede ser instalado en otro servidor distinto al CTSQL y así "distribuir" la carga de operaciones entre ellos.

El servidor SP nos ayudará también a disminuir la carga de las estaciones de trabajo del cliente, haciendo que las tareas con mayor sobrecarga se lleven a cabo en nuestro servidor SP, como pueden ser los trabajos en batch. Por lo tanto, si ejecutamos procesos de la aplicación mediante procesos almacenados aprovecharemos todos los recursos de hardware disponibles en nuestro servidor.

Los procedimientos almacenados facilitan el desarrollo de nuestras aplicaciones y minimizan el número de modificaciones ante futuros cambios. Así mismo, pueden ser ejecutados como consecuencia de una activación de parte de un triggers. Esto nos permitirá administrar la información de la base de datos, manteniéndola consistente, íntegra y segura.

Procedimientos almacenados

Los procedimientos almacenados son programas que se referencian en la base de datos. En el caso de MultiBase, estos programas están escritos en Java. Al ser referenciados en la base de datos, primeramente se deben crear en el catálogo de la base de datos mediante una instrucción del CTSQL, y posteriormente podrán ser ejecutados desde el programa cliente o como consecuencia de los triggers.

Los procedimientos almacenados podrán recibir parámetros de entrada. No podrán interactuar con el usuario a través de una interfaz o pantalla. En cambio, no presentan inconvenientes en escribir en ficheros de textos, XML, etc., o en tablas de la base de datos o en la generación y envío de correos electrónicos, por ejemplo.

Ventajas de los procedimientos almacenados

Triggers

Los triggers permiten "disparar" (ejecutar) procedimientos almacenados cada vez que se realice una acción sobre los datos de una tabla. Esta acción puede consistir en la inserción, modificación o eliminación de un registro.

De esta manera, podemos indicar que se ejecuten acciones sobre los datos de la tabla, o de otras tablas, cada vez que se modifican, agregan o eliminan datos de una tabla.

Ventajas de los triggers

Algunos usos de los triggers son:

Consideraciones sobre triggers

Tipos de triggers

Dependiendo de la acción sobre la cual queremos que actúen, se pueden crear tres tipos de triggers:

Cada uno tipo de estos tipos se puede dividir a su vez en dos subtipos: antes y después de la acción. En consecuencia, podemos disponer de hasta seis tipos distintos de triggers:

Instalación del servidor de procedimientos almacenados

Requisitos previos

Servidor de procedimientos almacenados

El servidor de procedimientos almacenados es un paquete Java que se encarga de comunicarse con el servidor CTSQL y de gestionar el alta, la baja, la modificación y la ejecución de procedimientos almacenados escritos en Java.

Funciona como un servicio que escucha en un puerto determinado y espera a que un servidor CTSQL se conecte con él para realizar operaciones con procedimientos almacenados. Por cada sesión CTSQL que se conecte al servidor, lanzará un thread, que será el que se ocupe de la comunicación con el CTSQL, quedando libre el servidor de procedimientos almacenados para aceptar nuevas conexiones.

Puesta en ejecución del servidor de procedimientos almacenados (SP)

Existen tres modos de lanzar el servidor de procedimientos almacenados:

A continuación vamos a ver en detalle cada una de estas posibilidades.

a) Utilidad storedserverconf

El programa "storedserverconf.exe", situado en el directorio bin, permite parar y arrancar el servidor de procedimientos almacenados, comprobar si está activo o inactivo y cambiar parámetros de configuración del servidor, tales como la TRANSDIR, el host donde está escuchando el servidor de procedimientos almacenados, el servicio, el puerto, la JAVA_HOME, el CLASSPATH y el fichero de propiedades del servidor de procedimientos almacenados. Esta interfaz almacenará dichos valores en el archivo INI indicado en "Current Ini File".

Ésta es la manera más recomendable para manejar y configurar el servidor de procedimientos almacenados, ya que internamente utiliza las dos posibilidades que se van a explicar a continuación, pero empleando una interfaz gráfica.

b) Programa storedserver.exe

Este programa se encuentra en el directorio "bin". Se le pueden pasar los parámetros start, stop, status y versión para, respectivamente, arrancar, parar, mostrar el estado y mostrar la versión del servidor de procedimientos almacenados. Utiliza el fichero de conexión "storedserverlauncher.ini" (al igual que en la opción anterior), y se encuentra en el directorio "etc".

c) Desde la línea de comando

Esta forma de ejecutar el servidor de procedimientos almacenados es la menos recomendada, ya que debe de utilizarse desde la línea de comandos.

Consulte el PDF con las notas a la versión para ver las propiedades de los ficheros: "storedserverlauncher.ini", "StoredProcServer.properties" y "ctsql.ini".

Procedimientos almacenados en MultiBase

Como hemos mencionado anteriormente, es necesario registrar los procedimientos almacenados en la base de datos. Para ello emplearemos las cuatro instrucciones SQL incorporadas al motor para crear, eliminar, modificar y ejecutar los procedimientos almacenados que utilizaremos.

Triggers en MultiBase

Como ya hemos mencionado, en nuestro caso el trigger será un mecanismo de activación de procedimientos definidos en clases Java que residan en la parte servidora. Cuando un trigger invoque a un procedimiento almacenado, pasará a éste como parámetro el tipo y el valor de las columnas de la fila en curso.

Crear procedimientos almacenados

Clase AbstractSqlProcedure

La clase AbstractSqlProcedure es de la que derivan los procedimientos almacenados y la que se tiene que utilizar como base para la creación de procedimientos almacenados. Se encuentra declarada en el paquete com.transtools.sql, por lo tanto, deberá incluirse este paquete en la realización de nuestros procedimientos almacenados.

El paquete "com.transtools.sql" se encuentra incluido en el fichero "jsqlproc.jar", que está presente en el directorio "lib" de la distribución.

Un procedimiento almacenado debe declarar el método "run()", ya que éste es exportado por la clase "AbstractSqlProcedure". Dicho método será el método de entrada del procedimiento almacenado.

Métodos de la clase AbstractSqlProcedure

Exporta los siguientes métodos públicos:

Ejemplos

Para realizar nuestros primeros ejemplos debemos comprobar que tenemos arrancado el motor CTSQL y el monitor (si corresponde) y el servidor de procedimientos almacenados. Realizamos una conexión y creamos una nueva base de datos, verificando que en el catálogo de nuestra base de datos se encuentren las tablas "sysprocedur" y "systriggers".

Trabajaremos, por ejemplo, con el paquete "com.tt.test", por lo que los procedimientos Java que creemos de aquí en adelante lo haremos en el directorio "c:\com\tt\test".

Escribiremos nuestro código en un editor de texto o en cualquier otro IDE. Seguidamente deberemos compilar los fuentes Java, verificando que se generen los ficheros ".class" correspondientes, que serán los que utilizará nuestro servidor de procedimientos almacenados.

Recordemos que debemos de incluir el fichero "jsqlproc.jar" en el CLASSPATH para que al compilar encuentre la clase "AbstractSqlProcedure" y no se produzcan errores.

Resumiendo:

Para triggers:

En el PDF con las notas a la versión encontrará cuatro ejemplos prácticos sobre el manejo de procedimientos almacenados y triggers.