2011-03-02 8 views
1

데이터베이스가 있습니다. 포함 된 테이블 중 하나는 디스크의 이미지 파일 경로를 저장하는 데 사용됩니다.디스크의 이미지 파일 경로를 참조하여 각 데이터베이스 레코드 간의 무결성을 유지하는 가장 좋은 방법은 무엇입니까?

문제는

방법 테이블의 각 레코드와 디스크의 해당 이미지 파일의 무결성을 유지하는 것입니다?

나는 가능성

  • 사용할 수없는 이미지 파일 기록을 피하고 싶어.
  • 테이블에 레코드가없는 이미지.

답변

2

둘 사이의 무결성을 유지하는 가장 좋은 전략은 보조 저장 경로를 제거하고 파일 비트를 데이터베이스에 직접 저장하는 것입니다. 대부분의 RDBMS는 스트레이트 이진 비트를 저장할 바이너리 데이터 유형을 가지고 있습니다.

응용 프로그램에서 비트를 serialize/deserialize하여 필요에 따라 파일 내용을 다시 구성하게하십시오. 확장명이 포함 된 파일 이름 필드를 포함하십시오.

+0

데이터베이스에 이미지를 저장하면 데이터베이스 파일 크기가 증가합니다. 내가 반드시 지켜야 할 제약 조건입니다. – xport

+0

우리는이 솔루션을 사용했고 증가하는 바이너리 데이터로 인해 많은 문제가있었습니다. 주요 데이터를 백업하는 것은 어려워지고 길어집니다. – Zimbabao

+0

@ RecycleBin - 예, 데이터베이스 크기가 커집니다. 그러나 파일과 db의 메타 데이터에 대한 무결성을 유지하기위한 요구 사항이 아닙니까? – jro

2

데이터베이스에서 무결성 검사를 추가하는 대신 응용 프로그램 코드에서 처리하는 것이 좋습니다.

양방향 확인을 추가 할 수 있습니다. 먼저 데이터가 데이터베이스에 업로드되기 전에 특정 파일이 있는지 확인하십시오. 파일이 존재하지 않으면 사용자가 레코드를 검색 할 때 두 번째로 예외를 throw합니다.

+0

아쉽게도 파일은 응용 프로그램 코드의 흐름 외부에서 파일 시스템을 통해 제거 될 수 있습니다. – jro

+0

@jro : 좋은 지적입니다! 그러나 응용 프로그램 코드가 실행 중일 때 이미지가 최소한 잠겨 있기를 바랍니다. – rkg

관련 문제