Olá pessoal, tenho que desenvolver uma pequena solução GED, pesquisei, mesmo a maioria das pessoas recomendando por os arquivos no disco e apenas o caminho no bd, resolvi por tudo no banco, com isso garanto mais integridade e segurança aos arquivos, ´pretendo por apenas imagens no bd, talvez pdf, mais a maioria será imagens, bom, tava pensando em usar Mysql, mais daí surgiu uma duvida, nesse caso, com a base cheia de imagens e dados, pesada, não seria melhor usar o postgres já que ele se comporta melhor com volume maior de dados? Bom espero a ajuda de todos, estou meio perdido, desde já agradeço a todos, abraços!
Unconfigured Ad Widget
Collapse
Anúncio
Collapse
No announcement yet.
Mysql ou postgres
Collapse
X
-
Eu não usaria um banco de dados, é uma camada extra de complexidade desnecessária.
O volume de dados que você vai trabalhar ainda é infimo pra essas soluções, a diferença de performance entre eles é totalmente irrelevante.
Quanto a integridade, você pode fazer algo bem razoavel com o próprio filesystem, basta fazer as checagens de erro adequadas.Lembrando que uma corrupção no FS implica em uma corrupção do DB (que guarda seus arquivos nesse) mas não a reciproca.Ainda nesses termos, o PostgreSQL é bem melhor que o mysql, sendo ACID-compliant e tendo outras vantagens.
Segurança aqui é só uma questão de modelagem.Nos dois casos se o cara tiver acesso ao FS ele já tem acesso aos dados independente das restrições do DB (como permissões de usuário).Faz o teste, move os arquivos de extensão myd, myi e frm da pasta data/"nomedb" do mysql pra outra instalação.Vai ter que criptografar os dados e gerenciar as chaves nos dois casos.
Se fosse pra usar um banco de dados, seria o sqlite, é o que melhor se adequa a esse caso.
A integridade, a performance e o uso de espaço são meio conflitantes, você como desenvolvedor tem que decidir o que englobar na sua solução.
Por exemplo, salvar os arquivos comprimidos diminui o espaço utilizado mais adiciona um overhead de descompressão do mesmo jeito que salvar backups e fazer checagens de integridade conflita com os outros 2 aspectos.
Um sketch poderia ser:
-Escreva os dados criptografados em um arquivo e faça checagens para que tenha certeza de que ocorreu corretamente.
-Se a chave for gerada pelo programa, envie para o usuário por um meio de comunicação seguro.
-Faça e exiba o checksum desse arquivo com alguma função qualquer (sugiro uma de hashing como SHA-1 ou MD5).
-Comprima com outros arquivos em um backup.
-Na abertura de um programa ou arquivo, cheque o checksum e se não bater reescreva com o que tem em backup.
Programar e desenvolver é diferente. hehe
Espero que tenha ficado claro.
- Top
X
Comment