Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

como hace una BD para indentificar una transaccion?

Estas en el tema de como hace una BD para indentificar una transaccion? en el foro de Bases de Datos General en Foros del Web. Hola a todos, quisiera saber como asocia un DMBS, una transaccion con un proceso Para dar un poco mas de detalle: si un proceso (JAVA ...
  #1 (permalink)  
Antiguo 26/12/2005, 06:10
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
como hace una BD para indentificar una transaccion?

Hola a todos, quisiera saber como asocia un DMBS, una transaccion con un proceso

Para dar un poco mas de detalle: si un proceso (JAVA en mi caso), da inicio a una transaccion en la base de datos (MySQL), y luego este proceso ejecuta un INSERT en la BD, como hace el DBMS para identificar que transaccion esta llevando a cabo el proceso?, y en el caso que el mismo proceso este llevando a cabo transacciones simultaneas, como hace el DBMS para diferenciar en cual de las 2 transaciones debe realizar esta operacion?

Mi duda se origina en que estoy desarrollando un sistema para una casa de electronica (con fines educativos, es para una materia de la facu), y la capa de persistencia tiene que ser desarrollada completamente de 0, es decir, no se pueden usar esquemas preexistentes (Hibernate,etc) y uno de los temas a resolver en la persistencia es como manejar las transacciones, y realmente me es un poco confuso el tema. Se los conceptos de base de datos, transaccion, tabla, etc (de hecho en la materia Gestion de Datos nos obligaron a estudiar todo el libro de Bases de Datos de DATE), pero bue, a la hora de llevarlo a la practica en un programa me resulto confuso el tema de las transacciones.

Si alguien puede responder a mi duda, le agradeceria mucho

Atte Fernando Manzano
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #2 (permalink)  
Antiguo 27/12/2005, 08:31
Avatar de jeubeda  
Fecha de Ingreso: octubre-2004
Ubicación: Argentino, en Valencia, E
Mensajes: 78
Antigüedad: 19 años, 6 meses
Puntos: 0
Control de compromiso

Si se manejan transacciones, un aspecto fundamental es que mientras una transacción no se completa, todos las filas involucradas, de todas las tablas declaradas como participantes de la transacción, son "apropiadas" (row lock) por el proceso de la transacción, por lo que, o todos los términos de la transacción están comprometidos por el proceso, o la transacción no se completa. Hasta que la transacción no finaliza, ningún otro proceso puede tomarlos (control pesimista); si no puede tomarlos, la transacción no se inicia. En el caso del control optimista, si una fila comprometida no es lockeada (porque puede tratarse de una transacción de largo plazo), de todas formas se controla que otro proceso no haya cambiado la fila. Si la fila fue cambiada, la transacción no puede seguir adelante.
__________________
Jorge Ubeda
Página, Blog
  #3 (permalink)  
Antiguo 27/12/2005, 10:25
 
Fecha de Ingreso: diciembre-2005
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
El problema es que creo quieres control sobre la cola de transacciones.. y eso son una cola que son lanzadas como hilos independientes pero que son encolados en su ejecucion por el motor de la base de datos, me imagino que no lo podras resolver facilmente ya que significa meterse con el proceso mismo del motor y eso lo puedes hacer viendo el codigo de mysql por ejemplo , en una base cerrada no se puede hacer nada...
  #4 (permalink)  
Antiguo 27/12/2005, 11:28
Avatar de jeubeda  
Fecha de Ingreso: octubre-2004
Ubicación: Argentino, en Valencia, E
Mensajes: 78
Antigüedad: 19 años, 6 meses
Puntos: 0
Cita:
Iniciado por TolaWare
uno de los temas a resolver en la persistencia es como manejar las transacciones, y realmente me es un poco confuso el tema. Se los conceptos de base de datos, transaccion, tabla, etc (de hecho en la materia Gestion de Datos nos obligaron a estudiar todo el libro de Bases de Datos de DATE), pero bue, a la hora de llevarlo a la practica en un programa me resulto confuso el tema de las transacciones.
Si alguien puede responder a mi duda, le agradeceria mucho
Creo que no completé la idea. El manejo de la transacción en buena medida está en manos del motor de administración. No conozco cómo lo aplica MySql, pero aplicando Sybase o DB2, lo que se hace usualmente es manejar el problema en dos niveles: a nivel de administración de las tablas, identificar sobre cuáles existe control de transacciones, y luego, a nivel de la aplicación, declarar el punto en que se inicia la transacción (Begin Transaction), y el punto en que termina (Commit) o el punto de restauración al estado previo (rollback). Es decir, una vez establecido en el DBMS la declaración de control de transacciones, el trabajo en la aplicación se remite a iniciar el ciclo, cerrarlo, y establecer una salida de excepciones.
__________________
Jorge Ubeda
Página, Blog
  #5 (permalink)  
Antiguo 02/01/2006, 16:56
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Cita:
Iniciado por balamlinuxnet
El problema es que creo quieres control sobre la cola de transacciones.. y eso son una cola que son lanzadas como hilos independientes pero que son encolados en su ejecucion por el motor de la base de datos, me imagino que no lo podras resolver facilmente ya que significa meterse con el proceso mismo del motor y eso lo puedes hacer viendo el codigo de mysql por ejemplo , en una base cerrada no se puede hacer nada...
Precisamente es MySQL 5 lo que uso.
Mi duda surge (ademas de los motivos que exprese arriba), ya que estoy desarrollando un programa en Java, para una materia de la facultad (diseño de sistemas) y obiamente uso UML como lenguaje de modelado, y mientras estoy estaba haciendo los diagramas de secuencia de la capa de Persistencia, me surgio la duda de las transacciones. El problema es que los Casos de Uso usaban una conexion compartida, y cada Caso de Uso iniciaba y cerraba su propia transaccion y algunos cerraban la conexion, el problema es que si un CU estaba llevando a cabo una transaccion y otro CU cerraba la conexion, la otro transaccion se anulaba. De aui surge mi pregunta ¿como hace un DBMS para identifiacr un proceso con una transaccion?

De seguro mi explicacion es muy confusa y nadie la lea, pero bue.

Gracias por la ayuda muchachos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:45.