ARQUIVAR XML (DANFE) EM BASE DE DADOS
o meu amado Chefe de departamento
quer que o sistema armazene os XML de nfe no banco de dados
hoje o sistema deixa os xmls em uma pastinha e quando precisa copia de la
o Chefinho quer que seja armazenado na Base de dados
estou pesquisando para armazenar em um campo do tipo blob.
alguém já fez isso antes?
existe alguma forma de compactar o XML para ocupar o mínimo possÃÂvel de espaço?
e blob e o mais indicado mesmo?
o varchar tem alguns limites por isso estou pensando em blob
É que campos BLOB tem todo um lance especÃÂfico de compactação e indexação, o que pode inchar seu banco de dados significativamente.
Se for sql server, use o tipo VARCHAR(MAX), ele armazena até 2Gb, o que deve ser mais que o suficiente para um XML de Danfe, mesmo assinado.
Se for MySQL, use o tipo LONGTEXT, até 4Gb(se não me engano)
Se for Oracle, use CLOB
Citação::
BLOB é geralmente para dados binários. XML é sempre texto. Vai depender do banco de dados, mas certamente existe um que vai suprir sua necessidade.
É que campos BLOB tem todo um lance especÃÂfico de compactação e indexação, o que pode inchar seu banco de dados significativamente.
Se for sql server, use o tipo VARCHAR(MAX), ele armazena até 2Gb, o que deve ser mais que o suficiente para um XML de Danfe, mesmo assinado.
Se for MySQL, use o tipo LONGTEXT, até 4Gb(se não me engano)
Se for Oracle, use CLOB
base de dados firebird 2.5
Citação::
Mas assim, avisa pro teu chefe aàque é uma péssima ideia fazer isso e deixar como exclusividade. O mais sensato, seria ter as duas coisas(uma pasta e o banco). Usar banco de dados como repositório de arquivos é quase sempre uma péssima ideia, de vários ângulos.
pois e meu medo e justamente se o banco ficar gigante
já uso firebird justamente pela questão de tamanho
e desempenho
Bom, no firebird pelo que to lendo, o mais adequado seria BLOB SUB_TYPE TEXT
O que não lhe indico é salvar imagem em banco que o mesmo vai crescer super rápido.
gravo em base64
Uso o PostGreSQL, gravo os XML no banco de dados em campo tipo TEXT.
Faço o mesmo para todas as FOTOGRAFIAS de produtos, clientes/fornecedores e funcionários (que são identificados na portaria, pela fotografia como primeira validação).
No caso de fotografias o campo é do tipo OID.
A vantagem é que o backup e o journaling/espelhamento fazem backup de tudo, sem precisar copiar pastas.
PDF não guardo, porque pode ser gerado a partir do campo TEXT com o conteúdo XML (mera reimpressão)
Atualmente as empresas que desejarem ter seus dados armazenados, precisam de equipamentos melhores que são bem mais baratos em relação ao que eram antigamente.
O custo por MB armazenado caiu enormemente e o custo por processamento/milessegundo idem.
Minha opinião é que não vale mais a pena ter arquivos em pastas, o local é dentro do banco de dados mesmo.
Como exemplo uso um cliente meu que "perdeu" o computador, precisou formatar o servidor e ficou em desespero porque os XML precisam ser armazenados por 5 anos e ele perdeu tudo.
Me questionou qual a "mágica" poderia fazer da noite para o dia e baixar tudo novamente do site da NFe. Falei que não precisava, porque estava tudo dentro do banco de dados, cujo espelhamento/backup é automático (definido dentro do próprio PostGreSQL).