Usar campo blob ou não?

Olá a todos, estou desenvolvendo uma aplicação onde o usuario vai fazer uploads de arquivos .java, .xml, e varias outras extensões para minha aplicação, a minha duvida é se devo salvar esses arquivos em um campo do tipo blob ( banco de dados mysql ), ou fazer algum outro esquema.

o usuario tb podera digitar muitas coisas em um campo texto de uma pagina html e esse texto digitado tem que ser guardado exatamente com a mesma tabulação que o usuario digitou.

só algumas ressalvas:

A aplicação sera acessada por muitas pessoas simultaneamente.
Estou usando tomcat 5.5.20, jsf, icefaces, spring e talvez hibernate.

Obrigado.

A resposta é “depende”.
Muita gente prefere usar arquivos e guardar no banco apenas o nome do arquivo; outros preferem guardar os arquivos no banco.
Depende de sua estratégia de backup, por exemplo, e se você deseja “expurgar” arquivos velhos de forma simples (deletando os registros no banco) ou de forma mais complicada (antes de deletar o registro, deletar o arquivo).
Outros bancos não são muito adequados para trabalhar com blobs; nesse caso é interessante perguntar a quem mexe bastante com MySQL se a implementação de blobs é adequada.

Então, alguem sabe se é adequado ou não usar campos blob no mysql??

Obrigado.

campo blog deve ser sempre evitado!

a DB passa a ocupar mais espaço em disco, assim as querys começam a demorar mais tempo por q tem mais bytes para percorrer.

sempre a melhor estratégia é nem colocar o nome do arquivo na DB e sim o arquivo ter o nome do ID, pode até ser do tipo GUID, para não ser sequencial e ficar mais escondido.

esta tabela vai ficar grande, muitos arquivos e talz, o ideal é ser apenas uma tabela de números, e vais ter um sistema super rápido com um ótimo desempenho.

fora q com os blogs os backups passam a se tornar uma tortura.

tenta ter algo do genero:

Table -> FILE
Cols -> GUID(guid), TYPE(int), USER(int)

O arquivo fica com o nome igual ao GUID referente a ele, no TYPE relaciona com uma tabela q diz o tipo q o arquivo é, se é JPG, JAVA, XML, etc… e no USER o ID do user q é dono do arquivo…

[quote=eduveks]…
a DB passa a ocupar mais espaço em disco, assim as querys começam a demorar mais tempo por q tem mais bytes para percorrer.

[/quote]
Os blobs não são armazenados diretamente no banco(MySQL, PgSQL, Oracle, DB2 entre outros), e sim em um arquivo/pasta separado na qual há uma referência na tabela para aquele arquivo. O problema na query em geral não é na resolução da lista, e sim no tamanho dos dados retornados via driver. Ao invés de ser retornado alguns kilobytes pela pesquisa, é retornado mais o arquivo, que em geral não tem só alguns kB. Outro causo seria o processamento de ter que retirar o arquivo requerido do arquivo do DB e transferí-lo para o driver.

Mas cada louco tem sua preferência. Ainda não gosto de colocar arquivos no banco, só seus caminhos.

Até!

[quote] Table -> FILE
Cols -> GUID(guid), TYPE(int), USER(int) [/quote]

Oque é esse guid?? procurei no google e no site do mysql e não encontrei nenhum tipo guid.

pode me explicar oque é, como funciona, ou um site, artigo, tutorial ou documento que explique?

obrigado.

Alguem explica oque é um type GUID???

artigos, links, documentação, tutoriais ou qq coisa já é util…

Obrigado.

maquiavelbona, obrigado pelo esclarecimento, nem sabia q era exatamente assim q funcionava, valew.

GUID ou UUID

http://en.wikipedia.org/wiki/Globally_Unique_Identifier

http://de.wikipedia.org/wiki/Universally_Unique_Identifier

Basicamente é uma string gerada pelo time atual em milesegundos, acrescentado de alguns números rândomicos, ai passa por MD5, e depois acaba virando uma string maravilhosa como esta:

550e8400-e29b-11d4-a716-446655440000

Este tipo de ID é único e “nunca” se repete, a maioria das base de dados suportam criar coluna para este tipo e geram isto automaticamente, com o autoincrement, eu ando meio por fora do MySql e não sei se ele suporta ou como se faz, mas deve suportar.

Caso contrario coloca uma coluna do tipo varchar e gera isto em Java pro insert.

Em Java:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html