Så långt som PostgreSQL anger du text
är uteslutet. Den är långsammare, tar mer utrymme och är mer felbenägen än bytea
för ändamålet.
Det finns i princip tre tillvägagångssätt:
-
Använd typ
bytea
(i princip pg-motsvarigheten till SQL-blob-typen). -
Använd "stora objekt ".
-
Lagra blobbar som filer i filsystemet och lagra endast filnamnet i databasen.
Var och en har sina egna fördelar och nackdelar.
1. är ganska enkel att hantera men kräver mest diskutrymme. Viss avkodning och kodning krävs, vilket gör det också långsamt. Säkerhetskopieringar växer snabbt i storlek!
2. är lite besvärlig i hanteringen, men du har din egen infrastruktur för att manipulera klumparna - om du skulle behöva det. Och du kan enklare göra separata säkerhetskopior.
3. är det överlägset snabbaste sättet och använder minst diskutrymme. Men det ger inte den referensintegritet som du får när du lagrar inuti databasen.
Jag har ett antal sådana implementeringar för bildfiler:lagra en liten miniatyrbild i ett bytea-fält för referensintegritet och snabb referens. Lagra originalbilden som fil i filsystemet. Naturligtvis måste du tänka på när och hur man tar bort föråldrade filer, hur man säkerhetskopierar de externa filerna och så.