Imagem no banco de dados?

Ola, estou precisando guardar imagens no meu banco de dados, Mysql.

Um amigo me disse q seria melhor se eu fizesse uma tabela com as informacoes da imagem e sua url, q n seria viavel guardar a imagem no banco mysql, mas sim em uma pasta do servidor.
Outro amigo me disse para guardar direto no banco, com o tipo BLOB.

Agora estou em duvida, alguem q ja teve essa experiencia podia me dar uma dica?
Vlw!

Geralmente o gargalo de sistemas web está no banco de dados.

Colocar 3374685430573 imagens lá pode não ser a melhor opção. A menos que vc precise (ex: aplicação web clusterizada sem storage compartilhado - o que é raro), eu acho melhor vc guardar em uma pasta protegida do sistema.

Se vc precisa, BLOB nele.

Não sga amigo nenhum, estude para saber as vantagens de cada opção. Só assim você vai entender porque o amigo 02 está certo.

Mas nimguem com mais experiencia poderia me dizer qual ja usou, pq usou, se deu resultados bons…
Quero opiniao de quem ja usou xD

Vlw!

Imagina se você resolver deixar apenas a imagem e o caminho pra ela e resolve mudar de hospedagem. Sai do sistema *nix para o windows… vai funcionar igual?

Mas eu pensei em deixar apenas o nome do arquivo, por exemplo:

id nome arquivo
1 imagem1 imagem.jpg

Dai o resto, o diretorio da imagem, o servidor q poe, ex: C:\imagens
:smiley:

Se vc souber usar um arquivo de propriedades para colocar o diretorio raíz e usar ‘file.separator’ não vai ter problemas :slight_smile:

Se colocar o path hardcoded vc está pedindo pra ter problemas mesmo se migrar de linux pra linux - problemas q vc percebe antes do deploy final com uma suite de testes automatizados :wink:

[quote]Mas eu pensei em deixar apenas o nome do arquivo, por exemplo:

id nome arquivo
1 imagem1 imagem.jpg [/quote]

IMHO parece bom, faça uma prova de conceito :wink:

Eu já usei de 3 tipos;
[list]Gardando no banco[/list]
[list]Gardando no no servidor[/list]
[list]E Guardando em um Storage Centera[/list]

isso vai depender da quantidade de imagens, do banco, da estrutura, dos acessos, etc…
Depende.

peczenyj, n entendi o q vc disse xD, so meio lento msm (IMHO, q isso???).

spycall, vai ter ± umas 2000 imagens, com ± uns 60 acessos por hora, uns 100 estorando.
Estou usando mysql.

Se puser 2000 imagens no mesmo diretório no Windows, você pode ter problemas de tempo de acesso a um arquivo.
Divida as imagens entre vários subdiretórios. (Por exemplo, se você tem imagens com nomes a0001, a0002, … a1998, a1999, a2000 etc, então ponha as imagens cujo nome termina com 0 no subdiretório 0, as cujo nome termina com 1 no subdiretório 1, e assim por diante.)

O Banco tem backup regularmente, vc tem um servidor onde pode deixar as imagens separadas, se simm, esse servidor tem backup ?

Você já leu esse tópico?

http://www.guj.com.br/posts/list/56822.java

fw

Ps: sou do partido daqueles que acredita que salvar o arquivo em formato blob é melhor.

[quote=brunoja]Mas nimguem com mais experiencia poderia me dizer qual ja usou, pq usou, se deu resultados bons…
Quero opiniao de quem ja usou xD

Vlw![/quote]

Eu usei as duas técnicas:

neste site: http://www.et.ufpr.br os pdf com os comprovantes de matrícula ficam armazenados no sistema operacional. Tive depois de um tempo que dividir em diretórios (mais ou menos como o thigol falou acima).

e nos sistema do inep estão armazenado em campo blob no Oracle (tamanho aprox hoje de 160Gb). O único cuidado que recomendo é separar o campo blob em uma tabela a parte (em que tenha a chave primária da tabela original e o campo blob apenas).

fw

[quote=brunoja]peczenyj, n entendi o q vc disse xD, so meio lento msm (IMHO, q isso???).

spycall, vai ter ± umas 2000 imagens, com ± uns 60 acessos por hora, uns 100 estorando.
Estou usando mysql.[/quote]

IMHO = em minha humilde opinião, traduzido do inglês (in my humble opinion).
Coisa de internauta. Eu também fiquei boiando quando vi isto na primeira vez.

Oi pessoal, alguém tem um exemplo para inserir uma imagem no oracle num campo BLOB?.

Valeu.

Visite o endereço abaixo:

http://forums.sun.com/thread.jspa?threadID=736236&messageID=4249694

fw

"

Pode guardar a imagem como String no banco, codificando seus bytes com o algoritmo base64 da sun.
Mas será uma boa solução dependendo da resolução da imagem. Se for grande, melhor guardar apenas o caminho da imagem no banco.