2011-10-01 3 views
7

BLOB를 사용하는 방법을 다른 사람이 설명 할 수 있기를 바랍니다. BLOB를 사용하여 비디오 파일을 저장할 수 있음을 알았습니다. 내 질문에 사람이 SQL 데이터베이스에서 BLOB에 비디오 파일을 저장하는 이유는 무엇입니까? 비디오 파일의 위치에 포인터를 저장하는 것에 비해 장점과 단점은 무엇입니까?비디오 파일을 저장하는 SQL의 BLOB

답변

6

몇 가지 이유가 있습니다.

디스크에 파일 포인터 (아마도 BFILE 데이터 유형 사용)를 저장할 경우 파일을 디스크에서 이동, 이름 변경 또는 삭제할 때마다 데이터베이스가 업데이트되도록해야합니다. 이런 식으로 데이터를 저장하면 데이터베이스가 파일 시스템과 동기화되지 않고 끊어진 링크와 고아 컨텐츠로 끝나는 경우가 많습니다.

디스크의 파일에 대한 포인터를 저장하면 멀티미디어를 처리 할 때 트랜잭션 의미론을 사용할 수 없습니다. 파일 시스템에 대해 롤백을 발행하는 것과 같은 일을 할 수 없으므로 파일 시스템의 데이터가 데이터베이스의 데이터와 일치하지 않는 상황을 처리해야합니다 (즉, 누군가 파일 시스템에 비디오를 업로드했으나 데이터베이스에서 작성자와 제목을 만든 트랜잭션이 실패하거나 그 반대의 경우) 또는 트랜잭션 의미를 시뮬레이트하기 위해 파일 업로드에 추가 단계를 추가해야합니다 (예 : <> _done.txt 업로드 한 실제 파일의 바이트 수가 포함 된 파일입니다. 번거롭고 오류가 발생하기 쉽고 사용성 문제가 발생할 수 있습니다.

많은 응용 프로그램에서 데이터를 제공하는 것이 데이터를 제공하는 가장 쉬운 방법입니다. 사용자에게 전달할 수 있습니다. 사용자가 일부 FTP를 우회 할 수 있기 때문에 파일에 직접 FTP URL을 보내지 않으려면 가장 쉬운 옵션은 데이터베이스 검색 응용 프로그램에서 데이터를 검색 할 위치를 얻는 것입니다. 데이터베이스는 파일 시스템에서 데이터를 읽은 다음이를 중간 계층으로 리턴 한 다음 데이터를 클라이언트로 보냅니다. 데이터를 검색 할 때마다 데이터베이스에 데이터를 읽어야하는 경우 데이터를 데이터베이스에 직접 저장하고 사용자가 요청할 때 데이터 파일에서 데이터를 읽도록하는 것이 더 적합합니다. 그것을 위해.

마지막으로 오라클과 같은 데이터베이스는 데이터베이스의 멀티미디어 데이터 작업을위한 추가 유틸리티를 제공합니다. 예를 들어, Oracle interMedia은 데이터베이스에 저장된 비디오 데이터와 상호 작용할 수있는 풍부한 객체 세트를 제공합니다. 장면 시작 또는 끝 위치, 다양한 주제가 논의 된 태그, 비디오 녹화 시간, 기록 된 위치 등을 쉽게 태그 할 수 있습니다. 검색 기능을 모든 관계형 데이터에 대한 검색과 통합 할 수 있습니다. 물론 모든 것들을 처리 한 데이터베이스 위에 응용 프로그램을 작성할 수는 있지만 많은 코드를 작성하거나 응용 프로그램에 다른 프레임 워크를 사용 중입니다. 종종 데이터베이스 기능을 활용하는 것이 훨씬 쉽습니다.

관련 문제