Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Armazenando a imagem no banco de dados diretamente ou como dados base64?


Eu afirmo que as imagens (arquivos) geralmente NÃO são armazenadas em um banco de dados codificado em base64. Em vez disso, eles são armazenados em seu formato binário bruto em uma coluna ou arquivo binário (blob).

Base64 é usado apenas como mecanismo de transporte, não para armazenamento. Por exemplo, você pode incorporar uma imagem codificada em base64 em um documento XML ou em uma mensagem de email.

Base64 também é compatível com stream. Você pode codificar e decodificar em tempo real (sem saber o tamanho total dos dados).

Embora a base64 seja adequada para transporte, não armazene suas imagens codificadas em base64 .

Base64 não fornece soma de verificação ou qualquer coisa de valor para armazenamento.

A codificação Base64 aumenta o requisito de armazenamento em 33% em relação a um formato binário bruto. Também aumenta a quantidade de dados que devem ser lidos do armazenamento persistente, que geralmente ainda é o maior gargalo na computação. Geralmente é mais rápido ler menos bytes e codificá-los rapidamente. Somente se o seu sistema estiver vinculado à CPU em vez de vinculado à E/S e você estiver produzindo regularmente a imagem em base64, considere armazenar em base64.

As imagens em linha (imagens codificadas em base64 incorporadas em HTML) são um gargalo em si - você está enviando 33% mais dados pela rede e fazendo isso em série (o navegador da Web precisa aguardar as imagens em linha antes de terminar o download da página HTML).

Se você ainda deseja armazenar imagens codificadas em base64, faça o que fizer, certifique-se de não armazenar dados codificados em base64 em uma coluna UTF8 e indexe-os.