FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Alternativa para almacenar imagenes de la BD
Saludos a todos, hace poco hice una base de datos parecido a una agenda, pero incluia la foto, y se me hizo facil crear un campo BLOB para almacenar las fotos, y podriamos decir que todo hiba muy bien, las imagenes no rebasan los 500x500px o en tamaño los 200kb
Pero ahora que tengo como 500 contactos el problema es que se tarda mucho en cargarse la base de datos incluso a veces se bloquea, quisiera saber que me recomiendan, igual y crear otra tabla para las puras fotos o subirlas aparte a una carpeta del servidor, como cuando se hace en PHP ( del cual lo basico basico apenas lo conozco ) y despues se lee la ruta almacenada en un campo "Text" Se aceptan sugerencias de preferencia la mas facil que duele menos |
#2
|
||||
|
||||
Si sale error es porque tienes algún error.
Deberías enseñarnos el código que usas para guardarlas y para leerlas y presentarlas, para poder ayudarte. Ten en cuenta que esas 500 fotos no es nada, ahora mismo tengo aquí la BD de un cliente y tiene más de 3 millones de fotos de artículos, y no tiene ningún problema por ello. |
#3
|
|||
|
|||
Buen Dia
Hola Casimiro Notevi
Gracias por tu respuesta, mir estoy probando los componentes UniDAC para conectar con MySQL, Utilizo el componente de Conexion MySQL un TUnitDataSource que es la Alternativa para un DataSource, y un TUniTable para sustituir Al Componente Table Solo coloco la direccion del servidor el usuario y contraseña para la base de datos y enlazo los componentes a la Tabla con la Agenda, Y utilizo los componentes DBEdit enlazados a los campos realmente nada fuera de lo normal y una DBGrid Para abrir la tabla en el FormShow;
Y en el FormClose;
La base de datos la hice con un gestor de MySQL y asi carge las imagenes, realmente no me presenta ningun error cargar los datos y las imagenes en un TImage Lo que pasa es que se tarda en cargar como 3 minutos la tabla, por lo que veo carga todos los datos de la base y despues los muestra. Habra alguna forma de limitar el numero de regustros a cargar o tengo que cambiar al componente de TUniQuery? |
#4
|
||||
|
||||
El error es de diseño no de programación, a menos que sea una tabla muy pequeña casi nunca se debe hacer un "select * from nombre_tabla" sin restringir ni filtrar nada ya que te puede pasar lo que te está sucediendo. A Casimiro le pasaría exactamente lo mismo si pretendiera cargar los 3 millones de registros de su tabla.
Lo que puedes hacer es restringir el num de registros que vas a traer en cada consulta ya sea mediante filtros que pidas al usuario (de tal a tal fecha, de tal a tal numero) o bien paginando mediante un LIMIT ejemplo, pensando en que vamos a paginar de 50 en 50 registros: te trae los primeros 50 registros te trae los siguientes 50 registros y así sucesivamente siempre vamos cambiando el valor de offset de 50 en 50. Ojala pusieras el query que estas utilizando
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#5
|
|||
|
|||
AzidRain muchas gracias por tu sugerencia, pues si tienes razon estuve probando varias cosas y decidi cambiar a la UniQuery
Al principio me costo un poco de trabajo encontrar como relacionar entre los objetos de la form pero por fin lo logre y para evitar que me pasara lo mismo que con la UniTable Cambie el codigo de carga inicial
Por
Para que me aparezca un registro en blanco y con eso el tiempo de carga de 4 minutos se redujo a unos cuantos segundos Ahorita me estoy familiarizando con cargar solo el registro que necesito y poder actualizarlo... ahi la llevo Pero ahora que me sugeriste cargar por lotes de 50 me parece mucho mejor Solo que como le indico al componente o la Grid que cuando llegue al final de los 50 y quiero ver los siguientes 50 me los muestre o regresar a los anteriores 50, se agradece la ayuda |
#6
|
||||
|
||||
Recuerda que la grid solo es un componente visual, no tiene control real sobre los datos. El valor de 50 es solo un ejemplo, tu puedes experimentar y traer los que te resulten mas rápidos. Para hacer que funcione lo de la paginacion tienes que implementar algunas rutinas que lleven la cuenta de en que pagina estas para lanzar el query de acuerdo con los registros que necesites traer. En el el ejemplo que te puse tienes el primer query que lanzarías (digamos "la página 1") y el otro query te trae las páginas que siguen, de manera que puedes guardar en una variable en que página estas para saber que valor ponerle al offset que siempre será el valor de la página multiplicado por el número de registros por pagina
Ya nada pones 2 botones "pagina anterior" y "página siguiente" y segun el caso incrementas o decrementas el valor de la variable página y recalculas el offset del query, lanzando la segunda query que te puse.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#7
|
|||
|
|||
Muchas Gracias
Muchas Gracias Azid, lo voy a probar
Por cierto estaba pensando cargar solo los registros por la fecha actual, voy a intentarlo y haber que sale porque se me ocurren 2 formas en la query meter una variable que se asigne al DateToStr(DATE) para que lo lea la query O checar si hay alguna funcion en MySQL que lo pueda hacer solo que aqui no estoy en la maquina que tengo delphi Ahora como el sistemita se supone que almacenara funcionara para varias personas que tendran su propia agenda, mi intencion ( claro tengo que pensar bien si poner una tabla por usuario o una sola con el nombre del usuario en cada registro para diferenciarlos ) es que pueda yo realizar una consulta para los registros de los X usuarios y me diga si un mismo telefono o conocido tienen en comun Algo asi como lo que hacen algunas redes sociales que te dicen que quizas conoscas a esa persona, claro que con las agendas de pocos usuarios que van a trabajar con el sistemita pero cada uno tendra su agenda con conocidos o clientes y es para saber a quienes conocen en comun Pero por mientras pues a darle a lo basico |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como almacenar imagenes | Bracus | SQL | 2 | 26-05-2008 22:02:19 |
almacenar imagenes video y paginas html en interbase | carasucia | Conexión con bases de datos | 0 | 15-11-2007 18:43:03 |
Se pueden almacenar imágenes en una BD en Access?? | oracle | Conexión con bases de datos | 6 | 02-08-2005 17:11:54 |
Almacenar imagenes .jpg en SQLServer | tannyk | Varios | 3 | 25-05-2005 23:57:29 |
|