Jump to content


Photo

Qual A Vantagem De Se Gravar Uma Imagem No Mysql?


  • Faça o login para participar
10 replies to this topic

#1 GuiSaldanha

GuiSaldanha

    Normal

  • Usuários
  • 110 posts
  • Sexo:Não informado
  • Localidade:Natal, Rio Grande do Norte
  • Interesses:PHP/MySQL, javascript, design

Posted 07/03/2006, 09:42

Olá pessoal,

Estava lendo um artigo do Júlio César Martini, do iMasters, e lá tem mostrando como gravar uma imagem no banco de dados.

Mas qual seria a vantagem?

Eu acho que não teria muita vantagem não, já que o tráfego seria o mesmo e com isso não teríamos uma "organização" com os arquivos de imagem.
Guilherme Saldanha - www.guisaldanha.com - Sistemas em PHP

#2 Stormbringer

Stormbringer

    I'd love to stay with you all

  • Ex-Admins
  • 2927 posts
  • Sexo:Não informado
  • Localidade:Goiânia - GO
  • Interesses:Atualmente: pesquisa e desenvolvimento de web-games

Posted 07/03/2006, 09:45

a vantagem é, se vc apaga o registro, ja apaga no mesmo comando a imagem relacionada a ele...


gravando a imagem em arquivo, sempre que vc apagar um registro e quiser apagar a imagem(ou imagens) relacionada a ele, tem que usar o unlink e tal...

vai de cada um saber o metodo que mais se encaixa pro projeto que está fazendo ;)

๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑


#3 nandotrade

nandotrade

    12 Horas

  • Usuários
  • 124 posts
  • Sexo:Não informado

Posted 07/03/2006, 10:20

Sempre tenho visto algumas polêmicas em usar ou banco de dados para tratamento de imagens. Alguns recomendam seu uso outros não.

Um comentário adicional:

Qualquer projeto de sistema, trará excelentes resultados a partir do momento em que seu projeto tenha sido bem estruturado.

Usualmente observo algumas pessoas usando/sugerindo que se crie uma tabela onde são armazenadas as informações sobre a imagem e acabam criando um diretório onde guardam esses arquivos.

Boa parte desse processo, gera tempo de programação para garantir a manutenção dessas imagens, sejam nas inclusões, exclusões e alterações.

Além disso, é comum se verificar o crescimento contínuo dessas áreas (diretórios de imagens), pois com frequência, as pessoas lembram deapagar a referência na Tabela, e esquecem de apagar a imagem do diretório, pois ao apagar da Tabela nenhum outro usuário irá acessá-la mesmo.

A partir disso, e do comentário do Stormbringer, reforço a idéia de que as facilidades de se administrar um banco de imagens, são bem maiores do que as de gerir uploads de imagens em diretórios.

Adicionalmente, "organizar" informações num banco de dados (imagens) é bem mais eficaz do que da forma usualmente adotada, mesmo quando se usa uma Tabela para lançar registros de referência da localização da imagem em diretórios.

Tive a oportunidade de discutir estas questões com participantes do Forum Internacional de Software Livre que ocorreu em 2005, e com palestrantes que conversei, pode-se concluir que a falta de conhecimento sobre a manipulação de imagens em bancos de dados, é o fator que mais contribui para que seu uso seja reduzido, ou encoberto por um pouco de misticismo (tamanho do banco, tempo de resposta e outras coisas mais).

Espero ter colaborado para formação de sua opinião sobre o assunto.

Um abraço.

#4 Peri

Peri

    Consultor SAP

  • Usuários
  • 565 posts
  • Sexo:Não informado
  • Localidade:São Paulo - SP

Posted 07/03/2006, 13:27

Eu ja tive experiencia com ambos os casos , e na minha humilde opniao , prefiro utilizar um diretorio na maioria das vezes , digo maioria , pq a casos em que eh preciso se fazer o uso da tecnica de armazenamento em banco.
Concordo com nandotrade , realmente o gerenciamento apenas atraves de banco facilita muito a vida e a codificacao, mas eh valido lembrar que problemas como nosso amigo nandotrade citou nao devem ocorrer com desenvolvedores que se preocupam com desenpenho , "limpeza", que se preocupam em fazer um bom sistema , sem quebra-galhos ou "vou deixar aqui pq ninguem vai ver", pq um dia alguem pode ver e isso pode ser decisivo (falei bonito ) :D
Resumindo , acredito que tudo vai de sua necessidade, e de sua solucao diante do problema , eh sentar e pensar e independete doque escolher procurar fazer da melhor maneira possivel
[]s
inte
+-----------------------------------------------------------------------------------------------------------
UH Terêrê ... Voltei!

#5 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 07/03/2006, 15:50

bom, todo mundo falou legal ai, falaram que ajuda na organização e tals... mas guardar imagem em banco de dados deixa a execução mais lerda?

Pode vir a ter problemas mais a frente com sobrecarregamento, backup, tamanho do banco, etc?

Gostaria de saber isso, se alguem souber!!
Até
Site: GustavoPaes.net

^ Rumo ao Topo ^

#6 Peri

Peri

    Consultor SAP

  • Usuários
  • 565 posts
  • Sexo:Não informado
  • Localidade:São Paulo - SP

Posted 07/03/2006, 16:33

Grande paes , cada caso eh um caso, mas vamos a um caso onde vc guarda um grande volume de imagens , e que cada imagens possui um "tamanho" razoavel , bom isso ira refletir no tamanho em que sua informacao ira ocupar no banco , ja com isso podemos ver um custo maior na armazenacao (disco) , em seu backup , mas existe uma coisa pior que isso , que eh o desempenho do sistema (mas lembre-se cada caso eh um caso.) imagine um sistema que funcione como uma enciclopedia , vc teria muita midia , sons , videos , e nossa imagens , e digamos que elas estao em nosso banco .

Nosso sistema pode receber milhares de visitas e as pessoas em sua maioria se interessam por um determinado assunto , e la vao elas querendo ter acesso a suas imagens , apesar de seu bd poder suportar multiplas conexcoes , eh evidente que dependendo da maquina em que ele se encontra e da capacidade de rede , seu sistema pode ficar mais lento. Sao multiplos requerimentos ocorrendo em uma tabela que pode estar ocupando alguns megas por exemplo , e bits e bits trafegando pela rede.
Sem contar que seu BD pode estar atendendo outros pedidos e etc...

Uma coisa que vejo agora que mudei um pouco de area , eh que no php , diferente de muitas linguagens para internet ou nao , o gargalo dos sistemas em sua maioria esta na rede e na resposta do banco de dados, ou seja , se analisarmos o desempenho de um sistema baseado em php tera uma alta porcentagem de tempo gasto referente a resposta do banco de dados , o php em si gasta pouco.
Me lembro que tive uma vez um sistema em minha mao (este eh um caso extremo) , onde ele deveria fazer um sql muitcho loko , em 3 tabelas , as 3 tabelas juntas tinham mais de 18 gigas (isso mesmo , GIGA), o banco era oracle , mas nome nao faz tudo , mesmo com estudo em cima do sql (inclusive aplicando tecnicas de tunning) nao conseguimos uma resposta melhor doq 55 segundos. (que ja foi um milagre)
Fizemos um programinha para medir desempenho , o banco ficou com 98% do tempo.

Como disse paes , eh relativo ao problema que vc esta enfrentando , nesse meu caso extremo nao existiam imagens , era informacao do tipo char pura , mas imagine se vc tem uma perspectiva de crescimento do seu banco , de uma alta taxa de transferencia , vc tera alem que descidir sobre utilizar imagem no banco ou nao , verificar toda sua estrutura , servidores , configuracao , mao de obra especializada (um bom DBA sempre ajuda)
Bom eh more less isso , qq coisa , duvida , escreva
[]s

Edição feita por: Peri, 07/03/2006, 16:36.

+-----------------------------------------------------------------------------------------------------------
UH Terêrê ... Voltei!

#7 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 07/03/2006, 19:53

Ta certo peri.
Sinceramente, não vejo, na maioria dos casos, uma grande vantagem de se guardar as imagens em banco de dados.

Prefiro deixá-lo livre para o "transporte" de informações mais importantes como logs, buscas, enfim, dados do tipo "texto".

Mas sou suspeito de dizer, já que nunca fiz um teste guardando imagens no banco.

Por isso perguntei sobre os problemas que pode causar.

Até
Site: GustavoPaes.net

^ Rumo ao Topo ^

#8 .Eduardooo

.Eduardooo
  • Visitantes

Posted 07/03/2006, 20:21

Se tu quiser entupir seu banco de dados vai fundo.
Aprendi no curso de PHP ali no Senac do Centro que gasta muito espaço gravando imagens no BD, fica muito pesado e tal.

#9 Stormbringer

Stormbringer

    I'd love to stay with you all

  • Ex-Admins
  • 2927 posts
  • Sexo:Não informado
  • Localidade:Goiânia - GO
  • Interesses:Atualmente: pesquisa e desenvolvimento de web-games

Posted 08/03/2006, 09:00

Se tu quiser entupir seu banco de dados vai fundo.
Aprendi no curso de PHP ali no Senac do Centro que gasta muito espaço gravando imagens no BD, fica muito pesado e tal.

o espaço que se gastra gravando as imagens no BD é a mesmo que guardar diretamente em arquivos...

se a imagem tem 100 k, vai ocupar 100 k no banco, ou 100 k no arquivo...


o que paes e peri estavam discutindo é somente a velocidade de acesso...


acesso a um arquivo(considerando tipo binário) é mais rapido que um acesso ao BD? sim, porque?

no caso de arquivo de imagem, o arquivo já está pronto e esperando pra trafegar... se a imagem estiver no bd, tem que levar o ponteiro até o registro dela, carregar a informação binária da imagem pra memória e só entao o php vai envia-la pro browser informando seus headers...

ou seja, tudo depende... se vc quer fazer uma agenda com fotos dos seus amigos e eventualmente uma fotinho ou outra de um evento dentro de um calendário, talvez gravar no BD nao seja tão crítico... mas depende muito do volume de acessos e do volume de informaçoes

๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑


#10 bryntec

bryntec

    Turista

  • Usuários
  • 46 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 29/05/2006, 16:15

Amigos,

Só uma pergunta... Como ficaria o endereço da imagem, estando ela dentro do banco de dados ?! E ela seria acessivel a qualquer pessoa, ou seria necessário logar-se, ou coisa do genêro ?!

Abraço.
bryntec.com | Design e Programação Web

#11 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 30/05/2006, 10:17

vc tem que direcionar para uma pagina em php.... e ler essa imagen do banco de dados e processar a cada requisição da página
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq