sql >> Database >  >> RDS >> Mysql

Afbeelding direct in database opslaan of als base64-gegevens?

Ik beweer dat afbeeldingen (bestanden) meestal NIET worden opgeslagen in een database met base64-codering. In plaats daarvan worden ze in hun ruwe binaire vorm opgeslagen in een binaire (blob) kolom of bestand.

Base64 wordt alleen gebruikt als transportmechanisme, niet voor opslag. U kunt bijvoorbeeld een met base64 gecodeerde afbeelding insluiten in een XML-document of een e-mailbericht.

Base64 is ook streamvriendelijk. U kunt on-the-fly coderen en decoderen (zonder de totale omvang van de gegevens te kennen).

Hoewel base64 prima is voor transport, sla je afbeeldingen niet base64-gecodeerd op .

Base64 biedt geen controlesom of iets van enige waarde voor opslag.

Base64-codering verhoogt de opslagvereiste met 33% ten opzichte van een onbewerkt binair formaat. Het vergroot ook de hoeveelheid gegevens die moet worden gelezen van persistente opslag, wat over het algemeen nog steeds het grootste knelpunt is bij informatica. Het is over het algemeen sneller om minder bytes te lezen en ze on-the-fly te coderen. Alleen als uw systeem CPU-gebonden is in plaats van IO-gebonden, en u de afbeelding regelmatig uitvoert in base64, overweeg dan om op te slaan in base64.

Inline-afbeeldingen (base64-gecodeerde afbeeldingen ingebed in HTML) zijn zelf een knelpunt - u verzendt 33% meer gegevens over de draad en doet dit serieel (de webbrowser moet op de inline-afbeeldingen wachten voordat het downloaden van de pagina kan voltooien HTML).

Als u nog steeds afbeeldingen met base64-codering wilt opslaan, zorg er dan voor dat u, wat u ook doet, geen base64-gecodeerde gegevens opslaat in een UTF8-kolom en deze vervolgens indexeert.



  1. Hoe om te gaan met een tabelkolom die is genoemd met een gereserveerd SQL-zoekwoord?

  2. Hoe kleine letters naar hoofdletters te converteren in SQL Server - UPPER()

  3. Wat is SQL?

  4. Een externe sleutel maken in SQL Server (T-SQL-voorbeelden)