Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2003
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Question Archivo GDB de 2.33 Gb!!!!

Hola.

Otra vez yo. Hice la aplicación de escaneo de encuestas y tengo el siguiente problema:

La aplicación tona una imagen de 850x1060 pixeles en B/N BMP, que pesa 106 Kb y la divide en tres graficos de 850x350 en B/N BMP y los guarda en un campo blob definido así:

bmps BLOB( 65535, 0 ) según el metaarchivo de IB_SQL y
BMPS BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL según el metaarchivo de SQL Explorer.

el resultado despues de guardar 2065 imagenes de las de 850x350 fue un archivo GDB de 2.33 Gb.

No entiendo porque, en el peor de los casos, si guardara las imagenes de 850x1060 de 106 Kb (de estas son 695) el resultado es de 72 Mb, el 3% del tamaño que me quedo....

Intuyo que el error es en la deficición del campo...

Sergio
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #2  
Antiguo 02-09-2003
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Hola.

Veo que 21 personas han leido el mensaje pero no hay respuesta...

No está bien expuesto?
No tiene respuesta?
Es muy estupida la pregunta?
Será que mi mamá me mima?


Sergio....

P.D. Realmente necesito orientación al respecto.
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #3  
Antiguo 02-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por sercornejov
Veo que 21 personas han leido el mensaje pero no hay respuesta...

No está bien expuesto?
Está correctamente expuesto.

Cita:
Posteado originalmente por sercornejov
No tiene respuesta?
Seguramente sí. Yo mismo tengo alguna opinión, pero todavía no he tenido tiempo para verificar si es correcta. Al fin y al cabo no has dejado pasar ni 24 horas desde que planteaste tu consulta.

Cita:
Posteado originalmente por sercornejov
Es muy estupida la pregunta?
Evidentemente no.

Cita:
Posteado originalmente por sercornejov
Será que mi mamá me mima?
¡Ah!, las madres ... qué haríamos sin ellas.

Saludos.

P.D. Un poco de calma, a veces pasan varios días hasta tener una respuesta.

Última edición por kinobi fecha: 02-09-2003 a las 09:19:59.
Responder Con Cita
  #4  
Antiguo 02-09-2003
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Ok. Ok. Ok OK

Lo siento, es que estoy mal acostumbrado porque en el foro casi siempre la respuesta es mas rápida.

Perdón. perdón, perrrrrrrddoooooón

Sergio
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #5  
Antiguo 02-09-2003
eliasterrero eliasterrero is offline
Miembro
 
Registrado: may 2003
Posts: 25
Poder: 0
eliasterrero Va por buen camino
Hola, espero serte de ayuda.
A mi personalmente no me gusta almacenar directamente imagenes en la base de datos, yo lo que haria es crear un campo de tipo string donde guardar la ruta de la imagen, asi ademas de eliminar problemas con campos blob a los que odio con locura , tengo la ventaja de poder cambiar las imagenes sin modificar los datos de la BD. Pero bueno como tu ya has implementado el campo blob te sugiero que hagas un backup y un restore de tu base de datos a ver que pasa con el tamaño; habitualmente suele ser menor.
Siento no poderte ser de mayor ayuda . Un saludo y suerte en tu proyecto.

Covadonga
Responder Con Cita
  #6  
Antiguo 03-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

algunas ideas sobre el crecimiento de la base de datos:

1. Estar realizando UPDATE's sobre los campos BLOB desde diferentes transacciones, que estén generando "deltas" de los registros que no se estén eliminado, posteriormente, por los mecanismos de recogida de "basura".

2. Uso de transacciones (incluidas las de lectura) con un nivel de aislamiento muy alto (snapshot).

3. No existe una correspondencia exacta entre el tamaño de la información que se intenta almacenar en un BLOB y el tamaño que éste realmente ocupa, ya que se trabaja a nivel de páginas y segmentos. De todas formas, la diferencia que tú tienes me parece excesiva.

En cualquier caso, como comenta eliasterrero, un backup/restore debería eliminar versiones obsoletas de los registros y reducir el tamaño de la base de datos.

En cuanto al asunto de no almacenar la imágenes en la base de datos, opino que tiene muy poco que ganar y sí mucho que perder, como ya he comentado en varios hilos dentro de estos foros.

Saludos.
Responder Con Cita
  #7  
Antiguo 03-09-2003
Avatar de SCORDOBA
SCORDOBA SCORDOBA is offline
Miembro
 
Registrado: ago 2003
Ubicación: Llano de Brujas. Murcia
Posts: 37
Poder: 0
SCORDOBA Va por buen camino
Hola:

Yo tuve este problema de gdb de mas de 2gb con firebird 1.0 para Linux, no se si es tu caso. Para windows 2000 no he tenido problema de longitud de los gdb's. El problema lo arreglaron en la version 1.0.2

http://prdownloads.sourceforge.net/f...6.rpm?download

Respecto al tema de poner imagenes incrustadas mi opinion es favorable. Son muchas las ventajas. He realizado pruebas con insercion de 60000 imagenes y el rendimiento es muy bueno.

Actualmente tengo una aplicacion que usa una estructura de carpetas para almacenar imagenes que tiene unas 500000 (30 GB) Mover esto o hacer backup es muy pesado. La idea es pasar las imagenes a una tabla.
__________________
Ven a Murcia y no solo pasaras calor.
Responder Con Cita
  #8  
Antiguo 03-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por SCORDOBA
Actualmente tengo una aplicacion que usa una estructura de carpetas para almacenar imagenes que tiene unas 500000 (30 GB) Mover esto o hacer backup es muy pesado.
manejando ese volumen de información, lo ideal es buscarse, o hacerse, algún tipo de mecanismo de backup (no necesariamente en el sentido de backup InterBase) incremental.

Saludos.
Responder Con Cita
  #9  
Antiguo 03-09-2003
Yosvany Yosvany is offline
Registrado
 
Registrado: sep 2003
Ubicación: Cuba
Posts: 1
Poder: 0
Yosvany Va por buen camino
Post

Yo crearia un tipo de datos para los trozos de imagenes mas pequeños así:
create domain NEW_DOMAIN as blob sub_type -1 segment size
80;
y para las imágenes grandes de esta forma
create domain NEW_DOMAIN as blob sub_type -1 segment size
100;

porque -1: Bueno puedes poner cualquier numero negativo para identificar tu tipo de datos y no utilizar los predefinidos por interbase del 0 al 6. Así interbase no chequea lo que gurdes en el campo blob. Puede que esto te ayude a reducir un poco el tamaño además.

Última edición por Yosvany fecha: 03-09-2003 a las 21:23:51.
Responder Con Cita
  #10  
Antiguo 04-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Yosvany
Bueno puedes poner cualquier numero negativo para identificar tu tipo de datos y no
idea interesante la de utilizar los sub-tipos definidos por el usuario, yo la probaría.

Cita:
Posteado originalmente por Yosvany
utilizar los predefinidos por interbase del 0 al 6.
Tal vez esté equivocado, pero los sub-tipos BLOB InterBase son sólo 3:

0 (Predefinido) --> sub-tipo binario
1 (Predefinido) --> sub-tipo texto
Entero negativo --> sub-tipo definido por el usuario.

Saludos
Responder Con Cita
  #11  
Antiguo 08-09-2003
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Hola:

Pues hize el Backup y el restore correspondiente y la base de datos si bajo de tamaño, paso de 2.33 gb a 1.98 gb......

Necesito poder guardar estos bmp's en la base pero sin que cresca tanto.

Por hay logre guardar los gif en lase de datos y paso que cuando va en el 1070 de los 2067 se explota el programa, bueno eso ya es de programación, espero y no de la bade de datos.

El archivo con los 1070 gif resulta de 2.1 Mb, algo del todo manejable, agradable, bonito, estético, etc.....

Seguiré intentando. Si pueden echarme una mano... Si alguno quiere probar el Código fuente para ver que es lo que pasa.....

Sergio
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #12  
Antiguo 08-09-2003
xerkan xerkan is offline
Miembro
 
Registrado: jun 2003
Posts: 89
Poder: 21
xerkan Va por buen camino
Otra cosa q puesdes haces es transformar los bmp a jpg y guardar estos en la base de datos (o hacer q el delphi se encarge de la transformacion), para hacerlo tienes informacion en esta pagina:

http://www.q3.nu/trucomania/main.shtml
Responder Con Cita
  #13  
Antiguo 08-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Pón el código que utilizas para convertir a GIF y le daremos una hojeada. No es nada normal que falle al llegar a un determinado numero de conversiones, falle el programa. Tiene todo el aspecto de que tienes una pérdida de memoria, al convertir una imagen creas un objeto en memória que no liberas con el correspondiente Free, por lo que al irse acumulando esas pequeñas pérdidas de memória, llega un momento que agotas la memória RAM del equipo.

Es una suposición, si pones el código fuente lo podemos determinar mejor.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #14  
Antiguo 10-09-2003
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
O.K.

El formulario tiene un boton que envia a un procedimiento con parámetros:

Código:
procedure TfrmPpal.tabular2(Ini,Fin,Sal: integer);
var
 encuesta,i,j,k,l,m,t,PuntoMatrizVer,IncrementoVer,verificador,Deltay:integer;
  nombre:string;
  Hoja,bmp:TBitmap;
  verificacion:array[0..55] of Tcolor;
  cuadro1,cuadro2:TRect;
  tercio1,tercio2:TMemoryStream;
  myibBlob: TStream;
  gif:TGIFImage;

begin
	encuesta:=HojaIni;
  for j:=hojaini to hojafin do
  	begin
    	hoja:=Tbitmap.Create;
    	Cuadro1.Left:=16;
      Cuadro1.Top:=21;
      Cuadro1.Right:=826;
      Cuadro1.Bottom:=368;
      Cuadro2.Left:=16;
      Cuadro2.Top:=21;
      Cuadro2.Right:=826;
      Cuadro2.Bottom:=368;
      Deltay:=0;
      if j<10 then
        nombre:='Explorar000'+IntToStr(j)+'.bmp'
        else if (j>9) and (j<100) then
          nombre:='Explorar00'+IntToStr(j)+'.bmp'
          else if (j>99) and (j<999) then
            nombre:='Explorar0'+IntToStr(j)+'.bmp';
      hoja.LoadFromFile(ruta+nombre);
    	for i:=1 to 3 do
      	begin
        	g1.Progress:=encuesta;
          if frac(encuesta/sal)=0 then
        		if prgbarTabulacion.Position<prgbarTabulacion.Max then
            	prgbarTabulacion.StepIt;
          gif:=TGIFImage.Create;
          bmp:=Tbitmap.Create;
          bmp.Height:=347;
          bmp.Width:=810;
          gif.Height:=347;
  				gif.Width:=810;
          ibtblEncuesta.Active:=true;
          ibtblEncuesta.Insert;
          myibBlob:=ibtblEncuesta.CreateBlobStream(ibtblEncuestaBMPS,bmWrite);
          tercio1:=TMemoryStream.Create;
          tercio2:=TMemoryStream.Create;
          ibtblEncuestaIDENCUESTA.Value:=encuesta;
          for k:=0 to 57 do
          	begin
            	IncrementoVer:=0;
              verificador:=0;
              PuntoMatrizVer:=0;
              for l:=px1[k] to px2[k] do
              	begin
                  for m:=py1[k] to py2[k] do
                    begin
                      verificacion[PuntoMatrizVer]:=hoja.Canvas.Pixels[l,m+deltay];
                      if verificacion[PuntoMatrizVer]=clwhite then
                        IncrementoVer:=1
                        else
                        	IncrementoVer:=0;
                      verificador:=verificador+IncrementoVer;
                    end;
                end;
              if verificador=0 then
              	ibtblEncuesta.Fields[k+1].value:=1
                else
                	ibtblEncuesta.Fields[k+1].value:=0;
            end;
          bmp.Canvas.CopyRect(bmp.Canvas.ClipRect,hoja.Canvas,cuadro1);
          bmp.SaveToStream(tercio1);
          gif.Assign(bmp);
          gif.SaveToStream(tercio2);
          myibBlob.CopyFrom(tercio2,0);
          tercio1.Free;
          myibblob.Free;
          tercio2.Free;
          gif.Free;
          Cuadro1.Left:=16;
      		Cuadro1.Top:=cuadro1.Bottom;
      		Cuadro1.Right:=826;
      		Cuadro1.Bottom:=cuadro1.Bottom+347;
          encuesta:=encuesta+1;
          deltay:=deltay+348;
          ibtblEncuesta.Post;
          ibtscPpal.Commit;
        end;  // fin rutina de tabulacion de 3 encuestas por hoja
      hoja.Free;
    end;  // fin rutina de tabulacion de hojas
  pnlOcultar.SendToBack;
  ibtblEncuesta.Active:=true;
  ibtblEncuesta.Refresh;
  ibtblEncuesta.Last;
  ibtblEncuesta.First;
end;
Bueno los parámetros son
HojaIni: inicio de las hojas escaneadas y guardadas como archivo con el nombre "Explorar0001.bmp"
HojaFin: Fin de las hojas escaneadas y guardadas como archivo con el nombre "Explorar0689.bmp"

Cada archivo es una hoja de encuesta con tres encuestas cada una. este archivo es de 850x1100 pixeles. El procedimiento, mediante el Trect Cuadro1 y cuadro2 se desplaza en la lectura de las encuestas.

En el uses esta gifimage que es la de TGIFImage de Andrew Malander.


Sergio
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:54:46.


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