[firebase-br] RES: Preciso de uma opinião (foto no banco de
Ivan Brasil Fuzzer
ivan em cyber.inf.br
Sex Fev 5 21:10:54 -03 2010
Se estivermos falando de um servidor de arquivos externo ao servidor de banco, a abordagem muda e cairemos no mesmo problema.
Quanto a duas ou mais pessoas alterar uma imagem ao mesmo tempo, você mantém a transação aberta enquanto edita um arquivo que está no banco?
Volto a me corrigir dizendo que quando disse "jamais" estava querendo dizer raramente, a pressa foi minha inimiga.
----- Mensagem original -----
De: "Elton da Motta Barbosa" <embarbosa em gmail.com>
Para: lista em firebase.com.br
Enviadas: Sexta-feira, 5 de Fevereiro de 2010 18:15:43 (GMT-0300) Auto-Detected
Assunto: [firebase-br] RES: Preciso de uma opinião (foto no banco de
>>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,
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
:: Ivan Brasil Fuzzer ::
Tecnocyber Automação de Negócios Ltda
Setor de Infraestrutura
Av. Salgado Filho, 85 - Apto 120
Erechim - RS - 99700-000
Fone: (54) 3522-3313
Mais detalhes sobre a lista de discussão lista