sql >> Databasteknik >  >> RDS >> PostgreSQL

Lagring av långa binära (rådata) strängar

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:

  1. Använd typ bytea (i princip pg-motsvarigheten till SQL-blob-typen).

  2. Använd "stora objekt ".

  3. 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å.



  1. Lägg till månader till ett datum i SQLite

  2. SSMS 2016-fel vid import av Azure SQL v12 bacpac:huvudnycklar utan lösenord stöds inte

  3. 4 sätt att formatera ett tal utan decimaler i Oracle

  4. Gruppering i intervall på 5 minuter inom ett tidsintervall