[sql-server] 파일 시스템이 아닌 데이터베이스에 파일을 저장합니까?

일반적으로 파일 시스템이 아닌 데이터베이스 (특히 mssql)에 파일을 저장하는 것이 성능 저하 중 얼마나 나쁜가요? SQL Server에서 내 파일을 varbinaries로 저장하려는 응용 프로그램 이식성 이외의 이유를 찾을 수 없습니다.



답변

이 답변을 살펴보십시오.

이미지를 DB에 저장-그래, 아니?

기본적으로 사용자 수에 따라 공간 및 성능 저하가 상당히 클 수 있습니다. 또한 웹 서버는 저렴하고 부하를 분산하기 위해 쉽게 추가 할 수있는 반면 데이터베이스는 일반적으로 웹 아키텍처에서 가장 비싸고 확장하기 가장 어려운 부분입니다.

반대되는 예 (예 : Microsoft Sharepoint)가 있지만 일반적으로 데이터베이스에 파일을 저장하는 것은 좋은 생각이 아닙니다.

데스크톱 앱을 작성하거나 대략적으로 얼마나 많은 사용자를 보유하게 될지 알 수없는 한, 공개 웹 사이트와 같이 무작위로 예상 할 수없는 경우 데이터베이스에 파일을 저장하는 데 높은 비용을 지불 할 수 있습니다.


답변

SQL Server 2008로 이동할 수있는 경우 두 가지 장점을 모두 제공하는 FILESTREAM 지원을 활용할 수 있습니다. 파일은 파일 시스템에 저장되지만 데이터베이스 통합은 단순히 varchar 필드에 파일 경로를 저장하는 것보다 훨씬 낫습니다. 쿼리는 표준 .NET 파일 스트림을 반환 할 수 있으므로 통합이 훨씬 간단 해집니다.

FILESTREAM 저장소 시작


답변

상황에 따라 다릅니다. 예를 들어, 저는 지방 정부에서 일하고 머그 샷과 같은 이미지를 많이 가지고 있습니다. 사용자 수가 많지는 않지만 데이터에 대한 보안과 감사가 필요합니다. 데이터베이스는이를 더 쉽게 만들고 확장 문제에 부딪히지 않기 때문에 더 나은 솔루션입니다.


답변

여기서 질문은 무엇입니까?

최신 DBMS SQL2008은 BLOB를 테이블에 고정하는 것이 아니라 다양한 방식으로 BLOB를 처리합니다. 물론 장단점이 있으며 조금 더 깊이 생각해야 할 수도 있습니다.

늦게까지 (?) Jim Gray까지 흥미로운 논문입니다.

BLOB로 또는 BLOB로 : 데이터베이스 또는 파일 시스템의 대형 오브젝트 스토리지


답변

내 경험상 항상 파일을 파일로 저장하는 것이 좋습니다. 그 이유는 파일 시스템이 파일 저장에 최적화되어있는 반면 데이터베이스는 그렇지 않기 때문입니다. 물론 몇 가지 예외가 있지만 (예를 들어 많이 예고 된 차세대 MS 파일 시스템은 SQL 서버 위에 구축되어야 함) 일반적으로 그것이 제 규칙입니다.


답변

성능이 문제이기는하지만 현대의 데이터베이스 설계로 인해 작은 파일의 경우 훨씬 덜 문제가 된 것 같습니다.

성능은 제쳐두고 데이터가 얼마나 밀접하게 결합되어 있는지에 따라 달라집니다. 파일에 데이터베이스의 필드와 밀접한 관련이있는 데이터가 포함되어 있으면 개념적으로 파일에 가깝고 blob에 저장 될 수 있습니다. 잠재적으로 여러 레코드와 관련 될 수있는 정보를 포함하거나 데이터베이스 컨텍스트 외부에서 사용할 수있는 정보가 포함 된 경우 외부에 속합니다. 예를 들어 웹 페이지의 이미지는 링크 된 페이지와는 별도의 요청으로 가져 오므로 외부에 속할 수 있습니다 (특정 디자인 및 보안 고려 사항에 따라 다름).

우리의 타협은, 이것이 최선이라고 약속하지 않습니다. 데이터베이스에 작은 XML 파일을 저장하고 그 밖에 이미지와 기타 파일을 저장하는 것이 었습니다.


답변

성능 문제가 예상되는 중간 에 http://www.freshlogicstudios.com/Products/Folders/에 대해 varbinary로 저장하기로 결정했습니다 . 나는 그것이 얼마나 잘 풀 렸는지에 대해 즐겁게 놀랐다고 말할 수 있습니다.