JSON zakłada utf8, dlatego jest niekompatybilny z obrazami, chyba że są one w jakiś sposób zakodowane.
Base64 jest prawie dokładnie 8/6 razy bardziej obszerny niż binarny (BLOB). Można by argumentować, że jest łatwo dostępny. 3000 bytes
staje się około 4000 bytes
.
Każdy powinien być w stanie akceptować dowolne 8-bitowe kody, ale nie wszyscy to robią. Base-64 może być najprostszym i ogólnie najlepszym kompromisem, ponieważ nie trzeba mieć do czynienia z 8-bitowymi danymi.
Ponieważ są „małe”, przechowywałbym je w tabeli, a nie w pliku. Przechowałbym je jednak w osobnej tabeli i JOIN
przez odpowiedni id
kiedy ich potrzebujesz. Dzięki temu zapytania, które nie potrzebują obrazu, działają szybciej, ponieważ nie przekraczają bloków BLOB.
Z technicznego punktu widzenia, TEXT CHARACTER SET ascii COLLATE ascii_bin
zrobi, ale BLOB
wyjaśnia, że w kolumnie tak naprawdę nie ma żadnego użytecznego tekstu.