2013-06-19 3 views
5

SQL Server에 이미지를 저장하려는 경우가 많습니다. 나는 이미지 저장에 대한 몇 가지 사례를 읽고 :SQL Server에서 이미지를 저장하는 최상의 방법

1) 업로드하고 서버에 이미지를 저장, 테이블

2) 바이너리

3으로 이미지를 저장 내부의 경로를 저장) base64로 문자열

로 이미지를 저장

4) BLOB 사용 (어떻게 작동하는지 조사하지 못했습니다)

서버에서 이미지를 요청할 때 더 빠른 "길"을 알고 있습니까? SQL 서버의 속도를 떨어 뜨리지 않기 위해 어떤 "방법"이 더 나은지 알고 있습니까? 위에서 더 나은 다른 "방법"을 알고 있습니까?

감사합니다.

+0

[SQL Server에서 이미지를 저장하는 방법은 무엇입니까?] 가능한 복제본 (영문) (http://stackoverflow.com/questions/5613898/what-about-storing-images-in-sql-server) – Lamak

+0

@Lamak Blob 또는 물방울이 아닙니다. 게시물 전에 stackoverflow를 검색했습니다. 내가 그 게시물로 찾고있는 것은 deveopers의 경험이 말하는 것입니다! –

+0

그리고 그 링크는 단지 "Blob 또는 Not Blob"이상입니다. _ 그것에는 많은 좋은 점들이있는 대답이 있습니다 – Lamak

답변

4

Microsoft는이 항목에서 some research을 수행했으며 이미지 크기에 따라 크기가 결정되었습니다. 대부분의 이미지가 < 256Kb 인 경우 VARBINARY를 사용해야합니다. 반면에 1Mb보다 크면 FILESTREAM (데이터베이스 파일 외부의 파일 시스템에 저장 됨)을 사용해야합니다.

이미지가 다른 데이터와 연결되어있는 경우 데이터가있는 테이블이 작고 조작하기 쉽도록 이미지를 다른 테이블 (즉, 이미지 테이블 만들기)로 분리하는 것이 유용합니다.

+0

base64는 어떨까요? 문자열을 가져 와서 이미지 또는 바이트() 클라이언트로 변환하고 그것을 사용합니까? –

+2

더 많은 공간을 차지합니다 (약 37 % 더). 장점은 무엇입니까? –

+0

SQL에 이미지가 있다고 가정 해 보겠습니다.처음 클라이언트에 다운로드하고 저장합니다. 두 번째로 CHECKSUM을 검사하여 저장된 파일을 삭제하고 새 파일을 다운로드 한 경우 base64가 변경되었는지 (문자열로 쉽게) 변경되었는지 확인합니다. FILESTREAM으로 변경 사항을 확인할 수 있습니까? –

3

Pls에는 보편적으로 "최선의"방법이 없지만 사용자의 특정 요구에 가장 적합한 방법 만 있습니다.

"서버에서 이미지를 요청할 때 어떤"방법 "이 더 빠릅니까? -이 경우 # 1은 기본적으로 이미지를 파일 시스템에 저장하고 데이터베이스에서 이미지 경로 만 검색하기 때문입니다.

"SQL 서버를 더 느리게 만들지 않기 위해 어떤"방법 "이 더 나은지 알고 계십니까? - 다시 말하면 # 1은 적은 데이터를 처리해야하기 때문입니다. SQL Server가 이미지가 저장된 경로를 나타내는 varchar를 검색하는 것이 어떤 형식 으로든 이미지 자체를 검색하는 것보다 쉽습니다.

1 위는 간단하고 설치 아마 가장 쉬운하지만, pls는 단점이 있다는 것을 주 :

  • 일부 이미지는이
  • 을 발생하는 단서가없는 파일 시스템 SQL 서버에서 삭제 된 경우
  • 당신은 또한 파일 시스템에서 이미지를 삭제해야 SQL 서버에서 행 삭제하면 (당신이 명확하게 유지하려면를) 또한 파일 시스템에서 백업 데이터에 필요뿐만 아니라 SQL Server 데이터베이스
  • )
관련 문제