sql >> Databáze >  >> RDS >> PostgreSQL

Ukládání obrázků v PostgreSQL

Aktualizace na rok 2012, kdy vidíme, že velikosti obrázků a počet obrázků rostou a rostou ve všech aplikacích...

Potřebujeme nějaký rozdíl mezi „původním obrázkem“ a „zpracovaným obrázkem“, jako je miniatura.

Jak říká Jcobyho odpověď, existují dvě možnosti, pak doporučuji:

  • použijte blob (Binary Large OBject):pro úložiště originálních obrázků u vašeho stolu. Viz Ivanovu odpověď (žádný problém se zálohováním objektů blob!), další dodávané moduly PostgreSQL, návody atd.

  • použijte samostatnou databázi s DBlink:pro úložiště originálních obrázků, v jiné (sjednocené/specializované) databázi. V tomto případě preferuji bytea , ale blob je téměř stejný. Oddělení databáze je nejlepším způsobem pro „sjednocenou webovou službu s obrázky“.

  • použijte bytea (BYTE Array):pro ukládání miniatur obrázků do mezipaměti. Uložte malé obrázky do mezipaměti, abyste je mohli rychle odeslat do webového prohlížeče (abyste se vyhnuli problémům s vykreslováním) a omezili zpracování na serveru. Uložte do mezipaměti také nezbytná metadata, jako je šířka a výška. Ukládání do mezipaměti databáze je nejjednodušší způsob, ale zkontrolujte své potřeby a konfigurace serveru (např. moduly Apache):ukládejte miniatury do souborového systému může být lepší, porovnejte výkon. Pamatujte, že se jedná o (jednotnou) webovou službu, kterou lze uložit do samostatné databáze (bez zálohování), která obsluhuje mnoho tabulek. Viz také manuál k binárním datovým typům PostgreSQL, testy s bytea sloupcem atd.

POZNÁMKA 1:Dnes je použití „duálních řešení“ (databáze+souborový systém) zastaralé (!). Použití „pouze databáze“ místo duální má mnoho výhod. PostgreSQL má srovnatelný výkon a dobré nástroje pro export/import/input/output.

POZNÁMKA 2:Pamatujte, že PostgreSQL má pouze bytea , nemají výchozí BLOB Oracle :"Standard SQL definuje (...) BLOB. Vstupní formát se liší od formátu bytea, ale poskytované funkce a operátory jsou většinou stejné",Manuál.

UPRAVIT 2014 :Původní text výše jsem dnes nezměnil (moje odpověď byla 22. dubna '12, nyní se 14 hlasy), Otevírám odpověď pro vaše změny (viz „Režim Wiki“, můžete upravovat!), pro korektury a aktualizace .
Otázka je stabilní (odpověď @Ivanse '08 s 19 hlasy), pomozte prosím vylepšit tento text.



  1. Optimalizace Microsoft Access pomocí SQL Server IndyPass – 5/21/19

  2. Oprava chyby 1064 (42000) při použití operátora MINUS v MariaDB

  3. Nelze se připojit k místnímu serveru MySQL přes soket '/var/lib/mysql/mysql.sock' (2)

  4. Rozdíl implicitní konverze datového toku CAST vs ssis