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 Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 04-04-2010
JF Sebastian JF Sebastian is offline
Miembro
 
Registrado: oct 2006
Posts: 108
Poder: 18
JF Sebastian Va por buen camino
Mi aplicación consiste en el dimensionamiento óptimo de estructuras metálicas formadas por perfiles comerciales (barras). Las dimensiones y características de estos perfiles están en una base de datos .mdb

La base de datos consta de varias tablas, en la primera se almacenan las familias de perfiles disponibles (Laminados, Conformados, Extruidos...) en la segunda se almacenan los nombres de las series de perfiles (IPE, IPN, HEB,...) en la tercera se almacenan los perfiles en si (IPE_100,IPE_120,...), etc. En cada tabla hay campos de relacion ID que empleo para realizar un master-detail de modo que se pueda organizar la información. Además la tercera tabla está ordenada (IndexFieldNames) por un campo específico como puede ser el momento de inercia.

El dimensionamiento se realiza mediante un metodo metaheurístico (HS) de búsqueda, en el que se prueban aleatoriamente diversas configuraciones de perfiles, es normal hacer miles de búsquedas. Por cada búsqueda es preciso efectuar un cálculo algo complejo.

Antes de cada cálculo hay que leer de la base de datos las características de los perfiles de las barras de la estructura en la nueva configuración que selecciona el algoritmo HS (Esta configuración es un vector de enteros de dimensión el número de barras y en el que se almacena un número pseudoaleatorio comprendido entre 1 y el número de perfiles que haya en la tercera tabla ej: IPE_xxx). La estructura a su vez puede tener bastantes barras.

El cálculo esta muy optimizado en velocidad y prácticamente es instantáneo. El cuello de botella reside en leer de la base de datos el perfil aleatorio N dentro de la tercera tabla.

Cada barra tiene asociada una clase con la familia y grupo de perfil (entre otras muchas cosas); no cambian durante el cálculo, lo que varia es la dimensión del perfil.

En las pruebas que he hecho he intentado comentar los locate, first, last, next, prior, recno, etc y de 4 horas de tiempo total de cálculo pasó a 10 minutos.
Comentando además la lectura en sí del registro de la BD, aún más rápido pero no mucho más..

Llevo programando muchos años pero soy bastante profano en bases de datos.
Responder Con Cita
 



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
FastReport con tablas en memoria David Impresión 2 29-01-2013 17:43:37
Tablas o consultas en memoria jmdd SQL 3 08-08-2007 19:26:19
out of memory con tablas en memoria jrmanso Firebird e Interbase 8 20-06-2007 21:57:37
Asesoramiento: ¿Tablas temporales, datos en memoria...? kuan-yiu Varios 15 21-08-2006 20:25:35
TADOTable al completo en memoria??? Pandre Conexión con bases de datos 2 15-11-2003 03:07:57


La franja horaria es GMT +2. Ahora son las 16:06:37.


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