ext4 파일 시스템의 한 디렉토리에 많은 파일이 있으면 어떤 결과가 발생합니까?

ext4 파일 시스템의 한 디렉토리에 많은 파일이 있으면 어떤 결과가 발생합니까?

내 작업은 데이터베이스를 사용하지 않고 JSON 목록을 디스크에 저장하는 것이며 다음 옵션이 있습니다.

  • 큰 파일에 저장하십시오.

  • 별도의 파일에 저장하고 ID로 입력하세요.

개인적으로 저는 다른 JSON을 건드리지 않고도 모든 JSON을 ID로 직접 처리할 수 있는 두 번째 옵션을 선호합니다. 그러나 JSON 항목이 거의 100만 개에서 100만 개에 달하므로 기본 파일 시스템(내 경우에는 ext4)에 부정적인 영향을 미칠 수 있다는 우려가 있습니다.

  • 이것이 파일 시스템의 파일 수 제한(디렉토리 또는 전체 파일 시스템)을 초과합니까?

  • 특정 ID를 검색할 때 속도가 느려지나요?

    더 구체적으로 말하면, 나는 디렉토리 아래의 파일 목록이 디렉토리의 inode 구조에 의해 유지된다고 생각하지만, 파일 목록을 보유하기 위해 어떤 데이터 구조(목록 또는 맵)를 사용하는지 잘 모르겠습니다. 디렉터리 계층 구조를 사용하면 검색 시 성능이 향상됩니까? 예를 들어 ? 0123456789.json대신 root/01/0123456789.jsonroot/0123456789.json?

답변1

단일 디렉터리에 100만 개의 파일이 있으면 속도가 느려지지만 100만 개의 항목으로 집계된 JSON을 구문 분석하게 됩니다. 가장 좋은 방법은 실제로 해시 디렉터리를 사용하는 것이지만 아마도 한 수준 대신 두 수준 아래로 내려가는 것이 좋습니다. 즉, 합계 에 0123456789.json넣습니다 .root/0/01/0123456789.json987654321.jsonroot/9/98/987654321.json

관련 정보