Um pouco atrasado no tópico mas vamos lá...

Em 24 de outubro de 2016 20:15, Flavio Henrique Araque Gurgel <
[email protected]> escreveu:

>
>
> Em seg, 24 de out de 2016 às 13:50, Luiz Henrique <
> [email protected]> escreveu:
>
>> Pessoal,
>>
>> Temos uma aplicação jboss que recebemos como "herança", ela armazena
>> diversos arquivos de imagens (jpeg,bmp,etc). Essa tabela com os binários
>> representa mais que 90% do tamanho total do banco, hoje com 210GB.
>>
>> Aí vem a pergunta. O que os participantes do grupo acham dessa prática ?
>> O que é mais indicado, gravar arquivos em file system ou no próprio banco ?
>> Sendo file system vocês tem sugestão de ferramentas ?
>>
>
> Não vejo boa prática nem em A nem em B.
> Colocar arquivos em banco de dados tem suas vantagens, como por exemplo,
> ter um backup unificado. Você também pode lidar com replicação dos dados e
> dos arquivos simultaneamente. Sem contar que tudo se torna transacional,
> portanto, você pode criar, modificar ou remover um arquivo ao mesmo tempo
> que outra transação e o banco cuida do isolamento e atomicidade da coisa
> toda.
> Ter um sistema de arquivos separado pode ser interessante quando você tem
> muitos acessos aos arquivos, isso é mais fácil de escalar que o banco de
> dados. Por outro lado, ao contrário do controle transacional que falei
> acima, é muuuuuuuito comum arquivos ficarem perdidos no sistema de arquivos
> sendo que o "caminho" já foi removido do banco de dados.
>
> Enfim, cada caso é um caso, acho que simplesmente o "tamanho do banco" e
> "uma grande tabela" não é fator de decisão ou exclusão.
>

Como bem colocado pelo Gurgel o simples fato do "tamanho do banco" não é um
bom indicativo para qualquer mudança e cada caso é um caso. Todavia, como
regra geral, sistemas de arquivos lidam melhores com arquivos do que
SGBD's. Toda vez que você adiciona uma nova camada de abstração, neste caso
o banco de dados, você não apenas pode perder em performance mas adiciona
um nível maior de complexidade que pode causar problemas indesejados, como
por exemplo corrupção dos arquivos armazenados no banco.

Com relação as vantagens do SGBD sobre o FS eu não vejo tanto ganho assim.
Por exemplo, não é preciso perder as vantagens transacionais ao colocar
toda a operação, incluindo as chamadas ao FS, na mesma transação. Pode-se
colocar as alterações no FS pro final da transação e em último caso pode-se
utilizar ferramentas de versionamento para garantir que o estado do sistema
de arquivos esteja consistente e em um caso onde o FS retorne um erro basta
executar um rollback. Com relação ao backup não vejo como vantagem tão
grande uma vez que de qualquer forma devemos ter uma boa estratégia para
ambos, SGBD e FS. Por outro lado concentrar os arquivos no BD irá aumenta o
tempo de backup e principalmente o tempo de recuperação pois fica mais
complexo a aplicação de paralelismo.

Outro ganho que se pode ter com arquivos no FS é a utilização de servidores
para mídias e arquivos estáticas. Muito mais eficientes e pode-se utilizar
CDN para distribuir a carga através da rede o que descentraliza o tráfego e
melhora performance.

Mas como foi falado acima pelo Gurgel, se não existe um problema real não
vejo porque mudar pelo simples fato de as tabelas estarem crescendo.

Att,

Charly Batista
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a