![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Yo antes no usaba campos blob (no puedes buscar en su interior, pesan más, etc), optaba por guardarlos fuera de la BBDD, pero eso también tiene sus inconvenientes (alguien puede borrar el archivo, debes compartir la carpeta de facturas en la red para que sean accesibles a todos los puestos, con la inseguridad que genera; las copias de seguridad tienes que incluir más archivos, etc).
Para eficiencia no hay problema con los campos Blob, porque cuando haces un select, lo único que se trae es el ID del campo Blob (es decir, no se trae el contenido del campo). Firebird guarda el contenido del campo en otra página de la Base de datos, solo se accede cuando fuerzas la lectura del contenido (por eso la mayoría de grids te ponen el texto (blob), para no realizar la búsqueda. Por supuesto la BBDD pesará mucho más, por los campos blob, pero si tu aplicación los necesita, al final el espacio se ocupa igual (BBDD + ficheros). A remarcar que se puede partir el archivo de BBDD llegado cierto tamaño (se especifica al crear la BBDD y ya Firebird se ocupa del resto), aunque si no usarás FAT (con su límite de 4 GB) y el disco duro es de 1 TB, pues quizás ni tengas que valorarlo. Si los campos blob están definidos como subtipo texto, desde Firebird 2.0 puedes hacer un select buscando en su interior, algo tipo: Firebird ya hace el moldeo de tipos de Blob a string automáticamente. Si son binarios (como los pdf), tienes que andar con loadfromstream, savetoStream y Assign (no hay drama). Cargar en un campo desde Archivo (el control de errores lía un poco el código... pero en realidad solo son 3 líneas):
Si el archivo es una foto y lo tienes en un TImage, en Image1.Picture tienes el SaveToStream y LoadFromStream Y si necesitas cargarlo en memoria, para después transferirlo, usas un TMemoryStream: Si un fichero es texto plano, tienes el TStringStream, todos son desdendientes de TStream y funcionan igual. Saludos!
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 19-04-2015 a las 18:32:04. |
|
#2
|
||||
|
||||
|
Yo aun no entiendo que es lo que pretende hacer con:
Cita:
Por otro lado como te dijo Lepe al hacer la consulta que trae el campo blob en realidad estas treyendo algo así como una máscara con un texto que dice blob, el proceso de cargar el pdf no se ejecuta en una sentencia similar a:
así que no tendrás problemas de velocidad por hacer dicho query. Pero ya que vas a guardar archivos pdf en la bd podría ser mejor que lo tengas en una base dados diferente por motivos prácticos, por ejemplo si dejas los archivos blob en la misma base datos donde guardas el resto de información está crecerá mucho, trayendo como gran inconveniente una demora cada vez mayor a la hora de hacer copias de seguridad, yo llegue a tener una base de datos con imágenes que pesaba 30G (documentos escaneados de varios años de un archivo, y obviamnete no estaba formateado el equipo en fat32 si no en NTFS), hacer una copia de seguridad de un archivo que pesa 300M es demorado, imagina 1G, 2G o 30G, es caótico si alguien lo hace manualmente, puedes programar una rutina para generar periódicamente una copia de seguridad pero ocurre que ahora tendrás otro gran problema los pdf (o lo que tengas en el archivo blob) tal vez no sea lo que más se guarde en la base de datos (pero si lo que más ocupa en espacio) así que por seguridad podrías querer tener copia diaria del resto de la información, pero de los pdf se puede tomar el riesgo de no tener una copia en digamos unos 8 días, al tenerlo en la misma bd no podrás definir si hacer esto o no, siempre tendrás que hacer copia de todo con el consiguiente gasto de espacio en disco duro, en pocas semanas ya tendrás lleno cualquier disco duro. En fin espero sirva de algo estos comentarios.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| DB firebird meter y sacar texto e imagenes a campos blob , con delphi | JXJ | Firebird e Interbase | 1 | 11-10-2010 12:52:34 |
| Error al insertar un nuevo registro | FGarcia | Firebird e Interbase | 3 | 19-07-2008 23:01:25 |
| Como Insertar Registro Nuevo ENTRE los demás Registros???? | AGAG4 | Conexión con bases de datos | 1 | 18-01-2006 04:03:45 |
| Insertar Nuevo Registro | perillan | Conexión con bases de datos | 3 | 24-04-2005 15:30:23 |
| Error al insertar nuevo registro | Humberto | Firebird e Interbase | 13 | 06-05-2004 23:45:01 |
|