2011-01-25 4 views
1

나는 미친 생각을 가로 질러 와서 당신과 함께 그것을 공유하고, 특히 성능 현명한, 그것의 타당성에 대해 물어보고 싶은게 :데이터베이스 운영을위한 Windows 파일 시스템의 속도는 얼마나 빠릅니까?

  • 를위한 폴더를 생성 :

    아이디어에 의해 객체 데이터베이스 작업을 관리하는 것입니다 하위 폴더를 생성하는 고유 ID

  • 의 이름을 따서 명명 각 개체에 대한 파일을 생성 서브 클래스 이름
  • 의 이름을 따서 명명 각 하위 클래스에 대한 하위 폴더를 생성하는 클래스 이름
  • 의 이름을 따서 명명 각 클래스 원래 개체 파일을 참조하여 각각의 인덱스 항목에 대한 바로 가기 파일을 생성 인덱스 필드
  • 의 이름의 이름을 따서 명명 각 인덱스에 대한
  • 읽기/매우 빠른 시리얼 라이저에 의해 바이너리 객체를 작성 라이저/디시리얼라이저
  • 삽입/업데이트/삭제 객체와 정렬 된 파일 이름에 이진 검색을 이용 것이다 메모리 매핑 된 파일을
  • 쿼리를 사용하여 객체와 바로 가기 파일
  • 캐시/페이징 이름을 변경하여 인덱스 항목

업데이트 : 답장을 보내 주셔서 감사합니다. 나는 이것이 OS 파일 시스템을 다루는 대신 7z와 같은 압축/암호화 라이브러리를 사용함으로써 향상 될 수 있다고 생각했다. 그렇지 않으면 지금까지 명시된 모든 우려가 유효합니다. 오라클과 같은 기본 파일 시스템이 어떤 종류인지 궁금합니다.

답변

3

단점 : 대부분의 파일 시스템에

  • , 심지어 1 개 바이트 파일은 4킬로바이트의 전체 블록을합니다. 데이터베이스에 저장할 개체의 종류에 따라 큰 문제가 될 수 있습니다.
  • 대부분의 파일 시스템은 수백만 개의 파일이 들어있는 디렉토리와 축척되지 않습니다.
  • 복잡한 쿼리는 수백만 개의 파일 열기/읽기/역 직렬화/닫기가 필요하므로 매우 느립니다.
2

흥미로운 개념으로 해결해야 할 즉각적인 문제에 대한 몇 가지 생각이 있습니다.

  • Windows 파일 성능이 수백 수천 개의 파일 후 타격을한다, 당신이 특정 측면을 변경해야합니다 (8.3 끄고 마지막 업데이트 타임 스탬프) 파일 시스템을 읽을 때 지연이 발생하지 않도록하세요.
  • 잠금 - 잠금 메커니즘은 흥미로운 도전이 될 것입니다. 업데이트를 위해 작업을 잠글 수 있지만 동시에 읽을 수 있어야합니다.
  • ACID -이 '데이터베이스'에 대해 작업을 수행하는 동안 ACID 원칙을 어떻게 적용 할 것입니까? 각각은 중요한 문제는 아닙니다.
2

실제로 데이터베이스에 대해 더 배우기위한 연습으로, 현실 세계에서는 프로젝트를 수행해야합니다. 아니요.

데이터베이스의 두드러기가 너무 많아서 실제로 무엇을하고 있는지 정확히 알지 못하면 여기에서 묻지 않을 것입니다.), 기존 솔루션과 절대로 일치하지 않을 가능성이 큽니다.

대신 기존 객체 데이터베이스로 이동하여 응용 프로그램/사이트/응용 프로그램의 세부 사항에 집중하십시오.

관련 문제