Aż do PostgreSQL dotyczy, wpisz text
nie wchodzi w rachubę. Jest wolniejszy, zajmuje więcej miejsca i jest bardziej podatny na błędy niż bytea
w tym celu.
Istnieją zasadniczo 3 podejścia:
-
Użyj typu
bytea
(w zasadzie odpowiednik pg typu blob SQL). -
Użyj „dużych obiektów ".
-
Przechowuj obiekty blob jako pliki w systemie plików i przechowuj tylko nazwę pliku w bazie danych.
Każdy ma swoje wady i zalety.
1. jest dość prosty w obsłudze, ale zajmuje najwięcej miejsca na dysku. Wymagane jest pewne dekodowanie i kodowanie, co sprawia, że jest to również powolne. Kopie zapasowe szybko rosną!
2. jest nieco niezręczna w obsłudze, ale masz własną infrastrukturę do manipulowania blobami - jeśli tego potrzebujesz. I możesz łatwiej tworzyć oddzielne kopie zapasowe.
3. jest zdecydowanie najszybszym sposobem i zajmuje najmniej miejsca na dysku. Ale nie zapewnia integralności referencyjnej, którą uzyskujesz, gdy przechowujesz w bazie danych.
Mam kilka takich implementacji dla plików graficznych:przechowuję małą miniaturę w polu bajtów dla integralności referencyjnej i szybkiego odniesienia. Zapisz oryginalny obraz jako plik w systemie plików. Oczywiście musisz zastanowić się, kiedy i jak usunąć nieaktualne pliki, jak wykonać kopię zapasową plików zewnętrznych i tak dalej.