Como guardo dados binários no MySQL ?
mysql
database
binary-data
data-storage
Geoff Dalgas
fonte
fonte
Respostas:
A resposta do phpguy está correta, mas acho que há muita confusão nos detalhes adicionais.
A resposta básica está em um
BLOB
domínio de tipo / atributo de dados. BLOB é a abreviação de Objeto Grande Binário e esse tipo de dados da coluna é específico para manipular dados binários.Veja a página de manual relevante para MySQL .
fonte
Para uma tabela como esta:
Aqui está um exemplo do PHP:
fonte
Eu recomendo fortemente contra o armazenamento de dados binários em um banco de dados relacional. Os bancos de dados relacionais são projetados para trabalhar com dados de tamanho fixo; é aí que está a força do desempenho: lembra-se do antigo artigo de Joel sobre por que os bancos de dados são tão rápidos? porque é preciso exatamente 1 incremento de ponteiro para passar de um registro para outro. Se você adicionar dados BLOB de tamanho indefinido e muito variável, você estragará o desempenho.
Em vez disso, armazene arquivos no sistema de arquivos e armazene nomes de arquivos no seu banco de dados.
fonte
Embora você não tenha dito o que está armazenando e possa ter um ótimo motivo para fazê-lo, geralmente a resposta é 'como uma referência ao sistema de arquivos' e os dados reais estão no sistema de arquivos em algum lugar.
http://www.onlamp.com/pub/a/onlamp/2002/07/11/MySQLtips.html
fonte
Depende dos dados que você deseja armazenar. O exemplo acima usa o
LONGBLOB
tipo de dados, mas você deve estar ciente de que existem outros formatos de dados binários:TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY
Cada um tem seus casos de uso. Se for um comprimento conhecido (curto) (por exemplo, dados compactados), muitas vezes
BINARY
ouVARBINARY
funcionará. Eles têm o benefício adicional de poder indexar neles.fonte
Embora não seja necessário, você pode tentar
base64
codificar e descodificar dados. Isso significa que o banco de dados terá apenas caracteres ascii. Isso levará um pouco mais de espaço e tempo, mas qualquer problema relacionado aos dados binários será eliminado.fonte
Se o campo - não recomendado - BLOB existir, você poderá salvar os dados desta maneira:
Idéia tirada daqui .
fonte
Surge também a questão de como colocar os dados no BLOB. Você pode colocar os dados em uma instrução INSERT, como mostra o exemplo do PHP (embora você deva usar mysql_real_escape_string em vez de addlashes). Se o arquivo existir no servidor de banco de dados, você também poderá usar o LOAD_FILE do MySQL.
fonte
Quando preciso armazenar dados binários, sempre uso o
VARBINARY
formato, conforme apresentadobyd0nut
.Você pode encontrar documentação no site MySQL no tópico documentado 12.4.2 Os tipos BINARY e VARBINARY
Se você está perguntando o que são vantagens, consulte a pergunta why-varbinary-invés de varchar
fonte