PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Съхранение на изображения в PostgreSQL

Актуализиране до 2012 г., когато виждаме, че размерите на изображенията и броя на изображенията нарастват и растат във всички приложения...

Имаме нужда от известно разграничение между „оригинално изображение“ и „обработено изображение“, като миниатюра.

Както се казва в отговора на Jcoby, има две опции, тогава препоръчвам:

  • използвайте blob (Binary Large OBject):за магазин за оригинални изображения, на вашата маса. Вижте отговора на Иван (няма проблем с архивирането на блобове!), допълнителните модули, предоставени от PostgreSQL, инструкции и т.н.

  • използвайте отделна база данни с DBlink:за оригинално съхранение на изображения, в друга (унифицирана/специализирана) база данни. В този случай предпочитам bytea , но blob е почти същото. Разделянето на база данни е най-добрият начин за "унифицирана уеб услуга за изображения".

  • използвайте bytea (BYTE Array):за кеширане на миниатюрни изображения. Кеширайте малките изображения, за да ги изпратите бързо до уеб браузъра (за да избегнете проблеми с изобразяването) и да намалите обработката на сървъра. Кеширайте и основни метаданни, като ширина и височина. Кеширането на база данни е най-лесният начин, но проверете вашите нужди и конфигурации на сървъра (напр. Apache модули):съхранявайте миниатюри във файловата система може да е по-добре, сравнете производителността. Не забравяйте, че това е (унифицирана) уеб услуга, след което може да се съхранява в отделна база данни (без резервни копия), обслужваща много таблици. Вижте също ръководство за PostgreSQL двоични типове данни, тестове с колона bytea и др.

ЗАБЕЛЕЖКА1:днес използването на "двойни решения" (база данни+файлова система) е отхвърлено (!). Има много предимства от използването на "само база данни" вместо двойна. PostgreSQL има сравнима производителност и добри инструменти за експорт/импорт/вход/изход.

ЗАБЕЛЕЖКА2:не забравяйте, че PostgreSQL има само bytea , нямат BLOB на Oracle по подразбиране :"Стандартът SQL дефинира (...) BLOB. Входният формат е различен от bytea, но предоставените функции и оператори са предимно едни и същи", Ръководство.

РЕДАКТИРАНЕ 2014 :Не съм променил оригиналния текст по-горе днес (отговорът ми беше 22 април '12, сега с 14 гласа), Отварям отговора за вашите промени (вижте „Wiki режим“, можете да редактирате!), за корекция и за актуализации .
Въпросът е стабилен (отговорът на @Ivans '08 с 19 гласа), моля, помогнете за подобряването на този текст.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlalchemy.exc.NoSuchModuleError:Не мога да заредя плъгин:sqlalchemy.dialects:postgres

  2. Как да получите текущото време в PostgreSQL

  3. Как мога да генерирам уникален низ за запис в таблица в Postgres?

  4. Колона не съществува?

  5. Еквивалент на PostgreSQL за TOP n WITH TIES:LIMIT с връзки?