[firebase-br] RES: Preciso de uma opinião (foto no banco de

Elton da Motta Barbosa embarbosa em gmail.com
Sex Fev 5 18:15:43 -03 2010


>>Quando você consultar a imagem no banco, este trará a imagem para o disco para então devolver o arquivo para a aplicação. >>Alguns podem dizer que ficará em memória, mas temos que lembrar que memória acaba e quando tratamos de arquivos as >>porções de memória a serem utilizadas são maiores e inevitavelmente o arquivo vai para o disco.

Não sei se entendi bem. Explique me a diferença da afirmação acima
para a abaixo:

Quando você consultar a imagem NO SERVIDOR DE ARQUIVOS (mesmo que seja
local), este trará a imagem para o disco para então devolver o arquivo
para a aplicação. Alguns podem dizer que ficará em memória, mas temos
que lembrar que memória acaba e quando tratamos de arquivos as porções
de memória a serem utilizadas são maiores e inevitavelmente o arquivo
vai para o disco.

   Não vejo tanta diferença nos dois métodos, exceto que:

a) o FB não possui compactamento dos pacotes enviados pela rede (pelo
menos até onde eu sei, no entanto normalmente ninguém faz isso com
arquivos de imagens...)...
b) Um servidor de arquivos não tem controle de transações (mesmo sendo
ele a máquina local). Então não tente alterar a imagem do usuário em
dois clientes ao mesmo tempo... Dirty Read... (a menos que vc use
algum tipo de lock)
c) num servidor de arquivos (em rede ou VM) você terá que adicionar
permissões de escrita para cada cliente (acho que alguém já mencionou
isso...)

   Tenha o cuidado do seguinte, se você tiver um grid que busca os
dados e ele for uma query ou table que já carrega o BLOB com certeza
vc vai consumir muito mais recursos (locais e/ou na rede), mesmo que
só mostre um registro por vez. Isso não aconteceria no caso de vc
buscar o arquivo já que sempre leria apenas o arquivo a ser mostrado.
No entanto, uma vez lido a imagem de um servidor de arquivos, se
alterar de registro e depois voltar nele, o programa lerá a imagem
novamente. Mesmo assim, você poderá simular essa situação com o BD por
fazer um select com os dados necessários SEM a imagem, e num outro
query (digamos filho) buscar apenas a imagem do registro corrente.
Nesse caso a limitação do servidor de arquivos também se aplicam.

   Há limitações em ambos os casos. Não podemos definir a melhor
situação para você sem conhecer todos os pormenores do sistema, como
hits esperados, métodos de acesso, estrutura de Rede, clientes
esperados, outros bancos rodando no sistema, hardware do servidor e
dos clientes, etc...
  Também aconselho você procurar nesta lista. Tivemos uma boa
discussão sobre esse assunto, se não me falha a memória por volta do
segundo ou terceiro trimestro do ano passado.
  Abraços,




Mais detalhes sobre a lista de discussão lista