Dois Banco de Dados na mesma aplicação.
Caros.
Estou aperfeiçoando um sistema de atendimento web que eu mesmo projetei. A tendência é que o mesmo tenha centenas de acesso ao longo do dia através de seus atendentes onde os usuários poderão trafegar informações em texto, em "PDF" e envio de imagens dentre outros arquivos...
Acho que imagens guardadas em Banco de Dados pode ser um problema futuro pois o sistema usará a base de dados para aperfeiçoamentos e consultas de atendentes e mesmo de clientes armazenando durante muito tempo estas informações.
As opções que tenho são:
- Ou gravo as imagens no Banco de Dados (MySQL);
- Ou gravo as imagens em alguma pasta do servidor;
- Ou gravo somente as imagens em um Banco de Dados SEPARADO.
A primeira opção seria ideal mas corro o risco do tempo degradar a performance o sistema com o "inchado" de imagens no BD.
A segunda particularmente não me agrada neste sentido pois as imagens sendo gravadas em uma pasta externa estariam expostas a exclusões acidentais e exposição de informações sensíveis.
A terceira me parece a mais adequada pois não degradaria o desempenho do BD e as imagens estariam, de alguma forma, mais protegidas.
....mas eu nunca vi alguém usar tal técnica.
Pergunto:
Alguém aqui neste fórum já usou esta forma de armazenamento com o Hibernate????
Grato pela atenção de todos...
Estou aperfeiçoando um sistema de atendimento web que eu mesmo projetei. A tendência é que o mesmo tenha centenas de acesso ao longo do dia através de seus atendentes onde os usuários poderão trafegar informações em texto, em "PDF" e envio de imagens dentre outros arquivos...
Acho que imagens guardadas em Banco de Dados pode ser um problema futuro pois o sistema usará a base de dados para aperfeiçoamentos e consultas de atendentes e mesmo de clientes armazenando durante muito tempo estas informações.
As opções que tenho são:
- Ou gravo as imagens no Banco de Dados (MySQL);
- Ou gravo as imagens em alguma pasta do servidor;
- Ou gravo somente as imagens em um Banco de Dados SEPARADO.
A primeira opção seria ideal mas corro o risco do tempo degradar a performance o sistema com o "inchado" de imagens no BD.
A segunda particularmente não me agrada neste sentido pois as imagens sendo gravadas em uma pasta externa estariam expostas a exclusões acidentais e exposição de informações sensíveis.
A terceira me parece a mais adequada pois não degradaria o desempenho do BD e as imagens estariam, de alguma forma, mais protegidas.
....mas eu nunca vi alguém usar tal técnica.
Pergunto:
Alguém aqui neste fórum já usou esta forma de armazenamento com o Hibernate????
Grato pela atenção de todos...
Sergio Peixoto
Curtidas 1
Respostas
Chromusmaster
20/05/2019
As opções que tenho são:
- Ou gravo as imagens no Banco de Dados (MySQL);
- Ou gravo as imagens em alguma pasta do servidor;
- Ou gravo somente as imagens em um Banco de Dados SEPARADO.
.
Sugestão, você pode colocar para gravar as imagens no mesmo banco das aplicações porém você delimita o tamanho máximo de cada imagem antes de salvar. Assim o "inchamento da base" demora e não perde desempenho tão rápido. Usar imagens em um banco separado pode trazer dores de cabeça. Gravando em Varbinary não ocupa tanto espaço.
Ex.: Supondo que alguém insira um registro a maior nessa base externa e ela utilize "auto increment" a contagem passa a estar errada e o sistema já não grava mais imagens. Ou se o banco externo ficar em outro servidor, caso a rede tenha quedas as imagens também fica fora do ar.
Particularmente não recomendo separar as imagens em outro banco, nesse caso use imagens em pastas e grave no banco a referencia delas.
GOSTEI 0
Sergio Peixoto
20/05/2019
As opções que tenho são:
- Ou gravo as imagens no Banco de Dados (MySQL);
- Ou gravo as imagens em alguma pasta do servidor;
- Ou gravo somente as imagens em um Banco de Dados SEPARADO.
.
Sugestão, você pode colocar para gravar as imagens no mesmo banco das aplicações porém você delimita o tamanho máximo de cada imagem antes de salvar. Assim o "inchamento da base" demora e não perde desempenho tão rápido. Usar imagens em um banco separado pode trazer dores de cabeça. Gravando em Varbinary não ocupa tanto espaço.
Ex.: Supondo que alguém insira um registro a maior nessa base externa e ela utilize "auto increment" a contagem passa a estar errada e o sistema já não grava mais imagens. Ou se o banco externo ficar em outro servidor, caso a rede tenha quedas as imagens também fica fora do ar.
Particularmente não recomendo separar as imagens em outro banco, nesse caso use imagens em pastas e grave no banco a referencia delas.
Grato Chromusmaster pelas dicas......A limitação no tamanho das imagem é uma regra que gostaria muito de adotar porém na maioria das vezes as imagens virão de um ctrlC/ctrlV de uma página da internet ou uma imagem de um manual. Ou seja. Não tenho como mensurar o tamanho das imagens visto que as mesmas são informações capturadas de procedimentos de orientação ao usuário e neste caso quanto mais detalhado melhor.
Quando falei "- Ou gravo somente as imagens em um Banco de Dados SEPARADO.", quiz dizer que seria no mesmo SGBD porém em um Schema diferente.
Mas mesmo assim poderia ocorrer os efeitos que você mencionou acima pois mesmo estando no mesmo SGBD e em Schema diferente poderia realmente acontecer da entrada de um novo registro ser comitado mas sua imagem, no outro schema, não o ser.
Este impacto também está sendo minimizado através de uma rotina que testa a consistência da informação e a passa ao usuário para que o mesmo possa, naquele momento, fazer o upload da imagem caso a mesma não seja gravada.
E quanto a "gravar o caminho" trata-se da minha segunda opção que não me agrada em nada deixar as imagens em uma pasta por motivos de segurança interna.
De qualquer forma agradeço sua opinião e informações disponibilizada.
GOSTEI 0