MultiBase. Notas a la versión 3.4
Introducción a los 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
- Diseño modular y posibilidad de acceder a bases de datos de
otros motores mediante la tecnología JDBC.
- Las aplicaciones que acceden a la misma base de datos pueden compartir
los procedimientos almacenados, eliminando el código doble y reduciendo
el tamaño de las aplicaciones.
- Fácil mantenimiento.
- Cuando un procedimiento se actualiza, los cambios se reflejan automáticamente
en todas las aplicaciones, sin necesidad de recompilar los programas.
Las aplicaciones son compiladas sólo una vez para cada cliente.
- Los procedimientos almacenados son ejecutados por el servidor, no por
el cliente, lo que reduce el tráfico en la red y mejora el rendimiento,
especialmente para el acceso del cliente remoto.
- Los procedimientos están almacenados en los servidores y asegurados
por las medidas tomadas en la instalación, lo que impide que los
usuarios normales puedan modificarlos, ya que, incluso, desconocen su
existencia. Éste es un elemento de gran valor en lo que a seguridad
respecta.
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:
- Generación automática de valores derivados de una columna.
- Prevención de transacciones inválidas.
- Proporciona auditorias sofisticadas.
- Mantener la sincronía en tablas replicadas.
- Generación de estadísticas de acceso.
- Publicar información de los eventos generados por la base de
datos, las actividades de los usuarios o de las estructuras SQL que se
han ejecutado.
- Actualizar totales de la suma de campos de una tabla en otra.
- El mantenimiento de la aplicación se reduce, los cambios a triggers se
reflejan automáticamente en todas las aplicaciones que tienen
que ver con la tabla sin necesidad de recompilar.
Consideraciones sobre triggers
- Los triggers no tienen parámetros de entrada. Los únicos
valores de entrada con los que pueden trabajar son los del registro que
han insertado, modificado o eliminado.
- Los triggers no devuelven valores como los procedimientos
almacenados. Sólo pueden modificar otras tablas o los mismos valores
del registro agregado o modificado (obviamente, el eliminado no).
- Hay que tener especial cuidado con los triggers recursivos,
es decir, aquellos que puedan realizar operaciones que lancen nuevos triggers.
Tipos de triggers
Dependiendo de la acción sobre la cual queremos que actúen,
se pueden crear tres tipos de triggers:
- Al insertar un registro.
- Al modificar un registro.
- Al eliminar un registro.
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:
- BEFORE INSERT. Antes de insertar un registro.
- AFTER INSERT. Después de insertar un registro.
- BEFORE UPDATE. Antes de modificar un registro.
- AFTER UPDATE. Después de modificar un registro.
- BEFORE DELETE. Antes de eliminar un registro.
- AFTER DELETE. Después de eliminar un registro.