문제

폴더 그룹을 모니터링하고 찾은 모든 파일을 색인화하는 간단한 응용 프로그램에 대한 아이디어가 있습니다.GUI를 사용하면 새 파일에 빠르게 태그를 지정하고 저장을 위해 단일 데이터베이스로 이동할 수 있으며 태그, 이름, 파일 유형 및 날짜별로 DB를 쿼리하는 쉬운 메커니즘도 제공됩니다.현재 두 개의 이동식 하드 드라이브에 약 100GB 이상의 파일이 있으므로 데이터베이스는 최소한 그만큼 커질 것입니다.가능하다면 포함된 바이너리 및 텍스트 문서의 전체 텍스트 검색을 지원하고 싶습니다.이는 단일 사용자 애플리케이션이 됩니다.

DB 전쟁을 시작하려는 것이 아니라 어떤 오픈소스 DB가 나에게 가장 적합할까요?나는 SQLLite가 테이블에서 벗어났다고 확신하지만 틀릴 수도 있습니다.

도움이 되었습니까?

해결책

나는 아직도 내 프로젝트 중 하나를 위해 이 옵션을 연구하고 있지만 카우치DB 살펴볼 가치가 있을 수 있습니다.

다른 팁

파일을 데이터베이스에 저장하는 이유는 무엇입니까?메타데이터와 파일 이름을 저장하기만 하면 됩니다.어떤 이유로든 새 위치에 복사해야 하는 경우 파일 시스템 복사본으로 복사하면 됩니다.

파일 내용을 제거하면 유능한 데이터베이스가 수십만 개의 파일에 대한 메타데이터를 처리할 수 있습니다.

내가 선호하는 것은 문서를 메타데이터와 함께 저장하는 것입니다.한 가지 이유는 관계 무결성입니다.DB에서 작업을 중개하지 않으면 쉽게 파일을 이동하거나 파일을 수정할 수 없습니다.나는 이러한 문제를 처리할 수 있다고 확신하지만 내가 원하는 만큼 깨끗하지는 않으며 내 경험에 따르면 요즘 대부분의 공급업체는 데이터베이스에서 엄청난 양의 이진 데이터를 처리할 수 있습니다.PostgreSQL이나 MySQL이 이러한 영역에서 확실한 이점을 갖고 있는지 궁금합니다. 저는 주로 Oracle에 익숙합니다.어쨌든 답변해주셔서 감사합니다. DB에서 외부 파일이 어디에 있는지 알면 나중에 원할 때 파일을 쉽게 가져올 수 있을 것입니다.질문의 또 다른 측면은 Python을 사용할 때 두 데이터베이스 중 하나가 작업하기 더 쉬운지 여부였습니다.나는 그것이 세탁이라고 가정하고 있습니다.

저는 항상 "하지 마세요"라고 대답하기 싫지만 Lucene(파이루센).파일 내용보다는 데이터베이스에 경로를 저장하는 것이 거의 항상 권장됩니다.

게다가 해당 데이터베이스 엔진 중 어느 것도 별도의 데이터 공간에 LOB를 저장하지 않으므로(테이블의 데이터 공간에 포함됨) 해당 엔진 중 어느 것도 거의 동일한 성능을 발휘해야 합니다(sqllite는 제외).이러한 종류의 바이너리 개체 처리를 얻으려면 Informix, DB2, SQLServer 또는 기타 제품으로 이동해야 합니다.

파일의 실제 내용을 색인화하고 싶지 않기 때문에 거의 모든 것이 작동합니다 (SQLLite가 동시 다중 사용자 환경에서 사용되도록 의도되지 않았음에도 불구하고 문제가 될 수 있습니다 ...).

유일한 제한 요소는 주어진 DB의 최대 "패킷" 크기입니다(패킷은 쿼리/응답을 의미함).일반적으로 이러한 제한은 약 2MB입니다. 이는 파일이 2MB보다 작아야 함을 의미합니다.물론 이 제한을 늘릴 수 있지만 전체 프로세스는 다소 비효율적입니다. 예를 들어 파일을 삽입하려면 다음을 수행해야 하기 때문입니다.

  • 전체 파일을 메모리로 읽어 들입니다.
  • 쿼리에서 파일을 변환합니다. 이는 일반적으로 16진수 인코딩을 의미하므로 처음부터 크기가 두 배로 늘어납니다.
  • 생성된 쿼리 실행(이는 데이터베이스의 경우 구문 분석해야 함을 의미함)

나는 간단한 DB와 쉽게 찾을 수 있는 명명 규칙(예: 기본 키 기반)을 사용하여 저장된 관련 파일을 사용하겠습니다.물론 이 디자인은 "순수"하지는 않지만 훨씬 더 나은 성능을 발휘하고 사용하기도 더 쉽습니다.

왜 파일 시스템이 처리할 수 있어야 하는 것을 에뮬레이션하는 데 시간을 낭비하고 있습니까?더 많은 스토리지 + grep이 답입니다.

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