ARQUIVAR XML (DANFE) EM BASE DE DADOS

MFLAVIO 14/10/2022 10:59:23
#500580
Pessoal
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
KERPLUNK 14/10/2022 12:58:45
#500583
Resposta escolhida
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
KERPLUNK 14/10/2022 13:00:19
#500584
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.
LUIS2014 14/10/2022 13:10:18
#500586
salvamos no banco o xml e o pdf em pastas, nosso banco é SQL Server e o tipo do campo é xml mesmo.
MFLAVIO 14/10/2022 13:32:40
#500588
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

MFLAVIO 14/10/2022 13:34:03
#500589
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
KERPLUNK 14/10/2022 14:42:00
#500590
Putz...
Bom, no firebird pelo que to lendo, o mais adequado seria BLOB SUB_TYPE TEXT
NETMANIA 14/10/2022 15:02:59
#500591
O seu caso é um pouco parecido de onde eu trabalho. No caso usamos o campo do tipo text para armazenar os dados de prescrições que são salvos em JSON. Teve uma corretora de seguros que trabalhei que tinha um sistema de multicálculo onde eles armazenam direto (arquivos) o JSON/XML no local com o código do cálculo, quando era necessário verificar o dados, pegava o código da cotação/proposta e ia atrás do arquivo.

O que não lhe indico é salvar imagem em banco que o mesmo vai crescer super rápido.
KERPLUNK 14/10/2022 15:42:35
#500595
Dos sistemas que ainda presto algum suporte, não gravo XML nenhum. Como tudo é OOP, guardo tudo em suas tabelas.
NILSONTRES 14/10/2022 17:16:34
#500596
Utilizo varchar no mysql, para armazenar os xmls de SAT FISCAL.
gravo em base64
SINCLAIR 15/10/2022 08:36:49
#500597
Prezado,

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).
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas