Transferencia de arquivo (GED)

Galera, quero uma ajuda, talvez não tenha conseguido achar no fórum, mas vamos lá.
É o seguinte, to com uma exigência do patrão, ele quer um GED (Gerenciador eletrônico de documentos) desenvolvido em desktop onde eu consiga carregar os arquivos para o servidor, e depois uma tela em web para consulta e download dos mesmo, a parte da web não é problema, a bronca ta na parte desktop, vamos as duvidas.

1ª - Onde salvar os arquivos, em um banco MySQL ou em um diretório guardando no banco apenas o caminho, vale lembrar que inicialmente a carga de documentos vai ser muito grande a e quantidade de arquivos deve ultrapassar rapidamente 100 gigas.
2ª - Se a melhor opção for gravar em um diretório, quero uma luz, pois tenho um servidor web com ubuntu, já desenvolvi um teste gravando em diretório, funciona local na minha maquina com windows gravo onde quiser, mas quando coloco o .war no servidor e seto o caminho (Ex.: String caminho = “/home/administrador/”) ele não grava mas também não da erro.

Bem são estas as duvidas, se alguém puder ajudar com códigos ou links para ajudar vou agradecer muito.

Abraço a todos

Cara eu gravaria os bytes do arquivo no banco de dados, e no momemto do download salvaria esses byte no disco, claro que tera que ter uma coluna para guardar o nome do arquivo, acho que assim funciona sem problemas…

[quote=jaimbiriba]Galera, quero uma ajuda, talvez não tenha conseguido achar no fórum, mas vamos lá.
É o seguinte, to com uma exigência do patrão, ele quer um GED (Gerenciador eletrônico de documentos) desenvolvido em desktop onde eu consiga carregar os arquivos para o servidor, e depois uma tela em web para consulta e download dos mesmo, a parte da web não é problema, a bronca ta na parte desktop, vamos as duvidas.

1ª - Onde salvar os arquivos, em um banco MySQL ou em um diretório guardando no banco apenas o caminho, vale lembrar que inicialmente a carga de documentos vai ser muito grande a e quantidade de arquivos deve ultrapassar rapidamente 100 gigas.
2ª - Se a melhor opção for gravar em um diretório, quero uma luz, pois tenho um servidor web com ubuntu, já desenvolvi um teste gravando em diretório, funciona local na minha maquina com windows gravo onde quiser, mas quando coloco o .war no servidor e seto o caminho (Ex.: String caminho = “/home/administrador/”) ele não grava mas também não da erro.

Bem são estas as duvidas, se alguém puder ajudar com códigos ou links para ajudar vou agradecer muito.

Abraço a todos[/quote]

Opa, jaimbiriba, beleza?
Há prós e contras em cada uma das soluções.

  1. Gravar os bytes da imagem diretamente no banco de dados
    Prós:você não trabalha com arquivamento em servidores, o que não requer um mapeamento (lê-se pastas e subpastas) para guardar o arquivo digital. Usando o modelo pasta-subpastas, a medida em que a quantidade de arquivos aumenta, fica meio confuso de analisar sem um software para auxiliá-lo nisso. Nesta situação, o arquivo (no formato de array de bytes) está “linkado” com o registro ao qual ele pertence, diminuindo essa necessidade. Também podem ser criados índices para agilizar a pesquisa desses arquivos.

Contras: você deve implementar uma segurança muito boa no teu banco de dados, deve trabalhar com RAID (para replicar os dados para um servidor backup), dentre outros, visto que o banco de dados pode sofrer algum ataque e ocorra a perda de informações. Além do mais, com um grande número de acessos ao banco de dados, a velocidade de leitura das informações ficaria comprometida.

  1. Guardar caminho do diretório
    Prós: como disse acima, você não precisa implementar uma segurança ferrenha no banco de dados como deveria no caso de guardar as informações em bytes nas tuplas da tabela.
    Contras: se você resolve mudar a nomemclatura de sua estrutura de pastas-subpastas, como ficaria para organizar isso no banco de dados depois? Usando essa técnica, você deveria dispensar um servidor só para armazenar os arquivos, RAID para backup, esse tipo de coisa.

Vale a pena dar uma olhada em qual soluciona melhor o seu problema. EU, particularmente, prefiro criar um banco de dados para cada um dos clientes (todos com uma estrutura padrão, claro) e armazenar os arquivos em bytes em seus respectivos bancos de dados. Assim, não teria uma sobrecarga de acessos em um único banco de dados. Por exemplo: se eu tenho o João e o José como clientes, eu teria o banco de dados “GEDAdministrador” para guardar o cliente e o nome do seu banco de dados. Teria também um banco de dados chamado “GEDJoao” e outro “GEDJose”, cada qual com os arquivos dos respectivos clientes. Eu desenvolvi meu TCC na época da faculdade sobre GED e usei essa perspectiva.

Espero ter ajudado,
fique com Deus! :smiley: