Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Acceso directo o Indirecto a la Base de Datos

En un Sistema de Información donde acceden muchos usuarios y además las consultas son muy pesadas en tiempo de ejecución, qué es mejor:

- Hacer las consultas a la Base de Datos y descargarlas en Tablas Locales del Cliente para acceso rápido y luego las modificaciones a los registros se hagan por separado refrescando tanto la Tabla Local como la de la Base de Datos.

- Hacer las Consultas conectado directamente con la Base de Datos y a los componentes TDB.

Lo digo porque estoy haciendo un nuevo diseño y siempre he optado por lo primero, aunque me dicen que ya no es necesario porque las velocidades de acceso directo a Base de Datos son muy buenas hoy día.

Gracias.
Responder Con Cita
  #2  
Antiguo 21-11-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, deberías explicar con más detalle la problemática. Pero en principio lo normal es hacerlo directamente.
Habría que especificar qué es para ti "consultas muy pesadas".
Responder Con Cita
  #3  
Antiguo 21-11-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por blaiselaborde Ver Mensaje
- Hacer las consultas a la Base de Datos y descargarlas en Tablas Locales del Cliente para acceso rápido y luego las modificaciones a los registros se hagan por separado refrescando tanto la Tabla Local como la de la Base de Datos.
¿Puedes explicar cómo haces esto?
¿Qué componentes utilizas para ello?
¿De qué número de registros hablamos?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 21-11-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Hola, deberías explicar con más detalle la problemática. Pero en principio lo normal es hacerlo directamente.
Habría que especificar qué es para ti "consultas muy pesadas".
Consultas pesadas me refiero a que acceden a un buen número de Tablas y por lo general su respuesta son cientos de registros, lo que hace que tarden en ejecutarse un tiempo considerablemente grande para las necesidades de respuesta de los clientes.
Responder Con Cita
  #5  
Antiguo 21-11-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, sigues sin especificar nada, blaiselaborde, "un buen número de tablas" no nos dice nada. Y "cientos de registros" es algo minúsculo, realmente.
Responder Con Cita
  #6  
Antiguo 21-11-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, sigues sin especificar nada, blaiselaborde, "un buen número de tablas" no nos dice nada. Y "cientos de registros" es algo minúsculo, realmente.
Gracias Casimiro y Neftalí por atender mi requerimiento.

El procedimiento es simple:

Abro un componente TQuery con la consulta que necesito y lo recorro en su totalidad, mientras lleno con los mismos registros un TClientDataSet utilizándolo como Tabla Local Temporal.

Sé que me puedo ahorrar el paso a la Tabla Local TClientDataSet, y conectar directamente la TQuery al DBGrid, pero mi pregunta es si se consigue la misma velocidad de respuesta por ejemplo al avanzar las Páginas o al mostrar filtrado los datos en el DBGrid desde la TQuery que desde el TClientDataSet, ya que desde éste es inmediata la respuesta por estar en Memoria Local.

Tengo Tablas con millones de registros, aunque no se descarga todo . . .

Por ejemplo:

Código Delphi [-]
  
Try
    cdsRegion.DisableControls;
    cdsRegion.CreateDataSet;
    cdsRegion.EmptyDataSet;

    DM.qrRegion.Close;
    DM.qrRegion.Open;
    DM.qrRegion.First;

        While Not DM.qrRegion.Eof do
          Begin
            cdsRegion.Append;
            cdsRegionSuperGroupId.AsInteger := DM.qrRegionSUPERGROUP_ID.AsInteger;
            cdsRegionSuperGroup.AsString      := DM.qrRegionSUPERGROUP.AsString;
            cdsRegion.Post;
          End; // While

    cdsRegion.First;
    cdsRegion.EnableControls;

    DM.qrRegion.Close;
Except
    On E: Exception do
      Application.MessageBox(PChar('SQL Error qrRegion --> ' + E.Message), 'Attention', MB_ICONERROR);
End; // Try
Responder Con Cita
  #7  
Antiguo 21-11-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
El problema que le veo a esto es que siempre estás cargando más datos de la cuenta. Es decir al obligar a cargar toda la tabla o consulta en local (en el TClientDataset) obligar a traer TODOS los datos.

No comentas qué Base de Datos utilizas y qué componentes de conexión, pero muchos de ellos utilizan cursores dinámicos de servidor. Esto significa que si cargas en un DBGrid una tabla o consulta grande, no se cargan todos los registros, sólo los que vas necesitando de forma gradual (los que ves en cada momento y tal vez algunos más). A medida que avanzas por el DBGrid se van solicitando los demás.

De esa forma no cargas todos los registros y evitas tráfico innecesario.

Yo personalmente, salvo que sea un caso especial (alguno hay) no veo necesidad de traer los datos a local, como norma general.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 21-11-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por blaiselaborde Ver Mensaje
El procedimiento es simple:
Bien, en tu caso, seguramente es más lento de la forma en que lo estás haciendo, ya que pones "una capa", totalmente innecesaria.
Responder Con Cita
  #9  
Antiguo 21-11-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Neftali,

Cita:
Empezado por Neftali
...personalmente, salvo que sea un caso especial (alguno hay) no veo necesidad de traer los datos a local, como norma general...


Nelson.
Responder Con Cita
  #10  
Antiguo 21-11-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Muchas gracias chicos . . . . Tomaré el consejo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear un acceso directo _cero_ C++ Builder 2 24-06-2008 22:49:33
Acceso directo jorgegetafe Varios 10 05-06-2007 22:35:00
aplicacion en red, con un acceso directo? m8estrella83 Conexión con bases de datos 2 25-09-2006 23:48:01
Crear acceso directo? mrmanuel Varios 1 13-09-2003 02:21:27
crear un acceso directo tango01 Varios 7 20-06-2003 17:42:48


La franja horaria es GMT +2. Ahora son las 13:34:36.


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
Copyright 1996-2007 Club Delphi