armazenar imagens. Novidades?

bom dia pessoal,

este assunto é bem recorrente: armazenar imagens e documentos no banco de dados. Sim ou não?

não pergunto prós e contras. Pergunto isso em base do lançamento da nova versão do mysql a poucos dias.

Houve melhorias nesse respeito? Sei que o SQL Server teve melhorias, e boas, nesse campo.

como estamos nós, com o mysql ? Continuamos com a resposta de que “fica muito pesado”?

meu interesse é obvio: preciso armazenar imagens e documentos, grandes quantidades, e manter a versão de cada documento.

se tiverem novidades atualizadas nesse respeito, agradeço.

abraços a todos.

marin

Marin,

Eu tenho um sistema de Provas online onde os professores carregam imagens nas questões e até agora não tivemos problemas de performance quanto a isto. O banco está com mais de 5Gb e o sistema continua funcionando bem. O banco é MySQL.

Kleyber,
Este banco de 5gb é que esta hospedado aqui?
Luizmarin,
Tenho duas observações a fazer.

  1. Campos tipo blob e text usados para imagens não fazem uso de tabelas temporárias em memória e sim em disco.
    Logo use um servidor que tenha um bom cache na controladora do disco. Cuidado com isto porque alguns pcs desktop chegam até melhor cache de controladora que alguns servidores para ter idéia.
  2. Faça toda noite uma rotina de otimização da database no mysql.

É mermão,

DB é coisa séria e pra quem sabe administrá-lo… eu sou um Zé-Ruela… só entendo alguma coisa de SQL… uso MySQL por default e não tenho problema algum (imagens, textos, geodésia, etc) e minha opção baseia-se:

a) Muita gente sabe trabalhar com ele;
b) Sua distribuição é gratuita;
c) Tem uma forte empresa na retarguarda (Oracle);
d) É relativamente simples de se administrar…

mas meu sonho de consumo é Oracle.

Jovito

compramos este servidor, com 4 gb de ram http://www.dell.com/us/business/p/poweredge-t110-2/pd?~ck=anav

tenho total acesso aos recursos e configurações dele, o que me facilita ouvir falar de configurações etc.

instalei a ultima versao do mysql liberada a poucos dias.

com exceção de duas maquinas que usam virtualizador (e nao acessam o tempo todo) os demais usuarios acessam o servidor apenas com atalhos, já que eles tem notebooks.

kleyber: o banco seguramente irá passar de 5gb.

“2) Faça toda noite uma rotina de otimização da database no mysql.”
tái outro bom assunto a ouvir.

nunca foi aconselhável guardar tanta coisa no banco de dados. Mas os ultimos anos a tecnologia e os bancos de dados tem evoluido muito… e vejo que voces guardam no banco de dados.

achei dessarrazoado ficar com a mesma ideia de anos atrás sem “atualizar meu próprio banco de dados” nesse assunto.

o projeto é para um escritorio de contabilidade onde vamos escanear todos os documentos, correspondencias etc.

eis minha preocupação.

agradeço se puder continuar a alimentar este topico.

abraços

Eu perguntei ao kleyber se era aqui a base porque aqui usamos a ultima versão do mysql.

Agora quanto a guardar documentos no mysql avise seu cliente que há uma lei para isto:
LEI Nº 12.682, DE 9 DE JULHO DE 2012.:
http://www.planalto.gov.br/ccivil_03/_Ato2011-2014/2012/Lei/L12682.htm
Segundo esta lei o governo mesmo digitalizando documentos deve guardar os originais e para as empresas tem um prazo decadêncial de guarda dos originais.
Se forem documentos fiscais é bom consultar os orgãos responsáveis pelo prazo decadêncial.
Os documentos também devem ser guardados com assinatura digital.
Dúvidas pode ser sanadas no faq do arquivo nacional:
http://www.documentoseletronicos.arquivonacional.gov.br/cgi/cgilua.exe/sys/start.htm?sid=10
Em especial no ítem 8, 9.

Note que tem muitas pessoas que acham que basta guardar no banco de dados para se livrar do monte de papelada no escritório destruindo os originais.
E não é bem assim.

Quanto ao cache da controladora verifique aqui de acordo com sua controladora:
http://content.dell.com/br/pt/corp/d/help-me-choose/hmc-raid-controller

Veja que este servidor pode vir com:
Internal Controllers:
PERC H200 (6Gb/s)
PERC S100 (software based)
PERC S300 (software based)
External HBAs (non-RAID):
6GB/s SAS HBA

No caso do PERC H200, PERC S100, PERC S300 eles não tem memória cache. Você irá sentir isto quando for exigido bastante leitura/escrita no seu disco.
Geralmente o bom vendedor te pergunta para que será utilizado o servidor. E na compra direta com a Dell há suporte na escolha do servidor correto.
Isto não quer dizer que terá problemas de lentidão na sua aplicação, mas que pode ocorrer.

Para um trabalho desta magnitude (nem tanto pelo volume, mas pela especificidade) eu aconselho o Oracle… existe uma literatura imensa no site da própria Oracle, totalmente gratuita, versando sobre as rotinas de tratamento de textos já embutidas no próprio engine do banco. Como nem tudo são flores, a partir de um determinado ponto o DB Oracle é pago.

Alexandre,

Sim, a base é a que temos ai na tua hospedagem.

Kleyber,
Obrigado pela resposta.

LuizMarin

Olha! O mysql dará conta do recado se o conjunto: harwdare excelente + mysql e database otimizados estiver ok.
Procure no google e verá mysql com bases maiores do que 500GB.

Note que até o pobre coitado do Firebird que ninguém da nada, mas que considero excelente ao que se destina, tem casos de bancos com 50GB, 100GB ou mais rodando muito bem. Isto até em setores críticos. E olha que o pobre coitado suporta bases maiores que 30TB.

No fim, não é o SGDB que você escolheu que vai dizer se o sistema ira ficar lento é sim isto: hardware excelente com SGBD+BD otimizado e bem gerenciado.

Espero ter ajudado.

PS: Otimize suas consultas e aplicações também. Um select * from tabelatal vai rápido para 100 registros, mas com 1 bilhão de registros até o oracle fica lento.

voces estão a me dar muito para pensar…

boas, muito boas informações.

obrigado alexandre por ser tão detalhista em alguns itens.

podem ter certeza de que vou ler tudo com muita atenção.

vou me posicionar por definitivo na segunda-feira pela manhã. Hoje e amanhã estarei ocupado com minha enxaqueca… tem isso também a ocupar-me as ideias…

se tiverem mais informações, estarei bem atento a cada palavra.

obrigado

olhando o gerenciador de perifericos do windows constatei o PERC S100, PERC S300 na maquina. Mas tambem não é nada que me impeça de mudar mais tarde a controladora. Pelo menos, acho que não tem problema…

Aqui para não ter problema de performance eu coloquei minha base Sqlserver em um raid5 e o SGBD em outro disco junto com o SO…

No entanto eu trato muito bem as selects e Joins… principalmente os Joins que mal construidos podem dar loop no banco…

pra ter ideia minha app roda mais rápido no servidor com 15 usuarios online que meu notebook que é mais potente que o servidor e 1 usuario online…

com relação a gravar imagens no banco e escolhi gravar em diretório e gravar só o nome no banco. assim minha app apenas pesquisa pelo ID ex: ./{idImagens}. e não elevo o tamanho do meu banco.

Mas há de se observar uma e outra… aqui tenho uns 15 engenheiros tirando fotos de obras todos os dias e postando no sistema…logo meu banco corre o risco de crescer 1GB por semana… então minha escolha foi com base no crescimento do banco…