Oracle 10g에서 바이너리 파일을 저장하고 검색하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/62876

  •  09-06-2019
  •  | 
  •  

문제

사용자가 PDF 또는 Microsoft PowerPoint 문서를 '업로드'할 수 있는 기능을 우리 애플리케이션에 구현하려고 합니다. 그런 다음 이 애플리케이션은 뷰어에서 다른 사용자가 사용할 수 있도록 합니다. '다른 이름으로 저장..' 의미입니다).

나는 데이터베이스 열에 임의의 이진 정보를 저장하고 검색하는 방법을 이미 알고 있지만 이것이 우리 응용 프로그램에서 일반적으로 사용되는 기능이므로 솔루션이 엄청나게 큰 데이터베이스 테이블로 이어질까 두렵습니다. PowerPoint 문서의 비디오).

Oracle에 '디렉토리' 개체를 생성하는 방법이 있다는 것을 알고 있지만 이 기능을 사용하여 데이터베이스 서버의 다른 곳에 저장된 바이너리 파일을 저장하고 검색할 수 있는 방법이 있습니까?

아니면 데이터베이스 크기에 대해 지나치게 편집증적입니까?

(완전성을 위해 우리 애플리케이션은 다음을 사용하는 .Net WinForms입니다. CoreLab/DevArt OraDirect.Net 드라이버 오라클 10g까지)

도움이 되었습니까?

해결책

몇 가지 옵션:고유한 저장 특성을 사용하여 고유한 테이블스페이스에 BLOB 열을 넣을 수 있습니다.ID 열로 다른 테이블에 연결된 자체 테이블에 BLOB를 저장할 수 있습니다.두 경우 모두 제안한 대로 열을 BFILE로 정의할 수 있습니다. 이는 실제 파일이 데이터베이스 외부 디렉터리에 저장된다는 의미입니다.문제가 될 수 있는 점은 BFILE LOB가 트랜잭션에 참여하지 않으며 데이터베이스의 나머지 부분으로 복구할 수 없다는 것입니다.

이에 대한 모든 내용은 Oracle 10gR2 SQL 참조, 2장, 23페이지부터 시작됩니다.

다른 팁

나는 그것이 당신이 엄청나게 크다고 생각하는 것에 달려 있다고 생각합니다.

실제로 사용 사례에 따라 다릅니다.문서에 거의 액세스하지 않는 경우 해당 문서를 데이터베이스에 저장하는 것이 좋습니다(예를 들어 데이터베이스를 사용하여 "무료" 백업을 얻을 수 있다는 장점이 있습니다).

이러한 파일이 계속해서 반복해서 히트할 파일인 경우 해당 파일을 디스크에 직접 저장하고 위치를 저장하거나 심지어 (정말 높은 대역폭인 경우) 다음과 같은 것을 살펴보는 것이 더 나을 수 있습니다. MogileFS

이에 대해 누구도 당신에게 예, 아니오라고 대답할 수 없을 것입니다.

일반 LOB 열 유형을 사용하고 해당 필드에 대한 저장 매개변수를 설정하여 별도의 테이블스페이스에 배치할 수 있습니다.엄청난 양의 데이터를 처리할 수 있는 곳에 테이블스페이스를 생성하면 영향을 최소화할 수 있습니다.

디스크 사용량에 대해 심각하게 편집증을 느끼려면 테이블스페이스를 표시하여 추가로 압축할 수 있습니다.다음과 같은 내용이 있습니다.

테이블 스페이스 binary_data1 datafile some_san_location default compress 스토리지 만들기 (...)

내 경험상 첨부 파일의 파일 이름을 포함하는 간단한 VARCHAR2 필드가 더 좋고 쉬운 솔루션입니다.파일 시스템 크기는 데이터베이스 크기보다 관리하기가 훨씬 쉽습니다.

데이터는 DB 내부에 있거나 (서버) 액세스 가능한 파일 경로에 대한 링크를 저장하든 관계없이 어딘가에 있어야 하며 여전히 공간을 씹고 있습니다.

저는 과거에 단순한 LOB 필드를 사용해 본 적이 있는데 잘 작동하는 것 같았습니다.데이터를 DB 내부에 보관하면 최소한 백업의 번거로움을 덜 수 있습니다. 백업할 데이터가 많을 수 있지만 복원하면 모두 거기에 있게 됩니다.바이너리를 분할한다는 것은 백업할 내용에 주의하지 않으면 잠재적으로 DB가 손상되거나 데이터가 손실될 수 있음을 의미합니다.

링크나 링크를 만드는 데 사용할 수 있는 ID만 저장하는 이유 중 하나는 일반적으로 Oracle DB에 사용하는 스토리지가 다소 비싸기 때문입니다.대용량 파일이 많은 경우 일반적으로 저렴한 디스크 어레이에 파일을 저장하는 것이 훨씬 더 비용 효율적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top