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

Lagre billede i databasen direkte eller som base64-data?

Jeg hævder, at billeder (filer) normalt IKKE er gemt i en databasebase64-kodet. I stedet gemmes de i deres rå binære form i en binær (blob) kolonne eller fil.

Base64 bruges kun som transportmekanisme, ikke til opbevaring. For eksempel kan du indlejre et base64-kodet billede i et XML-dokument eller en e-mail-meddelelse.

Base64 er også stream venlig. Du kan indkode og afkode med det samme (uden at kende den samlede størrelse af dataene).

Selvom base64 er fint til transport, må ikke opbevare dine billeder base64-kodet .

Base64 giver ingen kontrolsum eller noget af nogen værdi til opbevaring.

Base64-kodning øger lagerkravet med 33 % i forhold til et råt binært format. Det øger også mængden af ​​data, der skal læses fra persistent lagring, som stadig generelt er den største flaskehals inden for computing. Det er generelt hurtigere at læse færre bytes og kode dem på farten. Kun hvis dit system er CPU bundet i stedet for IO bundet, og du regelmæssigt udsender billedet i base64, så overvej at gemme i base64.

Inline-billeder (base64-kodede billeder indlejret i HTML) er en flaskehals i sig selv - du sender 33 % flere data over ledningen og gør det serielt (webbrowseren skal vente på de inline-billeder, før den kan afslutte med at downloade siden HTML).

Hvis du stadig ønsker at gemme billeder base64-kodet, vær venlig, uanset hvad du gør, så sørg for at du ikke gemmer base64-kodede data i en UTF8-kolonne, og indekser dem derefter.



  1. Indsæt i SQLite Database android

  2. Sådan fungerer DENSE_RANK() i SQL Server

  3. MySQL SIGN() Funktion – Find ud af, om et tal er positivt eller negativt i MySQL

  4. Sådan udfører du grupperet rangering i MySQL