Imagem no banco de dados?

17 respostas
B

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!

17 Respostas

peczenyj

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.

pcalcado

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.

B

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!

bandrade

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?

B

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:

peczenyj

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:

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

id nome arquivo
1 imagem1 imagem.jpg

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

spycall

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.

B

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.

T

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.)

spycall

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

Dieval_Guizelini

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.

Dieval_Guizelini

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!

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

marciosantri

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.

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.

polomx

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

Valeu.

Dieval_Guizelini

Visite o endereço abaixo:

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

fw

M

"

J

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.

Criado 29 de janeiro de 2008
Ultima resposta 14 de nov. de 2008
Respostas 17
Participantes 11