¿Qué es una transacción?

Base de conocimiento de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
vBdC
vGuru
vGuru
Mensajes: 2
Registrado: 11 Oct 2005, 14:22

¿Qué es una transacción?

Mensaje por vBdC » 29 Abr 2004, 01:00

¿Qué es una transacción?

Categorías: Transacción, IRunner, VRunner

Palabras clave: Bloqueo, Seguridad, Navegador, Cliente/servidor

Enunciado:
Velázquez Visual trabaja en modo transaccional, tanto en su versión basada en servidor de disco (ejecución con VRunner) como en su versión cliente-servidor con el Servidor de Aplicaciones.
¿Qué es una transacción?

Imagen

Desarrollo:
Podríamos definir una transacción como una operación que le pedimos a nuestra aplicación, que implica escritura en disco. Por ejemplo, si llevamos a cabo un proceso de facturación, estaríamos llevando a cabo una transacción.
Para realizarla hemos de leer registros, ¿pero qué ocurriría si en mitad de una transacción se modifica un registro implicado en el proceso?: obtendríamos un resultado incorrecto. Para asegurarnos de que esto no ocurra se bloquean las fichas durante la transacción.

La ejecución de aplicaciones con el fichero VRunner está basada en un servidor de disco (arquitectura de red local), es decir, en un sistema de ficheros compartidos; lo que implica que no existe un servidor de bases de datos que gestione las operaciones.
Los servidores de disco admiten un número muy limitado de bloqueos concurrentes, por lo que en Velázquez Visual con arquitectura VRunner éstos son puntuales: no se puede mantener un bloqueo durante toda la transacción, pues saturaríamos las limitaciones del servidor de disco. Entonces, cuando trabajamos en la arquitectura de servidor de disco (VRunner), se bloquea una ficha, se modifica y se le quita el bloqueo (una a una). Pero, para que las transacciones sean totalmente independientes entre estaciones cliente, hay que mantener por cada transacción todos sus bloqueos. En la arquitectura cliente-servidor se mantienen todos los bloqueos hasta que la transacción haya finalizado.
Asimismo, indicar que otros sistemas de bases de datos basados en servidor de disco carecen de un sistema capaz de deshacer transacciones pendientes que garantice la integridad de los datos tras la reconstrucción del sistema. Como mucho, simplemente reindexan, con lo que los datos de los ficheros implicados pueden no ser reales.

En la ejecución de aplicaciones de Velázquez Visual no se pierden datos, sino que se da opción al supervisor del sistema de deshacer solamente las transacciones sin validar para así garantizar la veracidad de la información que contienen.

Para comprenderlo mejor pongamos un ejemplo de cliente-servidor: un usuario realiza cierta operación a un campo (sumar o restar una cantidad, por ejemplo), y a continuación otro usuario realiza otra operación a ese mismo campo. Si al primer usuario se le corta la transmisión, todas las operaciones sobre ese campo dependen de la realizada por el primer usuario y, junto a todas las que se realicen después, quedarán invalidadas. Debe entonces deshacerse esa primera operación antes de validarlas. Tenemos dos opciones, o bien deshacemos todas las operaciones (al arrancar la aplicación por un administrador, éste podrá hacerlo), o bien cancelamos y revisamos las operaciones que se han realizado.

Con el botón Reparar, desharemos la transacción pendiente. Si cancelamos, no se podrá acceder a las tablas afectadas, pero podrá repararlas el administrador la siguiente vez que entre en la aplicación. Con Editar Log, podremos añadir comentarios al archivo que documenta los sucesos.

En la ejecución de aplicaciones de Velázquez Visual en arquitectura cliente-servidor, al existir un módulo servidor, el sistema de transacciones es individualizado por cliente, es decir, un usuario jamás puede perjudicar a otro.
Si durante la ejecución de una aplicación Velázquez en modo cliente-servidor se produjese una caída del sistema en un cliente, esta caída solamente le afectaría a él, el servidor desharía la transacción generada por éste, sin
que afecte en ningún momento a las realizadas desde el resto de las estaciones cliente.

La gestión de las transacciones en el Servidor de Aplicaciones se realiza en memoria. Por tanto, en procesos con gran número de operaciones incluidas dentro de una transacción hemos de tener cuidado que ese número no sea muy grande, y que la memoria RAM del servidor en el que se ejecuta el Servidor de Aplicaciones sea suficiente.

Artículos relacionados
Transacciones deshechas
Ficheros generados por Velázquez Visual
¿Cuál es el sistema de bloqueos en el Servidor de Aplicaciones?
¿En qué se diferencia la ejecución con VRunner de usar un Servidor de Aplicaciones?
Ficha bloqueada
En un formulario abierto por un proceso no puedo aceptar o da el error: Alta no realizada por error sin especificar
No funciona el contenedor de las tablas en memoria en cliente/servidor
Las actualizaciones no funcionan en tablas en memoria
Las tablas en memoria
Error cuando uso en contenidos iniciales funciones que transaccionan
Optimización del tamaño de las transacciones
No debemos ejecutar las funciones remotas contra el mismo servidor cuando transaccionan
¿Por qué no puedo borrar un registro?
Al eliminar un registro me da el error: Ficha bloqueada
Modificar campo no funciona si no está incluido en una transacción
Orden de ejecución de los eventos de tabla o triggers y de la actualización
Cuando se inicia un servicio (un objeto TCP/IP o UDP del mapa) en el Servidor, el proceso del servidor del objeto protocolo no debe transaccionar
Los Tubos de lista de importación, exportación e internos en tercer plano, paralizan el Servidor de Aplicaciones
Función de proceso: Deshacer transacción
Apreciaciones sobre las instrucciones de proceso "Eliminar todas las fichas de la tabla" y "Recorrer lista eliminando fichas"
Última edición por vBdC el 29 Abr 2004, 01:00, editado 1 vez en total.

Responder