usar campo blob ou não?  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

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.


Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

[]'s
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

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.
[WWW]
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

thingol wrote: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.
[MSN]
eduveks
GUJ Ranger
[Avatar]

Membro desde: 19/04/2005 07:45:40
Mensagens: 831
Localização: Lisboa - Portugal
Offline

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...

http://www.cajuscript.org
http://eduveks.blogspot.com
[Email] [WWW]
maquiavelbona
JWizard
[Avatar]

Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline

eduveks wrote:....
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.
....

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é!

----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)

"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781)
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

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


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.

Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

[]'s
[MSN]
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

Alguem explica oque é um type GUID???

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

Obrigado.

Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

[]'s
[MSN]
eduveks
GUJ Ranger
[Avatar]

Membro desde: 19/04/2005 07:45:40
Mensagens: 831
Localização: Lisboa - Portugal
Offline

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


http://www.cajuscript.org
http://eduveks.blogspot.com
[Email] [WWW]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team