sql >> Database >  >> RDS >> Mysql

Moet ik het veldtype MySQL-blob gebruiken?

Niet inherent, maar als je grote BLOB's hebt die je tabellen en geheugencache verstoppen, zal dat zeker resulteren in een prestatiehit.

Ja, dit is een gebruikelijke aanpak. Normaal gesproken zou je zoiets doen als mappen die zijn vernoemd naar elke tabel waaraan ze zijn gekoppeld, met bestandsnamen die alleen zijn gebaseerd op de primaire sleutel (idealiter een geheel getal; zeker nooit iets dat door de gebruiker is ingediend).

Is dit een beter idee? Het hangt er van af. Er zijn voordelen voor de eenvoud van implementatie om slechts één gegevensopslag te hebben en zich geen zorgen te hoeven maken over het geven van schrijftoegang aan de webgebruiker. Ook als er meerdere exemplaren van de app actief zijn (bijv. actief-actieve taakverdeling), moet u de opslag synchroniseren, wat veel gemakkelijker is met een database dan met een bestandssysteem.

Als je het bestandssysteem gebruikt in plaats van een blob, is de vraag dan, krijg je de webserver zover om het te bedienen door een alias naar de map te wijzen?

  • + is supersnel
  • + goed in cache
  • - extra serverconfiguratie:virtuele map; heeft de juiste bestandsextensie nodig om het gewenste Content-Type te retourneren
  • - extra serverconfiguratie:moet Content-Disposition: attachment toevoegen /X-Content-Type-Options headers om te voorkomen dat IE naar HTML snuift als onderdeel van anti-XSS-maatregelen

of serveer je het bestand handmatig door een script aan de serverzijde te laten uitspugen, zoals je zou moeten dienen vanuit een MySQL-blob?

  • - is mogelijk traag
  • - heeft nogal wat handmatige If-Modified-Since en ETag-verwerking nodig om correct te cachen
  • + kan de eigen toegangscontrolemethoden van de applicatie gebruiken
  • + makkelijk om correcte Content-Type en Content-Disposition headers toe te voegen vanuit het serveerscript

Dit is een afweging waarvoor geen wereldwijd geaccepteerd antwoord bestaat.



  1. MySQL - Hoe zoek ik naar exacte woordovereenkomst met LIKE?

  2. SQL Server-sortering wijzigen in hoofdlettergevoelig van hoofdlettergevoelig?

  3. hoe PostgreSQL jsonb op te slaan met SpringBoot + JPA?

  4. Hoe CSV-bestandsgegevens importeren in een PostgreSQL-tabel?