Zalety przechowywania obrazów/blobów w bazie danych
- Przechowywanie obrazów jest automatycznie częścią Twoich transakcji
- Nie ma potrzeby czyszczenia systemu plików i synchronizowania go z bazą danych
- Dostęp do obrazów jest kontrolowany za pomocą tych samych środków, co dostęp do pozostałych danych
- Tylko jedna kopia zapasowa, o którą należy dbać
- Baza danych zwykle lepiej nadaje się do przechowywania milionów (jeśli nie miliardów) rekordów. W systemie plików musisz znaleźć sprytną dystrybucję na kilka katalogów. Pojedynczy katalog nie będzie w stanie efektywnie obsłużyć milionów plików.
- W przypadku niektórych obciążeń przechowywanie obrazów w bazie danych może być faktycznie szybsze.
W przypadku programu SQL Server firma Microsoft faktycznie przetestowała to:
http://research.microsoft.com/apps/pubs/default.aspx?id=64525
Nie zdziwiłbym się, gdyby inne bazy danych zachowywały się w podobny sposób.
Wady:
- Sprawia, że baza danych, a tym samym kopie zapasowe, są znacznie większe (pomyśl o czasie potrzebnym na jej przywrócenie).
- Systemy plików są zwykle lepsze z przyrostowymi kopiami zapasowymi (chyba że masz RMAN Oracle)
- do obrazów nie mogą uzyskać dostępu inne aplikacje (np. serwer WWW, narzędzia do zmiany rozmiaru obrazu, serwer FTP)
- Obrazy nie mogą być rozpowszechniane w sieci dystrybucji treści w celu równoważenia obciążenia w aplikacji internetowej (aby odciążyć serwer aplikacji)
- powszechne przekonanie jest takie, że pobieranie z bazy danych będzie wolniejsze.
- w przypadku niektórych baz danych pobieranie blobów może w rzeczywistości zmniejszyć wydajność pamięci podręcznej bazy danych (nie dotyczy to Oracle, SQL Server i PostgreSQL. Nie znam jednak MySQL)