PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przechowywanie obrazów w PostgreSQL

Aktualizacja do 2012 roku, kiedy widzimy, że rozmiary obrazów i liczba obrazów rosną i rosną we wszystkich aplikacjach...

Potrzebujemy pewnego rozróżnienia między „oryginalnym obrazem” a „przetworzonym obrazem”, na przykład miniaturą.

Jak mówi odpowiedź Jcoby'ego, są dwie opcje, więc polecam:

  • użyj blobu (Binary Large OBject):do przechowywania oryginalnych obrazów, przy twoim stole. Zobacz odpowiedź Ivana (nie ma problemu z tworzeniem kopii zapasowych obiektów blob!), dodatkowe dostarczone moduły PostgreSQL, instrukcje itp.

  • użyj oddzielnej bazy danych z DBlink:dla oryginalnego magazynu obrazów, w innej (ujednoliconej/specjalistycznej) bazie danych. W takim przypadku wolę bytea , ale kropla jest blisko tego samego. Oddzielenie bazy danych to najlepszy sposób na „ujednoliconą usługę sieciową obrazów”.

  • użyj bajta (tablica bajtów):do buforowania obrazów miniatur. Buforuj małe obrazy, aby szybko wysłać je do przeglądarki internetowej (aby uniknąć problemów z renderowaniem) i zmniejszyć przetwarzanie serwera. Buforuj również niezbędne metadane, takie jak szerokość i wysokość. Buforowanie bazy danych jest najprostszym sposobem, ale sprawdź swoje potrzeby i konfiguracje serwera (np. moduły Apache):przechowuj miniatury w systemie plików może być lepsze, porównaj wydajność. Pamiętaj, że jest to (zunifikowana) usługa internetowa, wtedy może być przechowywana w osobnej bazie danych (bez kopii zapasowych), obsługująca wiele tabel. Zobacz także instrukcję obsługi binarnych typów danych PostgreSQL, testy z kolumną bajtową itp.

UWAGA1:dziś użycie „podwójnych rozwiązań” (baza danych+system plików) jest przestarzałe (!). Korzystanie z „tylko bazy danych” zamiast podwójnego ma wiele zalet. PostgreSQL ma porównywalną wydajność i dobre narzędzia do eksportu/importu/wejścia/wyjścia.

UWAGA2:pamiętaj, że PostgreSQL ma tylko bytea , nie mają domyślnego BLOB Oracle :"Standard SQL definiuje (...) BLOB. Format wejściowy różni się od bajtów, ale dostarczone funkcje i operatory są w większości takie same", Podręcznik.

EDYTUJ 2014 :nie zmieniłem dziś oryginalnego tekstu powyżej (moja odpowiedź brzmiała 22 kwietnia 2012 r., teraz z 14 głosami), Otwieram odpowiedź na Twoje zmiany (patrz „Tryb Wiki”, możesz edytować!), do korekty i do aktualizacji .
Pytanie jest stabilne (@odpowiedź Ivansa z 2008 r. z 19 głosami), pomóż ulepszyć ten tekst.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy wyzwalacz istnieje w PostgreSQL?

  2. Jak usunąć bazę danych PostgreSQL, jeśli są z nią aktywne połączenia?

  3. Niestandardowe ZAMÓWIENIE WEDŁUG Wyjaśnienia

  4. nie można uruchomić prostego wstawiania PostgreSQL

  5. Korzystanie z funkcji korelacji PostgreSQL