PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Armazenando strings binárias longas (dados brutos)


Até o PostgreSQL está preocupado, digite text está fora de questão. É mais lento, usa mais espaço e é mais propenso a erros do que bytea para o propósito.

Existem basicamente 3 abordagens:

  1. Use o tipo bytea (basicamente o equivalente pg do tipo blob SQL).

  2. Use "objetos grandes ".

  3. Armazenar blobs como arquivos no sistema de arquivos e armazene apenas o nome do arquivo no banco de dados.

Cada um tem suas próprias vantagens e desvantagens.

1. é bastante simples de manusear, mas precisa de mais espaço em disco. É necessária alguma decodificação e codificação, o que o torna também lento. Os backups crescem rapidamente em tamanho!

2. é um pouco estranho de manusear, mas você tem sua própria infraestrutura para manipular os blobs - se precisar disso. E você pode fazer backups separados com mais facilidade.

3. é de longe a maneira mais rápida e usa o menor espaço em disco. Mas não fornece a integridade referencial que você obtém quando armazena dentro do banco de dados.

Eu tenho várias implementações como essa para arquivos de imagem:armazene uma pequena miniatura em um campo bytea para integridade referencial e referência rápida. Armazene a imagem original como arquivo no sistema de arquivos. Claro, você precisa pensar um pouco sobre quando e como excluir arquivos desatualizados, como fazer backup dos arquivos externos e tal.