Melhor forma de Armazenamento de documentos variados

Boa noite pessoal.

Qual seria a melhor forma de Armazenar documentos variados ?

Meu sistema é multiempresa, com um único banco de dados mysql.
O sistema é para Escritórios, necessitam subir muitos documentos.

Hoje possuo no sistema estes dados gravados no banco com tipos de dados nome do Arquivo.

Os arquivos que permito o upload

MInha tabela no banco está assim:

Em um sistema q eu fiz mais antigo, utilizei o mesmo processo, mas vi que o cliente esta com mais de 30GB de espaço tomado por estes dados e me assustei.
Gastaria de:
1- Possuir uma forma de monitorar o espaço destas tabelas (ou das tabelas ) por empresa;
2- Limitar um espaço X no sistema para aquela empresa na tabela x (Ex: 20Gb) o sistema não deixasse inserir mais arquivos e só liberasse depois que o cliente comprasse mais espaço para utilização.

Desta forma, ao meu ver(posso estar completamente errada, pois estou perdida com tanta coisa q busquei na net), eu iria controlar o espaço do meu sistema que poderá possuir N clientes e assim eu aumantaria meu espaço quando necessário.

Não sei se fui muito clara.
Mas conversando com um colega ele me disse que era igual a um estoque, mas não consegui desenvolver a ideia.

Minha versão do SC é 9.7 alguma coisa rs.

Se tiver algum colega que tem este tipo de controle ou algo melhor que possa me ajudar eu já agradeço.

Muito obrigada

PS: Sei q vo levar umas borduadas aqui por ter perguntado isso tudo aí, mas paciência com quem não desenvolve muito. A cada problema aprendo mais com vcs.

1 Curtida
  1. Crie um campo em uma tabela para colocar o espaço contratado (espaco) e outro que diga se pode ou não fazer upload em função do espaço contratado (upload_liberado)
  2. Rode uma query no cron ou agendador de tarefas onde possa ver o tamanho da tabela e comparar com o campo do espaço contratado (espaco). Se for menor tudo ok e o campo (upload_liberado) permanece com Y. Se for maior ele deve mudar o campo (upload_liberado) para N.
    Rode uma vez por dia ou de acordo com sua preferência, mas de forma que não pese no banco.
  3. No form que faz upload de arquivos consulte o campo (upload_liberado) . Se for Y o sujeito pode fazer upload. Se for N exibe mensagem que deve contratar espaço.
  4. Existem muitos sql para verificar tamanho de tabelas.
    Vou deixar um que verifica o tamanho de todas as tabelas do banco. Use sua criatividade e modifique para o que deseja.
    SELECT table_schema “Nome da database”, table_name “Nome da tabela”, data_length / 1024 / 1024 “Tamanho da tabela em MB”,
    index_length / 1024 / 1024 “Tamanho do indice em MB”,
    (data_length / 1024 / 1024)+(index_length / 1024 / 1024)“Tamanho total”,
    engine FROM information_schema.tables WHERE table_schema = ‘nome do seu banco’ and table_name
    in (SELECT table_name FROM information_schema.tables WHERE table_schema = ‘nome do seu banco’) ORDER BY data_length desc;

Observação: Isto foi um pensamento rápido. Modifique do jeito que quiser. A nomenclatura dos campos devem ser colocadas de acordo com seu gosto.
Estou considerando os arquivos guardados no banco.
Para arquivo guardados em disco o pensamento é o mesmo.
Mas tem que procurar no google um script para contar o espaço do diretório de arquivos.

1 Curtida

Nos meus costumo também limitar .jpg, .png e pdf a no máximo no campo de UPLOAD a 400kb.

E ensino o cliente otimizar esses arquivos antes de fazer o upload.

Se não o cliente tira uma foto no iPhone dele de última geração e não tá nem ai vai e
carrega uma foto de 8 MEGAS.

Ai não vai ter espaço na hospedagem que vai dar conta.

2 Curtidas

Oi Alexandre.
Qual seria a melhor forma de Armazenar documentos variados?
Gostaria de que cada cliente tivesse seu google drive para armazenamento de docuementos. Isso seria possível?
Vi no video da Marcia do SC, mas não foca claro se posso utilizar para vários clientes com uma credencial.

Uma outra dúvida:
Meu banco é unico e sistema multiempresa.
Como eu faço para descobrir o espaço em uso de uma empresa no meu banco de dados?

Obrigada pelas informações.
Vou tentar fazer e testar o controle e retorno.

Olá Jailton.
No meu sistema terá muitos arquivos de imagem e principalmente PDFs.
Vc tem toda razão, bom mesmo é limitar.
Já ensinei a um cliente como otimizar, mas insistiu em colocar em um pdf todos os documentos do seu vliente e o PDF ficou Gigantesco.
Não aconselho esta prática, mas…

Obrigada pelo seu retorno.

Dê uma lida neste tópico. [RESOLVIDO]Imagem no banco de dados-performace
armazenar imagens. Novidades?
Imagens dentro ou fora do banco de dados
E coloque os documentos, imagens numa tabela filha
Sobre o google driver nunca usei então não sei dizer.
Nesta situação de um único banco para várias empresas não imagino como.
Mas no Sc tem um campo com o tamanho dos arquivo.
Já pensou em contar este campo com where no cliente?

PS: sobre as imagens orfãs que comentei no link parece que a netmake corrigiu isto.