GED gravar ou não arquivos no banco

Pessoal venho aqui pedir a ajuda de vcs.
Estou desenvolvendo um sistema WEB em JSF para Gerenciamento Eletronico de Documentos.
A minha duvida é a seguinte. Gravar os arquivos no banco de dados ou grava-los em diretorios da aplicação ???

Olá Alexafe,

Curiosamente eu estou desenvolvendo um sistema com um módulo de GED.
Tive a mesma dúvida que você, e optei em não salvar no banco. Pesquisas me mostraram que o armazenamento desses arquivos serializados no banco, derrubam e muito o desempenho do banco de dados. É claro, que devemos considerar a quantidade de arquivos que será armazenado.

No meu caso, impossível.

Abraços e sucesso.

Voçê chegou a pesquisar a partir de que quantidade de arquivos o desempenho do banco começa a ficar comprometido ??
Então vc optou por gravar tudo em pasta/diretórios do servidor ?? e como ficou no banco apenas o nome do arquivo em um atributo e uma parte do caminho fisico dele em outro atributo ?

Exatamente isso.

Eu faço upload do arquivo para um determinado diretório no servidor, recupero o caminho e salvo esse caminho no banco de dados.

Na verdade estou desenvolvendo isso agora, essa é a minha ideia e sugestão de outros amigos.

Vamos ver se funfa :slight_smile:

Cara, leitura de disco acaba sendo mais rápido do que leitura de DB. É menos sobrecarga para o DB tb.

Mas você terá que ter uma rotina de backup a mais, apenas para os arquivos.

O SQLServer 2008 tem uma função para tratar arquivos de modo muito maneiro, ele salva os arquivos em disco mas toma conta desses arquivos.

Ao fazer um backup do DB os arquivos irão juntos. [=

Nisso você pode acessar o arquivo de dentro do DB, com uma transação ACID, e quando necessário ler diretamente do disco. ^^

o que vc está usando no seu projeto ?

[quote=alexafe]o que vc está usando no seu projeto ?[/quote]Estava. Acabei. \o/

JSF + EJB+ JPA + Postgres.

Salvava as imgs no disco mesmo e o path no db.

Pessoal, cheguei na parte de upload dos arquivos mas não estou conseguindo fazer de jeito nenhum , estou tentando usar o fileUpload do primeFaces

@Component
@ManagedBean(name = "entidadeBeanView")
@ViewScoped
public class EntidadeBeanView implements ActionViewPadrao {

	private String nome;
	private Entidade entidade = new Entidade();
	private List<Entidade> entidades = new ArrayList<Entidade>();
	private UploadedFile file;

	@Resource
	private EntidadeController entidadeController;
	@Resource
	private PessoaController pessoaController;

	public UploadedFile getFile() {
		return file;
	}

	public void setFile(UploadedFile file) {
		this.file = file;



@Override
	public String save() throws Exception {
		limparLista();
		if (getFile() != null) {
			getEntidade().setBrasao(getFile().getContents());
			entidade.setMimeType(getFile().getContentType());
			entidade.setNomeArquivo(getFile().getFileName());
		}
		entidade = getEntidadeController().merge(getEntidade());
		entidades.add(entidade);
		getEntidade().getPessoa().setEntidade(getEntidade());
		getPessoaController().merge(getEntidade().getPessoa());
		entidade = new Entidade();
		statusOperation();
		return Constante.PAGE_ENTIDADE;
	}


	}[/code]

o XHTML 

[code]<ui:composition template="/templates/templatePrincipal.xhtml">
	<ui:define name="corpo">
		<sec:ifAnyGranted roles="ROLE_ADMINISTRADOR,ROLE_USUARIO">
			<h:form enctype="multipart/form-data" id="formaUploadBrasa">
				<p:panel header="Upload Brasão Entidade" >	
					<h:panelGrid columns="3" id="gridEntidadeBrasao">				
						 <h:outputLabel for="brasao" value="Brasão * : " id="labelBrasao" />
						 <p:fileUpload value="#{entidadeBeanView.file}" 
						 mode="simple" id="brasao" />
						
						<p:commandButton  value="enviar" ajax="false" immediate="true"/> 
				     </h:panelGrid>
				</p:panel>	
			</h:form>
			<h:form id="formEntidade">

				  <p:panel header="Cadastros de Entidade" >	
					<h:panelGrid columns="3" id="gridEntidade">

						<h:outputLabel for="id" value="Código : " id="labelId" />
						<p:inputText id="id" styleClass="estiloIdCastro"
							value="#{entidadeBeanView.entidade.id}"
							disabled="true" />
						<h:outputLabel/>	
                		
                		<h:outputLabel for="pessoa" value="Pessoa : " id="labelPessoa" />
						<p:inputText id="pessoa" styleClass="estyleInputName" 
							value="#{entidadeBeanView.entidade.pessoa.nome}"
							disabled="true" />
						<p:commandButton update=":formPessoa:gridPessoa"
							oncomplete="dialogPessoa.show()"
							 title="Pesquisar Pessoa" 
							 value="Pesquisar">
						</p:commandButton>
										
					</h:panelGrid>
					</p:panel>


				<div class="espacoBranco" />
				
				<p:commandButton value="Novo" title="Novo Registro"
						action="#{entidadeBeanView.novo}" ajax="true" 
						update="formEntidade,:msg,:formListEntidade"
						immediate="true" />
				<p:commandButton value="Salvar" title="Salvar"
						action="#{entidadeBeanView.save}" ajax="true"
						update="formEntidade,:msg,:formListEntidade"
						immediate="false" />		
										
				<p:commandButton value="Pesquisar" title="Pesquisar"
				 action="#{entidadeBeanView.redirecionarFindEntidade}" ajax="false" immediate="true" />	
		
			</h:form>
			</sec:ifAnyGranted>	
	</ui:define>
</ui:composition>

Se vc conseguiu resolver esse problema, poste aqui como que resolveu, estou usando o seu código para resolver um problema parecido. Grato.