복붙노트

[SQL] 파일 시스템 대 데이터베이스의 이미지

SQL

파일 시스템 대 데이터베이스의 이미지

우리는 우리가 하나 개의 패키지로 우리의 전체 엑스트라 넷 및 인트라넷에 전원을 공급하는 전체 백엔드 CMS 시스템을 구축 할 위치를 오는 프로젝트가 있습니다. 우리가 무결성, 하나의 복제 계획 등 또는 파일 시스템에 저장을 가질 수 있도록 (2005 SQL 서버) 데이터베이스에 저장하는 이미지 : 나는 더 IS에 대한 답을 찾기 위해 노력 해왔다 질문?

우리가 가진 하나의 문제는 우리가 여러 서버의 부하가 항상 동일한 데이터를 가지고 필요로 균형을 가지고있다. 지금부터 우리는의 SQL 복제 돌보는을 가지고 있지만 파일 복제는 조금 힘들 것 같다. 우리가 또 다른 관심사는 우리가 같은 이미지의 여러 해상도를하고 싶은 것입니다, 우리는 최고의 아니면 동적으로 당겨 우리는 요청에 따라 원하는 해상도의 이미지를 만드는 것 파일 시스템의 각 버전을 생성하고 저장하는 경우 확실하지 않다.

우리의 문제는 다음과 같습니다 :

사람이 비슷한 상황이 있거나 추천 할 것입니다 무슨에 대한 모든 입력이 있습니까? 도움에 미리 감사드립니다!

해결법

  1. ==============================

    1.마이크로 소프트 리서치에서 발표 한 좋은 연구 논문은 변수와 영향의 모든 종류의 바라 보았다 물방울의 제품에 물방울 여부가 불렸다.

    마이크로 소프트 리서치에서 발표 한 좋은 연구 논문은 변수와 영향의 모든 종류의 바라 보았다 물방울의 제품에 물방울 여부가 불렸다.

    결국 이들의 발견 :

    이 논문이 출판 된 이후, SQL 서버 2008도, 현실을 파일 시스템에 물건을 저장하게 FILESTREAM 특성을 추가했지만 거래 통제하에있다. 높은 당신이 체크 아웃 추천!

  2. ==============================

    2.이 질문은 자주 온다 -이 SO 검색 결과를 참조하십시오.

    이 질문은 자주 온다 -이 SO 검색 결과를 참조하십시오.

    아무도 정답이 없다 - 그것은 상황에 따라 달라집니다.

    개인적으로 - DB를에서 파일의 경로와 파일 시스템에있는 파일을 유지한다. 각각은 자신의 강점을 가지고있다. 당신은 할 수있는 백업 파일뿐만 아니라 데이터베이스. 이것은 또한 데이터의 전송 블록을 관리하는이 사람의 결론이다.

  3. ==============================

    3.특히 다수의 서버에서 정적 파일의 복제, 관리하기가 어려울 수 있습니다. 정말, 관리, 모니터링 및 데이터베이스 크기 및 하중 대 복제 문제를 디버깅 사이의 트레이드 오프로 내려 온다.

    특히 다수의 서버에서 정적 파일의 복제, 관리하기가 어려울 수 있습니다. 정말, 관리, 모니터링 및 데이터베이스 크기 및 하중 대 복제 문제를 디버깅 사이의 트레이드 오프로 내려 온다.

    나는 아마도 데이터베이스 접근 방식을 선택하고, 부하가 영상 통화를 중심으로 캐시 층의 일종을 올리는에서 문제가 모양이되었다 경우 거라고 생각합니다.

    제안은 DB의 경로가 여러 시스템에 걸쳐이를 복제하는 진짜 문제를 누락 저장합니다.

  4. ==============================

    4.귀하의 문제는 두 개의 진영으로 분해. 다음 문제는 데이터베이스에 저장하는 문서를 선호한다 :

    귀하의 문제는 두 개의 진영으로 분해. 다음 문제는 데이터베이스에 저장하는 문서를 선호한다 :

    이 문제는 (아마) 파일 시스템에 문서를 저장 선호 :

    그래서, 가장 중요한 것을 결정하고 그에 따라 선택합니다.

  5. ==============================

    5.최상위이 필요 무결성 및 복제하는 경우 음, 그 대답은 확실히 DB이다.

    최상위이 필요 무결성 및 복제하는 경우 음, 그 대답은 확실히 DB이다.

    당신이 다른 점을 생각 :

  6. ==============================

    6.논쟁의 양쪽에 유효한 우려 때문에 항상 당신의 요구 사항을주고있다. 얼마나 많은 데이터를 얼마나 많은 이미지, 얼마나 큰?

    논쟁의 양쪽에 유효한 우려 때문에 항상 당신의 요구 사항을주고있다. 얼마나 많은 데이터를 얼마나 많은 이미지, 얼마나 큰?

    인라인 / BLOB 저장

    거꾸로 : 단순화 아키텍처와 구현, 백업 복구 또는 시스템의 마이그레이션 및 단순화; 단지 (DB 당신의 맛을 위해 어떤 용어) 덤프, 백업, 수출을하고 새 데이터베이스로 이동합니다. 버전 관리 / 일관성 때문에 특정 시점 복구 할 수는 DB에 의해 처리됩니다. 이미지 BLOB에 대한 액세스가 전체 행에 대한 액세스의 본질이기 때문에 보안 / 액세스 제어도 청소기입니다. DB를 외부 이미지를 이동 및 동시성 및 확장 성을 위해 더 나은, 그들은 자신이 소유하지 않은 URL과 요청 이미지를 해킹 할 수 있도록 사람들과 문제가있을 수 있지만 HTTP 서버가, 그것을 가져시키는. 당신은 DB 외부 집 그들이 할 경우, 확인 중 사용자 간의 이미지의 보안 정책 커버 액세스 제어를합니다. 어느 HTTP 서버 인증은 HTTP 요청이 유효한지 확인하기 위해 세션 메커니즘의 일종을 사용하는 이미지를 제공하는 전체 시스템의 인증 또는 HTTP 서버 프로그램과 통합 할 수 있습니다. 이 멀티 테넌트 (multi-tenant) 데이터베이스에 매우 큰 관심사입니다. 간단한 인증을 하나의 목적, 하나의 테넌트 시스템에서 우려의 적은.

    단점 : 당신이 그렇지 않으면 작은 핵심 데이터 집합을 가질 수있는 경우, 당신은 많은 GB가 또는 이미지 데이터의 TB 수 있기 때문에 정말 정말 큰 데이터베이스의 경우, 백업 및 복구, 또는 문제가 비용이 많이 드는 좌절을 가져옵니다. 당신이 기업의 품질, 데이터웨어 하우스 조정 백업 및 복구의 DBMS를 사용하지 않는 백업보기의 무결성 지점에서 모두 좋은 일관된 하나 개의 데이터베이스로 다되어 치료하지만, 나쁜 (예를하는 것은 오라클 RMAN 및 압연 백업입니다).

    항상 모든 시스템의 복구 시간을 고려하십시오. 스토리지 요구 사항은 <몇 기가 바이트 경우에도 50-1백기가바이트 말, 당신은 백업 충분한 공간 계획이, 인라인 저장 청소기입니다. 그 위에, 우려의 분리 및 파일 시스템이 일을시키기는 중요한 장점이된다. 아무것도 복원 복구하고 작은 데이터 오류를 위해 거대한 데이터베이스를 열 것보다 더 나쁜 없습니다. 복구 시간 내 가장 큰 관심사 일 것이다.

  7. ==============================

    7.일반적으로 DB에 이미지 데이터를 지속하는 등 지금까지 CMS에 관한 한, 파일 시스템 효율적으로하지 않을 수 있습니다. 한 번에 당신은 아마 정적 이미지를 표시하려면, 다른 시간에 해당 이미지가 업데이트 등 사용자의 그래픽 디자이너로 사용할 수있게하려면

    일반적으로 DB에 이미지 데이터를 지속하는 등 지금까지 CMS에 관한 한, 파일 시스템 효율적으로하지 않을 수 있습니다. 한 번에 당신은 아마 정적 이미지를 표시하려면, 다른 시간에 해당 이미지가 업데이트 등 사용자의 그래픽 디자이너로 사용할 수있게하려면

    이미지를 당신이 작업 할 때마다 검색과 관련된 처리 오버 헤드를 고려하십시오.

    당신은 파일 시스템을 고려해야 할 이유 몇 가지 포인트

  8. ==============================

    8.Windows 환경에있는 가정 파일 시스템을 사용하는 더 큰 이유가 없다. 당신은 당신이 원하지 않는 페이지 분할을 방지하기 위해 테이블에 이미지를 저장하는 방법을 조심해야 할 수 있습니다,하지만 성능 팅겨 아니라 큰 문제입니다.

    Windows 환경에있는 가정 파일 시스템을 사용하는 더 큰 이유가 없다. 당신은 당신이 원하지 않는 페이지 분할을 방지하기 위해 테이블에 이미지를 저장하는 방법을 조심해야 할 수 있습니다,하지만 성능 팅겨 아니라 큰 문제입니다.

    파일 시스템에 단점

    -not 자동으로 복제

    모든 인스턴스에 대해 서로 다른 물리적 인 위치를함으로써 복제를 복잡하게 수 있겠나

    파일의 매우 큰 숫자 - 느린

    파일 시스템에 거꾸로

    당신은 몇 가지 매우 큰 파일을 저장하고 - 만약, 더 나은 약간을 수행합니다.

  9. ==============================

    9.I 것;

    I 것;

    각 화상에 1) 할당 식별자 (GUID) 그 GUID 2) 태그 / 이름 이미지 3) OS에 보관 GUID (파일 시스템) 데이터베이스 4) 스토어 완전한 파일 이름 (FQN) 포인터.

    데이터베이스에 이미지를 저장하면 저장 및 유지 보수의 측면에서 너무 비싸다. 단지 FQN 포인터를 저장하는 것은 더 나은 솔루션을 제공 할 것이다. 또한 트리거 및 일부 저장 프로 시저를 통해 백엔드 무결성 검사를 구축 할 수 있습니다.

  10. ==============================

    10.나는 (내 대답은 SQL 서버에서 제공) 하나의 이유에 대한 데이터베이스에서 이미지를 저장하지 것이다 :

    나는 (내 대답은 SQL 서버에서 제공) 하나의 이유에 대한 데이터베이스에서 이미지를 저장하지 것이다 :

    나는 SQL 서버 데이터 캐시는 웹 사이트에 대한 간단한 이미지로 채워 싶지 않을 것이다. 나는 데이터 캐시가 실제로 데이터를 갖고 싶어. 또한이 훨씬 쉽게 다 계층 아키텍처가있는 경우 바이너리 데이터의 덩어리보다 이미지의 URL을 전달합니다. 만 원하는 경우 비록 당신이 문제로 실행 할 경우 어떤 사람들은 이미지 (보안)를 볼 수 있습니다.

  11. from https://stackoverflow.com/questions/2517752/images-in-database-vs-file-system by cc-by-sa and MIT license