Imagens no BD ou não?

olá pessoal,
eu quero saber (d quem jah fez) se vcs costumam, em um sistema web, guardar imagens no banco de dados (estou usando postgresql), ou apenas arquivam e armazenam os caminhos.
eu estou desenvolvendo um prontuário para alunos e preciso guardar suas fotos.
digam lah, eu não tenho experiência e preciso d ajuda.

obrigado

Quer atrelar fortemente o seu sistema ao banco de dados específico? Se não, então sugiro que esqueça guardar imagens no banco.

Até!

Isto já foi discutido algumas vezes aqui no GUJ. Um sumário de prós de cada opção:

Direto banco:

  • facilidade de backup
  • facilidade caso use um framework de persistência como o Hibernate e sua aplicação seja desktop - não é seu caso

Guardando o caminho:

  • melhor performance, principalmente no caso de webapplications onde cada imagem significa uma requisição nova

Tem gente que usa uma abordagem híbrida.
Ou seja, cadastra as imagens no banco, mas quando da primeira requisição, copia-as para o diretório de arquivos estáticos (imagens, arquivos HTML, CSS etc.).
Se a imagem já estiver no diretório, não é preciso recuperá-la do banco.
Se o número de imagens for muito grande para deixá-las no diretório de arquivos estáticos, e as imagens só forem usadas durante um período curto (por exemplo, em um site de um jornal, não é preciso deixar imagens durante mais de uma semana), você pode limpar periodicamente essas imagens.

Não entendi… porque atrelaria a um banco de dados especifico??

[quote=maquiavelbona]Quer atrelar fortemente o seu sistema ao banco de dados específico? Se não, então sugiro que esqueça guardar imagens no banco.

Até![/quote]

É que o tratamento de BLOBs acaba atrelando ao banco.
Um BLOB normalmente não pode ser criado, apenas modificado ou lido; só dá para criá-lo com alguma classe específica do banco de dados. Além disso, os drivers JDBC normalmente são muito bugados quanto ao tratamento de BLOBs (leia-se Oracle), então você acaba tendo de usar alguma classe específica do seu banco (por exemplo “oracle.jdbc.algumacoisa”.)

[quote=facholi]olá pessoal,
eu quero saber (d quem jah fez) se vcs costumam, em um sistema web, guardar imagens no banco de dados (estou usando postgresql), ou apenas arquivam e armazenam os caminhos.
eu estou desenvolvendo um prontuário para alunos e preciso guardar suas fotos.
digam lah, eu não tenho experiência e preciso d ajuda.

obrigado[/quote]
use um campo BLOB (Binary Large Object).

[quote=thingol]É que o tratamento de BLOBs acaba atrelando ao banco.
Um BLOB normalmente não pode ser criado, apenas modificado ou lido; só dá para criá-lo com alguma classe específica do banco de dados. Além disso, os drivers JDBC normalmente são muito bugados quanto ao tratamento de BLOBs (leia-se Oracle), então você acaba tendo de usar alguma classe específica do seu banco (por exemplo “oracle.jdbc.algumacoisa”.)
[/quote]
Não pode ser criado? Então como ele nasce???

Tive algumas noites perdidas tentando trabalhar com PDF e PNG dentro de BLOB no Oracle. Pior ainda quando tive que adequar um DB com esses dados, de MySQL para Oracle.
Garantia de perder alguns dias do seu feriado estudando isso.

Eu acho mais adequado guardar só as referências para imagens.

Até!