데이터베이스의 데이터와 관련된 이진 파일을 저장하는 가장 좋은 장소는 무엇입니까? 당신이해야 :
- 얼룩과 함께 데이터베이스에 저장
- 데이터베이스에 링크가있는 파일 시스템에 저장
- 파일 시스템에 저장하지만 컨텐츠의 해시로 이름을 바꾸고 데이터베이스에 해시를 저장하십시오.
- 내가 생각하지 못한 것
(1)의 장점은 거래의 원 자성이 보존된다는 것입니다. 비용은 스토리지 (및 관련 스트리밍 / 백업) 요구 사항을 크게 증가시킬 수 있다는 것입니다.
(3)의 목표는 원 자성을 어느 정도 보존하는 것입니다. 작성하려는 파일 시스템이 파일을 변경하거나 삭제할 수 없으며 항상 올바른 해시를 파일 이름으로 사용하도록 강제 할 수 있다면. 해시를 참조하는 삽입 / 업데이트를 허용하기 전에 파일 시스템에 파일을 작성하는 것이 좋습니다. 파일 시스템이 작성된 후 데이터베이스 DML 전에이 트랜잭션이 실패하면 파일 시스템이 모두의 저장소이므로 '가짜'이므로 문제가 없습니다. 가능한 파일 및 해시-지정되지 않은 일부 파일이 있는지 여부는 중요하지 않습니다 (주의를 기울이면 주기적으로 정리할 수 있습니다)
편집하다:
일부 RDBMS는 개별 방식으로이를 다루는 것처럼 보입니다. 다른 사람들이 어떻게하는지 알고 싶습니다. 특히 postgres 솔루션에 관심이 있습니다.