Voor zover PostgreSQL betreft, typt u text
is niet aan de orde. Het is langzamer, neemt meer ruimte in beslag en is foutgevoeliger dan bytea
voor het doel.
Er zijn in principe 3 benaderingen:
-
Gebruik type
bytea
(in feite het pg-equivalent van het SQL-blobtype). -
Gebruik "grote objecten ".
-
Sla blobs op als bestanden in het bestandssysteem en sla alleen de bestandsnaam op in de database.
Elk heeft zijn eigen voor- en nadelen.
1. is vrij eenvoudig te hanteren, maar heeft de meeste schijfruimte nodig. Enige decodering en codering is vereist, waardoor het ook traag is. Back-ups groeien snel in omvang!
2. is enigszins onhandig in het hanteren, maar je hebt je eigen infrastructuur om de blobs te manipuleren - als je dat nodig zou hebben. En u kunt gemakkelijker afzonderlijke back-ups maken.
3. is verreweg de snelste manier en gebruikt de minste schijfruimte. Maar het biedt niet de referentiële integriteit die je krijgt als je het in de database opslaat.
Ik heb een aantal van dergelijke implementaties voor afbeeldingsbestanden:sla een kleine miniatuur op in een bytea-veld voor referentiële integriteit en snelle referentie. Bewaar de originele afbeelding als bestand in het bestandssysteem. Natuurlijk moet je even nadenken over wanneer en hoe je verouderde bestanden verwijdert, hoe je een back-up maakt van de externe bestanden en dergelijke.