SQL Server 2008은 전자 상거래 웹 사이트의 이미지 저장소로 사용할 수 있습니까? 다양한 크기와 각도의 제품 이미지를 저장하는 데 사용됩니다. 웹 서버는 이러한 이미지를 출력하여 클러스터 된 ID로 테이블을 읽습니다. 총 이미지 크기는 약 10GB이지만 확장 할 필요가 있습니다. 파일 시스템을 사용하는 것보다 많은 이점을 볼 수 있지만 O (1) 조회가없는 SQL 서버는 사이트에 많은 트래픽이있는 경우 최상의 솔루션이 아닌지 걱정됩니다. 병목 일까? 어떤 생각이나 다른 옵션은 무엇입니까?SQL Server를 이미지 저장소로 사용
답변
10Gb는 엄청난 양의 데이터가 아니므로 데이터베이스를 저장하고 큰 문제는 없지만 파일 시스템을 사용하는 것이 현명한 성능을 발휘할 수 있으며 안전 관리가 더 좋습니다 DB (백업 및 일관성)를 사용합니다.
SQL Server 2008의, 당신이 VARBINARY 컬럼에 FILESTREAM 특성을 적용하고, SQL 서버 수 있습니다 행복하게
는 SQL 서버 2008과 함께, 당신은 당신의 케이크를 가질 수 있도록한다 해당 열의 데이터를 로컬 NTFS 파일 시스템에 저장합니다. 파일 시스템에 데이터를 저장하면 다음과 같은 두 가지 주요 이점이 있습니다.- 성능은 파일 시스템의 스트리밍 성능과 일치합니다.
- BLOB 크기는 파일 시스템 볼륨 크기로만 제한됩니다.
그러나 열은 SQL Server의 다른 BLOB 열과 마찬가지로 관리 될 수 있으므로 관리자는 SQL Server의 관리 기능 및 보안 기능을 사용하여 BLOB 데이터 관리를 관계형 데이터베이스의 나머지 데이터와 통합 할 수 있습니다 파일 시스템 데이터를 별도로 관리 할 필요가 없습니다.
SQL Server에서 FILESTREAM 열로 데이터를 정의하면 데이터베이스의 관계형 데이터와 물리적으로 파일 시스템에 저장된 비정형 데이터 간의 데이터 수준 일관성을 유지할 수 있습니다. FILESTREAM 열은 BLOB 열과 완전히 동일하게 작동합니다. 즉, 백업 및 복원, SQL Server 보안 모델과의 완전한 통합 및 전체 트랜잭션 지원과 같은 유지 관리 작업의 전체 통합을 의미합니다.
응용 프로그램 개발자는 두 가지 프로그래밍 모델 중 하나를 통해 FILESTREAM 데이터를 사용할 수 있습니다. Transact-SQL을 사용하여 표준 BLOB 열과 마찬가지로 데이터에 액세스하고 조작 할 수 있습니다. 또는 Transact-SQL 트랜잭션 의미와 함께 Win32 스트리밍 API를 사용하여 일관성을 보장 할 수 있습니다. 즉, FILESTREAM에 대한 표준 Win32 읽기/쓰기 호출을 사용할 수 있습니다. BLOB는 파일 시스템의 파일과 상호 작용할 때와 동일합니다.
SQL Server 2008에서 FILESTREAM 열은 로컬 디스크 볼륨에만 데이터를 저장할 수 있으며 투명 암호화 및 테이블 반환 매개 변수 같은 일부 기능은 FILESTREAM 열에 대해 지원되지 않습니다. 또한 로그 전달이 지원 되기는하지만 데이터베이스 스냅 숏이나 데이터베이스 미러링 세션에서 FILESTREAM 열을 포함하는 테이블을 사용할 수 없습니다.
전자 상거래 웹 사이트와 같은 경우, 이미지가 데이터베이스의 BLOB 저장소에 저장 될 가능성이 높습니다. 조숙 한 최적화에 관여하고 싶지는 않지만 내 이미지가 내 데이터와 함께 쉽게 구성 될 수 있다는 이점과 이동성이 매우 뛰어나므로 전자 상거래와 같은 이점이 있습니다.
이미지의 색인이 생성되면 조회가 큰 문제가되지 않습니다. 확실하지는 않지만 파일 시스템에 대한 조회가 O (1)이고, O (n)과 같습니다 (파일 시스템에 의해 색인이 생성 된 것으로 생각하지 않습니다).
이 설정에서 내가 걱정하는 점은 데이터베이스의 크기이지만 올바르게 관리하면 큰 문제가되지 않을 것이고 큰 장점은 데이터베이스 (데이터베이스)를 백업하고 걱정하지 않아도된다는 것입니다 디스크상의 파일들에 관해서.
일반적으로 좋은 해결책은 이미지를 파일 시스템에 저장하고 메타 데이터 (파일 이름, 크기, 마지막 업데이트 시간, 기타 필요한 것)를 데이터베이스에 저장하는 것입니다.
이렇게 말한 결과,이 문제에 대한 "올바른"해결책은 없습니다.
SQL 2008까지는 "올바른"해결책이 없습니다. 다른 답변보기 - SQL 2008에는 FILESTREAM이라는 새로운 구조가 있습니다. – Anthony
체크 아웃 당신이 찾고있는 정확하게 MS 리서치에서이 백서 (http://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2006-45)
그들은 세부 사항. 짧은 버전은 파일 시스템에 데이터를 저장하는 것보다 1MB를 초과하는 파일 크기가 성능을 저하시키기 시작한다는 것입니다.
이 백서는 2006 년 6 월에 마지막으로 업데이트되어 SQL Server 2005에만 적용됩니다. –
조회에 대한 O(log n)
이 문제가 될 것으로 생각됩니다. 10GB의 이미지가 있다고 가정 해보십시오. 평균 이미지 크기가 50KB라고 가정하면 이미지는 200,000 장입니다. 200K 행의 테이블에서 색인 된 룩업을 수행하는 것은 문제가되지 않습니다. 실제로 디스크에서 이미지를 읽고 앱과 클라이언트로 전송하는 데 필요한 시간과 비교하면 작은 편입니다.
데이터베이스의 이미지를 데이터베이스에 저장하는 것과 데이터베이스의 경로를 파일 시스템의 파일에 저장하는 것의 일반적인 장단점을 고려해 볼 가치가 있습니다. 예를 들어 행이 삭제 될 때 데이터베이스 순종 트랜잭션 격리에
- 이미지는 자동 물론 이미지 파일 만 경로 이름을 저장하는 데이터베이스보다 큰 등, 이미지 10GB의와
- 데이터베이스를 삭제합니다. 백업 속도 및 기타 요소가 적절합니다.
- 응용 프로그램을 통해 데이터베이스에서 이미지를 제공 할 때 응답에 MIME 헤더를 설정해야합니다.
- 파일 시스템의 이미지는 웹 서버 (예 : Apache mod_mmap)에서보다 쉽게 캐싱되거나 lighttpd와 같은 더 희박한 웹 서버에서 제공 될 수 있습니다. 이것은 실제로 실제로 큰 이익입니다.
마지막 요점은 실제로 매우 중요합니다. S3와 같은 오프 사이트 저장소 또는 CDN으로 이미지를 이동하는 상황을 고려하십시오. – Min
http://nginx.net/에서 도움이되는 또 다른 도구를 확인하십시오. 그것은 응답 측면에서 아파치를위한 일종의 프록시입니다. 흥미 롭 군! –
- 1. .Net에서 사용 가능한 SQL Server를 열거하십시오.
- 2. ScrewTurn Wiki에서 SQL Server를 사용하도록 구성하려면 어떻게해야합니까?
- 3. AppEngine을 WebService로, S3를 저장소로 사용
- 4. Padrino 세션 저장소로 DataMapper 사용
- 5. SQLite를 Android 저장소로 사용 하시겠습니까?
- 6. Codeigniter 1.7.2는 SQL Server를 지원합니까?
- 7. SQL Server를 다시 계산하거나하지 않습니까?
- 8. SQL Server를 사용하여 백업 복원
- 9. SQL Server를 XML에 덤프 하시겠습니까?
- 10. WMI에서 SQL Server를 사용하는 델파이
- 11. SQL Server를 사용할 때 사용 권한 확인 Windows 인증
- 12. ASP.NET 역할 공급자 : sql express 대신 SQL Server를 사용합니까?
- 13. C에서 동적으로 SQL Server를 관리하고 싶습니다.
- 14. 핵심 데이터를 원격 객체의 저장소로 사용
- 15. Delphi 7에서 Team Foundation Server를 사용 하시겠습니까?
- 16. Monotouch - 공통 객체의 저장소로 Application 클래스 사용
- 17. git과 svn을 둘 다 공유 저장소로 사용
- 18. github 문제를 mylyn 태스크 저장소로 사용 하시겠습니까?
- 19. Jboss 캐시를 분산 상태 저장소로 사용
- 20. SQL Server를 배우기위한 리소스를 찾고 있습니다.
- 21. 읽기 전용으로 SQL Server를 변경하지 마십시오?
- 22. 이름에 마침표가있는 새 SQL Server를 만듭니다.
- 23. USB 드라이브에 SQL Server를 설치할 수 있습니까?
- 24. iPhone에 Microsoft SQL Server를 연결하는 방법은 무엇입니까?
- 25. 원격 포트에서 수신 대기중인 SQL Server를 중지하십시오.
- 26. SQL Server를 시작할 때 서비스를 확인하십시오.
- 27. 데이터 액세스 계층 - 로컬 SQL 데이터베이스에서 클라우드 데이터 저장소로 전환
- 28. LINQ-to-SQL 쿼리 중에 SQL Server를 잠급니다?
- 29. SSRS의 EPS 이미지 사용
- 30. SQL Server를 사용하여 이미지를 저장하고 검색하는 방법 (Server Management Studio)
얼마나 큰 Kb의 이미지가 있습니까? 가장 큰 1 %는 얼마나 큰가요? 이미지의 잠재적 크기에 상한선이 있습니까? – Anthony