sql >> Databasteknik >  >> RDS >> Mysql

Lagra bild i databasen direkt eller som base64-data?

Jag hävdar att bilder (filer) vanligtvis INTE lagras i en databas base64-kodad. Istället lagras de i sin råa binära form i en binär (blob) kolumn eller fil.

Base64 används endast som transportmekanism, inte för lagring. Du kan till exempel bädda in en base64-kodad bild i ett XML-dokument eller ett e-postmeddelande.

Base64 är också strömvänlig. Du kan koda och avkoda i farten (utan att veta den totala storleken på datan).

Även om base64 är bra för transport, lagra inte dina bilder base64-kodade .

Base64 tillhandahåller ingen kontrollsumma eller något av något värde för lagring.

Base64-kodning ökar lagringskravet med 33 % jämfört med ett rått binärt format. Det ökar också mängden data som måste läsas från beständig lagring, vilket fortfarande generellt sett är den största flaskhalsen inom datoranvändning. Det är i allmänhet snabbare att läsa färre byte och koda dem i farten. Bara om ditt system är CPU-bundet istället för IO-bundet, och du regelbundet matar ut bilden i base64, överväg att lagra i base64.

Inline-bilder (base64-kodade bilder inbäddade i HTML) är själva en flaskhals - du skickar 33 % mer data över tråden och gör det i serie (webbläsaren måste vänta på de inbäddade bilderna innan den kan slutföra nedladdningen av sidan HTML).

Om du fortfarande vill lagra bilder base64-kodade, snälla, vad du än gör, se till att du inte lagrar base64-kodad data i en UTF8-kolumn och indexera den sedan.



  1. Återställer raderad "root"-användare och lösenord för MySQL

  2. Infoga en bild i postgresql-databasen

  3. Använda trådar för att göra databasförfrågningar

  4. Installera Laravel på Ubuntu med stöd för Apache, MariaDB och PHP