JSON presuppone utf8, quindi è incompatibile con le immagini a meno che non siano codificate in qualche modo.
Base64 è quasi esattamente 8/6 volte più ingombrante del binario (BLOB). Si potrebbe obiettare che è facilmente accessibile. 3000 bytes
diventa circa 4000 bytes
.
Tutti dovrebbero essere in grado di accettare codici a 8 bit arbitrari, ma non tutti lo fanno. Base-64 potrebbe essere il compromesso più semplice e nel complesso migliore per non dover gestire dati a 8 bit.
Poiché questi sono "piccoli", li memorizzerei in una tabella, non in un file. Tuttavia, li memorizzerei in una tabella separata e JOIN
tramite un id
appropriato quando ne hai bisogno. Ciò consente alle query che non richiedono l'immagine di essere eseguite più velocemente perché non scavalcano i BLOB.
Tecnicamente, TEXT CHARACTER SET ascii COLLATE ascii_bin
lo farebbe, ma BLOB
rende più chiaro che non c'è alcun testo utilizzabile nella colonna.