Jakie jest najlepsze miejsce do przechowywania plików binarnych związanych z danymi w bazie danych? Powinieneś:
- Przechowuj w bazie danych z obiektu blob
- Przechowuj w systemie plików z linkiem w bazie danych
- Przechowuj w systemie plików, ale zmień nazwę na skrót zawartości i zapisz skrót w bazie danych
- Coś, o czym nie myślałem
Zaletą (1) jest (między innymi) to, że zachowana jest atomowość transakcji. Koszt polega na tym, że możesz radykalnie zwiększyć wymagania dotyczące przestrzeni dyskowej (i związane z nią wymagania dotyczące przesyłania / tworzenia kopii zapasowych)
Celem (3) jest do pewnego stopnia zachowanie atomowości - jeśli możesz wymusić, że system plików, do którego piszesz, nie pozwala na zmianę lub usunięcie plików i zawsze ma poprawny skrót jako nazwę pliku. Pomysł polegałby na zapisaniu pliku w systemie plików przed zezwoleniem na wstawienie / aktualizację odnoszącą się do skrótu - jeśli transakcja zakończy się niepowodzeniem po zapisie systemu plików, ale przed DML bazy danych, to dobrze, ponieważ system plików „fałszuje” będący repozytorium wszystkich możliwe pliki i skróty - nie ma znaczenia, czy są tam jakieś pliki, które nie są wskazywane (i możesz je okresowo czyścić, jeśli jesteś ostrożny)
EDYTOWAĆ:
Wygląda na to, że niektóre RDBMS mają to na swój sposób - chciałbym wiedzieć, jak robią to inni - a zwłaszcza rozwiązanie dla postgres