Mysql
 sql >> Database >  >> RDS >> Mysql

Memorizzazione dell'immagine nel database direttamente o come dati base64?

Sostengo che le immagini (file) NON sono solitamente archiviate in un database codificato in base64. Al contrario, vengono archiviati nella loro forma binaria grezza in una colonna binaria (BLOB) o in un file.

Base64 viene utilizzato solo come meccanismo di trasporto, non per la conservazione. Ad esempio, puoi incorporare un'immagine con codifica base64 in un documento XML o in un messaggio di posta elettronica.

Base64 è anche compatibile con lo streaming. Puoi codificare e decodificare al volo (senza conoscere la dimensione totale dei dati).

Anche se base64 va bene per il trasporto, non archiviare le tue immagini con codifica base64 .

Base64 non fornisce checksum o altro di alcun valore per l'archiviazione.

La codifica Base64 aumenta il requisito di archiviazione del 33% rispetto a un formato binario non elaborato. Aumenta anche la quantità di dati che devono essere letti dall'archiviazione persistente, che è ancora generalmente il collo di bottiglia più grande nell'informatica. In genere è più veloce leggere meno byte e codificarli al volo. Solo se il tuo sistema è vincolato alla CPU anziché all'IO e stai emettendo regolarmente l'immagine in base64, considera l'archiviazione in base64.

Le immagini inline (immagini con codifica base64 incorporate in HTML) sono esse stesse un collo di bottiglia:stai inviando il 33% in più di dati via cavo e lo fai in serie (il browser Web deve attendere le immagini inline prima di poter completare il download della pagina HTML).

Se desideri ancora memorizzare immagini codificate in base64, per favore, qualunque cosa tu faccia, assicurati di non memorizzare dati codificati in base64 in una colonna UTF8, quindi indicizzarli.