![ext4 파일 시스템의 한 디렉토리에 많은 파일이 있으면 어떤 결과가 발생합니까?](https://linux55.com/image/99323/ext4%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98%20%ED%95%9C%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%20%EB%A7%8E%EC%9D%80%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%9E%88%EC%9C%BC%EB%A9%B4%20%EC%96%B4%EB%96%A4%20%EA%B2%B0%EA%B3%BC%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 작업은 데이터베이스를 사용하지 않고 JSON 목록을 디스크에 저장하는 것이며 다음 옵션이 있습니다.
큰 파일에 저장하십시오.
별도의 파일에 저장하고 ID로 입력하세요.
개인적으로 저는 다른 JSON을 건드리지 않고도 모든 JSON을 ID로 직접 처리할 수 있는 두 번째 옵션을 선호합니다. 그러나 JSON 항목이 거의 100만 개에서 100만 개에 달하므로 기본 파일 시스템(내 경우에는 ext4)에 부정적인 영향을 미칠 수 있다는 우려가 있습니다.
이것이 파일 시스템의 파일 수 제한(디렉토리 또는 전체 파일 시스템)을 초과합니까?
특정 ID를 검색할 때 속도가 느려지나요?
더 구체적으로 말하면, 나는 디렉토리 아래의 파일 목록이 디렉토리의 inode 구조에 의해 유지된다고 생각하지만, 파일 목록을 보유하기 위해 어떤 데이터 구조(목록 또는 맵)를 사용하는지 잘 모르겠습니다. 디렉터리 계층 구조를 사용하면 검색 시 성능이 향상됩니까? 예를 들어 ?
0123456789.json
대신root/01/0123456789.json
에root/0123456789.json
?
답변1
단일 디렉터리에 100만 개의 파일이 있으면 속도가 느려지지만 100만 개의 항목으로 집계된 JSON을 구문 분석하게 됩니다. 가장 좋은 방법은 실제로 해시 디렉터리를 사용하는 것이지만 아마도 한 수준 대신 두 수준 아래로 내려가는 것이 좋습니다. 즉, 합계 에 0123456789.json
넣습니다 .root/0/01/0123456789.json
987654321.json
root/9/98/987654321.json