Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Trabajar con Consultas (https://www.clubdelphi.com/foros/showthread.php?t=17264)

altp 31-12-2004 10:56:11

Trabajar con Consultas
 
Feliz nochevieja a todos.

Trabajo con Interbase.

Mi preguntas son:
· Cuando hago una consulta a la base de datos, ¿Trabajo con ella símplemente en local? ¿No hay redireccionamiento entre el programa y la base de datos?
· Cuando se hace un post, ¿se guarda en la base de datos?, ¿o espera a que se haga commit?

Ahora estoy trabajando con tablas en memoria, cuando hago una consulta la grabo en la tabla en memoria y cierro la consulta.
¿Motivo?
Me parece más seguro, ya que si el ordenador se apaga bruscamente, creo que la base de datos no se estropearía porque estoy trabajando con tablas en memoria, ¿es esto cierto?

Espero me comenten algo sobre el tema.

Feliz año nuevo a todos y Gracias por vuestra ayuda

Neftali [Germán.Estévez] 03-01-2005 10:01:26

Cita:

Empezado por altp
Feliz nochevieja a todos.

Igualmente.

Cita:

Empezado por altp
Trabajo con Interbase.
(1)· Cuando hago una consulta a la base de datos, ¿Trabajo con ella símplemente en local? ¿No hay redireccionamiento entre el programa y la base de datos?
(2)· Cuando se hace un post, ¿se guarda en la base de datos?, ¿o espera a que se haga commit?

La (1) no acabo de entenderla del todo bien, no entiendo lo que quieres decir con redireccionamiento, pero.... Normalmente cuando ejecutas una consulta, abres un cursor en el servidor y obtienes una serie de registros, dependiendo de cómo tengas configurados los parámetros puedes obtener unos cuantos o todos; Mientras tanto, y hasta que cierras la consulta el cursor se mantiene abierto en el servidor. Cuandos cierras la consulta (Query) el cursor se cierra en el servidor.

(2) (Ambas cosas) Al hacer un post los cambios se graban en la Base de Datos, lo que pasa es que si esos cambios los has realizado dentro de una transacción, es independiente, si luego haces el Commit se confirman y si haces el rollback se deshacen.

Cita:

Empezado por altp
Ahora estoy trabajando con tablas en memoria, cuando hago una consulta la grabo en la tabla en memoria y cierro la consulta.
¿Motivo?
Me parece más seguro, ya que si el ordenador se apaga bruscamente, creo que la base de datos no se estropearía porque estoy trabajando con tablas en memoria, ¿es esto cierto?

No tiene porqué, si tu ordenador se cierra, símplemente se cierra la conexión que tienes abierta; Si trabajas con transacciones, al no hacer el commit y cerrar la transacción se perderán los cambios. Personalmente no utilizaría tablas en memoria por esa razón; Tal vez en otros casos sí, pero no creo que esa sea su función.

altp 03-01-2005 10:37:25

Gracias Neftali por responder.

El apartado 1) lo entendiste bien.

Voy al apartado 3):
Creo que si el ordenador se apaga bruscamente y la base de datos está abierta, el sistema gestor (en este caso interbase) puede ser que se corrompa porque no han sido pegadas las transacciones.
Antes de trabajar con las tablas en memoria, se me corrompía la base de datos con más facilidad.

Si sabes alguna manera más segura te agradecería que lo compartieras.

Gracias de nuevo y feliz año nuevo a todos.

Neftali [Germán.Estévez] 03-01-2005 12:18:12

No debería pasar cuando se cuelga el "ordenador Cliente"; Otro tema sería el caso del Servidor...
En el caso de Interbase existe un parámetro (que no recuerdo ahora) que permite obligar a que las escrituras sobre la Base de Datos se hagan de forma inmediata, en lugar de "aplazarlas"; Se reduce un poco la velocidad, pero se incrementa la seguridad.
Como te digo no recuerdo en éstos momentos el nombre, seguro que si buscas lo encuentras, sino a ver si alguien del foro se acuerda y pone el nombre.

altp 03-01-2005 16:36:22

Supongo que con la solución que me das no se pueden borrar las transacciones, creo que eso puede ser un problema si quieres deshacer algo.

Gracias

Neftali [Germán.Estévez] 03-01-2005 16:51:03

La solución que te doy no tiene nada que ver con transacciones, las transacciones siguen funcionando igual que antes, independientemente del parámetro que te comento. Es un parámetro de configuración interna de InterBase. Si tienes problemas de estabilidad y cuelgues de ordenador/servidor que te provocan corrupción en la Base de Datos te aconsejo mucho que trabajes un tiempo con éste parámetro activado y compruebes qué tal.
No debes cambiar nada del programa ni de la conexión, es un parámetro interno de interbase.

altp 05-01-2005 10:12:00

Gracias, buscaré ese parámetro y probaré.

Felices Reyes.


La franja horaria es GMT +2. Ahora son las 01:11:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi