![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Gracias a todos por vuestra paciencia.
Retomo este tema porque aún no lo tengo claro. Supongo que vuestras aclaraciones son buenas cuando la aplicación no es DATASNAP, es decir Cliente - Servidor y todos los componentes están accesibles, pero en mi caso no están accesible. Me surge la siguiente duda: - El control de las transacciones las hago desde el Cliente supongo, y no desde el Servidor. Y si las tengo que hacer desde el Cliente tengo que insertar en el formulario(donde realizo una llamada a una función de alta que se ejecuta en el servidor),un componente TFDTransaction y aquí viene el problema, ¿como le digo a este componente que se conecte con el componente de "TFDConnection" que está en el "formulario ServerMethods1" del programa SERVIDOR. Perdonad que siga insitiendo, pero hasta que no resuelva este asunto no puedo seguir programando puesto que veo un riesgo muy alto introducir datos desde distintos terminales que tocan varias tablas sin realizar transacciones para asegurar la información. Gracias de antemano a todos. |
|
#2
|
||||
|
||||
|
Ok. Transacciones es realmente algo simple. Es como tener certeza que el mundo no ha cambiado mientras diste unos pasos mas.
Si tienes un vble:
puedes pensar que se ejecuta todo en el exacto orden que estas leyendo, y que total terminara en 3. Pero en un ambiente paralelo o asincronico y al acceder una variable mutable accesible por MULTIPLES (posibles) PROCESOS:
no puedes presumir que el orden de las acciones es el que estas leyendo en codigo. Porque multiples procesos pueden, en cualquier momento, "cambiar el mundo" bajo tus pies. Asi, que mientras este solamente afectando una sola "variable"
puedes dejarlo en manos del componente / motor. Pero si necesitas mantener la CERTEZA que el mundo no ha cambiado, ten en cuanta que el motor NO PUEDE ASUMIR:
porque totalente pude ser:
asi que para indicarle que un conjunto de instrucciones REALMENTE son secuenciales, debes encapsularlas en una transaccion:
Asi, que si, es necesario usarlo incluso en SELECT, si hay UN CONJUNTO DE SELECTS que logicamente DEBEN LEER SOBRE EL MISMO CONJUNTO DE DATOS. Si no, tendras una "lectura fantasma". Debes leer sobre las propiedades ACID para completar tu entendimiento: https://es.wikipedia.org/wiki/Aislamiento_(ACID)
__________________
El malabarista. |
|
#3
|
|||
|
|||
|
Cita:
Hola Mamcx, en lineas generales sé que hacen las transacciones y te agradezco tu aclaración, pero mi problema es como conectar un componente que tengo en el Cliente con otro componente que tengo en el Servidor para poder usar el componente de Transacciones en el Cliente. Gracias. |
|
#4
|
|||
|
|||
|
Al hilo de lo anterior me surge una nueva duda y es la siguiente:
- Si un usuario realiza un cambio en la base de datos y por lo que sea se ejecuta el ROLLBACK, ¿esto afectaría a otro usuario que este realizando cambios en ese mismo momento en la base de datos?. Quiero entender que son sesiones diferentes y aunque la base de datos es única para todos los usuarios, unos no interfieren con los otros, no? Gracias a todos. |
|
#5
|
||||
|
||||
|
Cada uno ve "el mundo" en el momento que inició la transacción. Pero ve el mundo como estaba en ese momento confirmado. Si un usuario inicia una transacción y otro usuario inicia otra transacción, aunque el primero cancele los cambios, el segundo seguirá viendo lo que había cuando lo inició.
Resumiendo, solamente lo que se confirma (commit) es lo que ven todos.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Duda existencial | rm_machado | Tablas planas | 5 | 03-03-2009 06:17:09 |
| Ayuda con duda existencial | poliburro | La Taberna | 19 | 30-07-2007 09:30:39 |
| Duda existencial | MaMu | OOP | 3 | 27-09-2006 15:37:40 |
| duda existencial | nightynvid | La Taberna | 2 | 05-09-2006 14:12:20 |
| Duda Existencial (datamodule) | vipernet | Conexión con bases de datos | 5 | 08-06-2006 20:15:30 |
|