Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricna.net

Desempenho em Busca de Imagem

Recommended Posts

Olá pessoal!

 

Preciso tomar uma decisão de projeto quanto a estrutura de diretórios no servidor para armzaenamento de imagens.

 

A pergunta é bem simples mas não sei responder...

 

Tem diferença de DESEMPENHO NA BUSCA entre colocar 1 milhão de imagens em um diretório apenas e colocar estas

imagens separadas em dezenas de diretórios?

 

...resumindo qual das duas opções é melhor:

 

Opção 1: Colocar 500 mil fotos dentro do diretório "IMG".

 

Opção 2: Criar 100 diretórios dentro do diretório "IMG" e colocar 5 mil fotos dentro de cada um, totalizando 500 mil fotos.

 

A pergunta se refere a DESEMPENHO e não a melhor "organização visual"...

 

O servidor PHP "sofre" MENOS em qual das buscas?

 

Desde já fico muito agradecido...

Obrigado e até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao tenho nenhum dado oficial de algo nesse sentido mas acredito que em termos de desempenho nao muda muito mas se precisar fazer algo pelo FTP terá mais trabalho com o diretorio mais carregado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Mário por sua opinião...

 

Pois é, estou com esta pulga agora...

 

Estou pensando em fazer o seguinte na hora de criar um arquivo no servidor, após o usuário fazer o upload esta imagem será salva com o código do produto (neste caso) e o dieretorio seria determinado da seguinte forma:

 

$dir = 'img/produto/'.($id%10).'/'.($id%100).'/'.($id%1000).'/';

 

Isso faria com que fossem criadas 10 pastas de 0 a 9...

..Dentro de cada uma seriam geradas autoamticamente mais 10 ..

Exemplo (Pasta 5 possuira as pastas 5,15,25,35,45,55,65,75,85 e 95

... E dentro de cada uma destas seriam geradas mais 100 pastas

 

Resultando em 10 mil diretorios...argh

 

Em caso de existirem 100 mil produtos exisitirá no máximo 10 arquivos por diretório

E caso de 1 milhão existirá no máximo 100 arquivos por diretório.

 

Apesar de serem muitos diretórios acredito que na hora da requisição feita na página, seria mais desempenho que no caso contrário, que seriam 100 diretórios com 10 mil arquivos em cada um....

 

Não tenho experiência com isso e estou muit confuso, pois o que decidir agora poderá ser inviável mudar depois.

 

E aí pessoal o que é melhor:

CEM diretórios com DEZ MIL arquivos em cada... ou DEZ MIL diretórios com CEM arquivos em cada

 

Por favor, opinem...

Preciso decidir isso urgente e não sei o que fazer...

 

Obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom a pasta não tem diferença, pois o servidor não enxerga a pasta.

O diretorio nada mais que organização para humanos as maquinas só identifica o local no HD.

Então não tem diferença.

 

O que pode ter diferença de desempenho é o seu script de como você ira percorer esses diretorios

Compartilhar este post


Link para o post
Compartilhar em outros sites

A quantidade de arquivos em uma pasta influencia sim a performance. Isto é imperceptível quando se trata de poucos arquivos, mas quando o assunto é milhares ou até milhôes, isso pode estressar o disco.

Em um sistema eu fiz algo assim para melhorar a performance do disco, sendo que o nome da imagem era o identificador dela no banco mais a sua extensão:

 

$path_arquivo = intval(identificador / numero_maximo_de_imagens_que_vc_quer_por_pasta) . '/' identificador . '.' . extensao;

Compartilhar este post


Link para o post
Compartilhar em outros sites

trabalhar a busca a nivel de arquivo acho besteira ....

 

jogue as informaçoes necessárias de cada imagem em um banco de dados, assim você pode realizar a busca atravéz do banco de dados e nao pela estrutura de arquivos...

 

sobre sua pergunta, nao sei responder qual seria melhor nao, nunca trabalhei com uma carga desse tamanho

Compartilhar este post


Link para o post
Compartilhar em outros sites

trabalhar a busca a nivel de arquivo acho besteira ....

Acredito que ele não quer buscar arquivos em diretórios, e sim se refere a performance do sistema em ler um arquivo em uma pasta com milhões de arquivos dentro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi errado entao ...

 

mas nesse caso, creio que nao ... pelo menos pra mim nao faz o menor sentido a leitura de um arquivo ser prejudicada pelo fato dela estar numa pasta com milhares de arquivos..

 

quando se sabe qual arquivo buscar dentro de uma pasta nao influencia.

 

Seria como acessar um indice de um vetor com 1 milhão de indices, a quantidade de índices nao vai influenciar o acesso a um indice apenas.

Agora quando o assunto é uma busca ou qq tipo de análise dentro desse vetor, aí sim o desempenho entra na conversa.

 

Prova disso e você acessar um pasta lotada de arquivos e uma com poucos, como é uma análise de todo o conteúdo, o desempenho cai drasticamente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o maior problema de ter uma quantidade de arquivos em uma mesma pasta acredito que seja organização mesmo, e também em alguns SO's / programas FTP a quantidade de arquivos exibidos em uma mesma pasta é limitado.

 

Eu costumo a fazer a estrutura de pastas por datas, geralmente separando mensalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando se sabe qual arquivo buscar dentro de uma pasta nao influencia.

 

Seria como acessar um indice de um vetor com 1 milhão de indices, a quantidade de índices nao vai influenciar o acesso a um indice apenas.

Agora quando o assunto é uma busca ou qq tipo de análise dentro desse vetor, aí sim o desempenho entra na conversa.

 

Prova disso e você acessar um pasta lotada de arquivos e uma com poucos, como é uma análise de todo o conteúdo, o desempenho cai drasticamente...

Pois é... Justamente baseado neste desempenho que vemos em pastas com muitos arquivos, seja no Linux ou Windows, é que pensei na divisão por diretórios.

Mas como você colocou aqui, é passado o endereço exato do arquivo e acredito que o servidor não precisa varrer o diretório (obviamente) para localizar, portanto não deve ter diferença de performance mesmo...

 

 

A quantidade de arquivos em uma pasta influencia sim a performance. Isto é imperceptível quando se trata de poucos arquivos, mas quando o assunto é milhares ou até milhôes, isso pode estressar o disco.

Em um sistema eu fiz algo assim para melhorar a performance do disco, sendo que o nome da imagem era o identificador dela no banco mais a sua extensão:

 

$path_arquivo = intval(identificador / numero_maximo_de_imagens_que_vc_quer_por_pasta) . '/' identificador . '.' . extensao;
Gostei muito da sua dica é uma maneira interessante de dividir também, e fica mais fácil de entender que usando o MOD no caso que criei.

 

Então Márcio... O problema de performance no seu caso você percebeu em consultas pela página ou durante o gerenciamento por FTP?

 

o maior problema de ter uma quantidade de arquivos em uma mesma pasta acredito que seja organização mesmo, e também em alguns SO's / programas FTP a quantidade de arquivos exibidos em uma mesma pasta é limitado.

Não sabia deste limite.. Sabe se tem algum comando/maneira para saber esse limite no meu servidor? E isso é somente quanto a exibição certo? Não posso descobrir que meu servidor não aceita colocar muitos arqquivos em um mesmo dirtório,rsss.

 

 

/*******************************/

 

Surgiu uma nova sugestão também... De criar uma pasta para cada usuário do sistema e dentro da pasta do usuário as imagens referentes aos seus produtos. Pensem no sistema como "um MercadoLivre da vida" onde qualquer um pode se registrar e colocar N proutos com N imagens. Será interessante então criar uma pasta para cada usuário?

 

/*******************************/

Muito obrigado pelas opiniões....

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando se sabe qual arquivo buscar dentro de uma pasta nao influencia.

 

Seria como acessar um indice de um vetor com 1 milhão de indices, a quantidade de índices nao vai influenciar o acesso a um indice apenas.

Agora quando o assunto é uma busca ou qq tipo de análise dentro desse vetor, aí sim o desempenho entra na conversa.

 

Prova disso e você acessar um pasta lotada de arquivos e uma com poucos, como é uma análise de todo o conteúdo, o desempenho cai drasticamente...

Pois é... Justamente baseado neste desempenho que vemos em pastas com muitos arquivos, seja no Linux ou Windows, é que pensei na divisão por diretórios.

Mas como você colocou aqui, é passado o endereço exato do arquivo e acredito que o servidor não precisa varrer o diretório (obviamente) para localizar, portanto não deve ter diferença de performance mesmo...

 

 

A quantidade de arquivos em uma pasta influencia sim a performance. Isto é imperceptível quando se trata de poucos arquivos, mas quando o assunto é milhares ou até milhôes, isso pode estressar o disco.

Em um sistema eu fiz algo assim para melhorar a performance do disco, sendo que o nome da imagem era o identificador dela no banco mais a sua extensão:

 

$path_arquivo = intval(identificador / numero_maximo_de_imagens_que_vc_quer_por_pasta) . '/' identificador . '.' . extensao;
Gostei muito da sua dica é uma maneira interessante de dividir também, e fica mais fácil de entender que usando o MOD no caso que criei.

 

Então Márcio... O problema de performance no seu caso você percebeu em consultas pela página ou durante o gerenciamento por FTP?

 

o maior problema de ter uma quantidade de arquivos em uma mesma pasta acredito que seja organização mesmo, e também em alguns SO's / programas FTP a quantidade de arquivos exibidos em uma mesma pasta é limitado.

Não sabia deste limite.. Sabe se tem algum comando/maneira para saber esse limite no meu servidor? E isso é somente quanto a exibição certo? Não posso descobrir que meu servidor não aceita colocar muitos arqquivos em um mesmo dirtório,rsss.

 

 

/*******************************/

 

Surgiu uma nova sugestão também... De criar uma pasta para cada usuário do sistema e dentro da pasta do usuário as imagens referentes aos seus produtos. Pensem no sistema como "um MercadoLivre da vida" onde qualquer um pode se registrar e colocar N proutos com N imagens. Será interessante então criar uma pasta para cada usuário?

 

/*******************************/

Muito obrigado pelas opiniões....

 

Estou em desenvolvendo um site com este aspecto, pensei primeiro na organização das pastas, cada empresa terá a sua!

 

no começo eu pensei em colocar tudo junto, dando time() nas imagens, mas veio o seguinte problema e se uma das empresas desistir do contrato, quando a mesma tivesse um exemplo "10.000" imagens, eu teria que criar um sistema que deleta-se todas as imagens pelo id da empresa, e apagar em números limitados,

 

Ai pensei vou organizar por pasta caso seja necessário excluir a pasta, vai embora em questao de segundos ou minutos, já pensou tudo isso misturado ia ser complicado sem falar a perda de tempo excluindo, e lá no banco a mesma coisa drop table

 

e resovolvido

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou em desenvolvendo um site com este aspecto, pensei primeiro na organização das pastas, cada empresa terá a sua!

 

no começo eu pensei em colocar tudo junto, dando time() nas imagens, mas veio o seguinte problema e se uma das empresas desistir do contrato, quando a mesma tivesse um exemplo "10.000" imagens, eu teria que criar um sistema que deleta-se todas as imagens pelo id da empresa, e apagar em números limitados,

 

Ai pensei vou organizar por pasta caso seja necessário excluir a pasta, vai embora em questao de segundos ou minutos, já pensou tudo isso misturado ia ser complicado sem falar a perda de tempo excluindo, e lá no banco a mesma coisa drop table

 

e resovolvido

 

Abraços

beleza WDuarte! Então você optou por um diretório para cada empresa/usuário... E serão muitos usuários?

Será que o desempenho com muitos diretórios dentro de um só não vai comprometer aí também? Se antes eram muitas imagens agora serão muitos diretórios, menos que a quantidade de imagens por diretório antes, mas considerando 500.000 imagens e que cada usuário coloque 100 (o que é muuuuito para um usuário só), serão CINCO MIL DIRETÓRIOS dentro UM só.... Na verdade esse número poderá ser bem maior.

 

Isso pode parecer chatice, tantas dúvidas para colcoar imagens em um site, mas depois eu não quero mexer mais... Manutenção numa coisa dessa vai ser muito massante.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou em desenvolvendo um site com este aspecto, pensei primeiro na organização das pastas, cada empresa terá a sua!

 

no começo eu pensei em colocar tudo junto, dando time() nas imagens, mas veio o seguinte problema e se uma das empresas desistir do contrato, quando a mesma tivesse um exemplo "10.000" imagens, eu teria que criar um sistema que deleta-se todas as imagens pelo id da empresa, e apagar em números limitados,

 

Ai pensei vou organizar por pasta caso seja necessário excluir a pasta, vai embora em questao de segundos ou minutos, já pensou tudo isso misturado ia ser complicado sem falar a perda de tempo excluindo, e lá no banco a mesma coisa drop table

 

e resovolvido

 

Abraços

beleza WDuarte! Então você optou por um diretório para cada empresa/usuário... E serão muitos usuários?

Será que o desempenho com muitos diretórios dentro de um só não vai comprometer aí também? Se antes eram muitas imagens agora serão muitos diretórios, menos que a quantidade de imagens por diretório antes, mas considerando 500.000 imagens e que cada usuário coloque 100 (o que é muuuuito para um usuário só), serão CINCO MIL DIRETÓRIOS dentro UM só.... Na verdade esse número poderá ser bem maior.

 

Isso pode parecer chatice, tantas dúvidas para colcoar imagens em um site, mas depois eu não quero mexer mais... Manutenção numa coisa dessa vai ser muito massante.

 

Obrigado!

 

Olá

 

O projeto foi organizado com base em cada usuario/loja possa colocar no plano inicial até 10.000 produtos com 3 fotos por produto e ja existe empresa que o cadastramento dela já superou 1.000 produtos, e sobre o desempenho e a mesmo pois pesquisei e não vi problemas no desenvolvimento do código, o que manda muito é o servidor de hospedagem

 

Agora o meu site e de venda eletrônica, e não tem como só ganhar dinheiro sem pensar em manuntenção isto vai existir sempre para um melhor desempenho do sistema http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza... Mas projetar/otimizar o serviço é importante justamente para minimizar a manutanção corretiva, que eu desejo evitar ao máximo . Estabelecendo um bom padrão agora não vou me encomodar muito com isso depois.

 

Quantos diretórios (usuários/lojas) existem no seu sistema atualmente? Você sugere então que eu crie um diretório para cada usuário... Está satisfeito com sua escolha? Acho que vou seguir esse caminho também, só estou pesquisando um pouco mais e gostaria de saber mais esse detlhe aí...

 

Você tem todos diretórios de usuário dentro de um mesmo diretório? E quantos são? (aproximadamente se você não pode responder).

 

 

Muito obrigado pela atenção Duarte! Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

talvez não tenha nd a ver o q eu vou propor..

ou talvez até tenha..

 

e se você armazenar essas fotos em outro servidor (dedicado)

 

acredito que mesmo q seja 1 milhão de imagens, pra um único server dedicado.. a performance deve continuar boa..

talvez caiba fazer alguns diretório de separação..

 

o que acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza... Mas projetar/otimizar o serviço é importante justamente para minimizar a manutanção corretiva, que eu desejo evitar ao máximo . Estabelecendo um bom padrão agora não vou me encomodar muito com isso depois.

 

Quantos diretórios (usuários/lojas) existem no seu sistema atualmente? Você sugere então que eu crie um diretório para cada usuário... Está satisfeito com sua escolha? Acho que vou seguir esse caminho também, só estou pesquisando um pouco mais e gostaria de saber mais esse detlhe aí...

 

Você tem todos diretórios de usuário dentro de um mesmo diretório? E quantos são? (aproximadamente se você não pode responder).

 

 

Muito obrigado pela atenção Duarte! Abraço!

 

Olha você tem que analizar certinho para não te dar dor de cabeça depois.

 

no meu caso optei para as imagens um ditetório somente e dentro as pastas das imagens das empresas

 

ex.: pasta_das_images/loja01

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza... Mas projetar/otimizar o serviço é importante justamente para minimizar a manutanção corretiva, que eu desejo evitar ao máximo . Estabelecendo um bom padrão agora não vou me encomodar muito com isso depois.

 

Quantos diretórios (usuários/lojas) existem no seu sistema atualmente? Você sugere então que eu crie um diretório para cada usuário... Está satisfeito com sua escolha? Acho que vou seguir esse caminho também, só estou pesquisando um pouco mais e gostaria de saber mais esse detlhe aí...

 

Você tem todos diretórios de usuário dentro de um mesmo diretório? E quantos são? (aproximadamente se você não pode responder).

 

 

Muito obrigado pela atenção Duarte! Abraço!

 

Olha você tem que analizar certinho para não te dar dor de cabeça depois.

 

no meu caso optei para as imagens dos produtos um ditetório fixo e dentro as pastas das empresas

 

ex.: pasta_das_images/loja01/

pasta_das_images/loja02/

 

Como o site ele tem projeção para 1.000 a 5.000 lojas analizei como disse no tópico acima.

 

desculpe aqui é só (lojas) usuário não posta imagens

 

 

e aqui

 

Olha aqui no lado no meu perfil... Eu sou o usuário N°: 86.492

Se este fórum cria uma pasta para o perfil de cada usuário são 86.492 diretórios até a data que eu me registrei.

Não sei se estou errado, mas o fórum não cria diretorio para os avantar, os avantares esta nos servidores de cada membro, ele somente pega a url da imagem

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo...

 

Lucas, a questão de servidor dedicado eu não havia pensado, e sinceramente não sei como funciona ainda...Vou pesquisar sobre a sugestão, muito obrigado.

 

Mais uma vez obrigado Duarte, acho que agora tenho uma noção melhor de um caso real e baseado também neste tópico vou tomar uma decisão... Quanto a colocação sobre os avatares, era só um exemplo, ilustrando se no caso eles tomassem esta decisão quanto a armazernar as imagens aqui e e criando uma pasta para cada avatar, seriam muitos diretórios.

 

Valeu pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.