| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 13:37:21
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 13:42:40
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 14:26:30
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 15:11:35
|
eduveks
GUJ Ranger
![[Avatar]](/images/avatar/bce9abf229ffd7e570818476ee5d7dde.png)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 15:22:31
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
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) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2007 16:09:26
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2007 02:25:03
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2007 10:00:43
|
eduveks
GUJ Ranger
![[Avatar]](/images/avatar/bce9abf229ffd7e570818476ee5d7dde.png)
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 |
|
|
 |
|
|