JSON antar utf8, och är därför inkompatibel med bilder om de inte är kodade på något sätt.
Base64 är nästan exakt 8/6 gånger så skrymmande som binär (BLOB). Man skulle kunna hävda att det är lätt överkomligt. 3000 bytes
blir cirka 4000 bytes
.
Alla bör kunna acceptera godtyckliga 8-bitars koder, men inte alla gör det. Base-64 kan vara den enklaste och överlag bästa kompromissen för att inte behöva hantera 8-bitars data.
Eftersom dessa är "små" skulle jag lagra dem i en tabell, inte en fil. Jag skulle dock lagra dem i en separat tabell och JOIN
med ett lämpligt id
när du behöver dem. Detta gör att frågor som inte behöver bilden körs snabbare eftersom de inte kliver över BLOB:erna.
Tekniskt sett, TEXT CHARACTER SET ascii COLLATE ascii_bin
skulle göra det, men BLOB
gör det tydligare att det egentligen inte finns någon användbar text i kolumnen.