계층적 네임스페이스가 사용 설정된 버킷의 성능 최적화

이 페이지에서는 계층적 네임스페이스가 사용 설정된 버킷의 성능을 최적화하는 방법을 안내합니다.

객체 나열

다음은 객체 목록을 표시할 때의 성능 고려사항입니다.

  • 계층적 네임스페이스가 사용 설정된 버킷에서는 전체 버킷의 모든 객체를 나열하거나 접두사로 나열하는 작업이 리소스 집약적입니다. 파일 시스템의 ls -r 명령어와 마찬가지로 각 폴더와 하위 폴더를 탐색해야 하기 때문입니다. 따라서 버킷에 있는 폴더가 많을수록 객체 등록이 느려집니다. 빈 폴더가 많으면 객체 목록 성능에도 부정적인 영향을 미칠 수 있습니다. 성능에 부정적인 영향을 미치지 않으려면 각 폴더의 객체 수를 최대화하고 빈 폴더를 정기적으로 삭제하는 것이 좋습니다.
  • 객체가 폴더 구조 내에서 구성되므로 구분자와 특정 접두사를 사용하여 특정 폴더 내의 객체와 하위 폴더를 나열하거나 검색하는 것이 계층적 네임스페이스가 사용 설정된 버킷에서 더 효율적입니다. 구분자와 특정 접두사를 사용할 때 등록정보 성능을 최적화하려면 includeFoldersAsPrefixes 매개변수를 설정하세요. 그러지 않으면 Cloud Storage에서 빈 폴더를 제외하기 위해 추가 확인을 실행하므로 작업 속도가 느려질 수 있습니다. 객체를 나열할 때 includeFoldersAsPrefixes를 사용하는 방법에 관한 자세한 내용은 객체 나열을 참고하세요.

폴더 관리

효율적인 폴더 관리를 위해 다음 사항을 따르는 것이 좋습니다.

  • 폴더 구조 사전 생성: 객체 업로드, 재작성, 컴포지션 작업 중에 자동 폴더 생성에 의존하는 대신 폴더 만들기 작업을 사용하여 원하는 폴더 구조를 미리 가져옵니다. 폴더 구조를 미리 만들면 성능 일관성과 예측 가능성이 향상됩니다.
  • 폴더당 객체 비율 극대화: 폴더 생성 및 관리와 관련된 오버헤드를 줄일 수 있으므로 폴더당 객체 비율을 높게 유지하는 것이 좋습니다.
  • 폴더 생성 및 삭제 요청 제한: 폴더는 계층적 특성상 개별 객체를 사용하는 것보다 리소스 집약적입니다. 원활한 성능을 위해 Cloud Storage는 이러한 작업을 각 버킷의 초당 요청 1, 000개로 제한합니다. 이 한도를 초과하는 요청은 명시적으로 제한되지 않지만 리소스 가용성에 따라 요청을 성공적으로 처리할 수 있는지 여부가 결정됩니다.
  • 비어 있는 폴더 정기적으로 삭제: 특히 객체 수명 주기 관리를 사용하거나 상위 폴더를 명시적으로 삭제하지 않고 객체를 삭제하는 경우 비어 있는 폴더가 누적될 수 있습니다. 누적된 폴더는 객체 목록 작업 및 기타 폴더 관련 작업의 실적에 영향을 줄 수 있습니다. 다음은 빈 폴더를 삭제하는 데 사용할 수 있는 몇 가지 방법입니다.

    • Cloud Storage FUSE 또는 Cloud Storage 커넥터를 사용하여 계층적 네임스페이스가 사용 설정된 버킷과 상호작용할 때 디렉터리를 삭제하면 버킷에서 해당 폴더가 삭제됩니다.
    • Google Cloud 콘솔 또는 Google Cloud CLI를 사용할 때 재귀 삭제를 사용하여 폴더를 자동으로 삭제할 수 있습니다.
    • 스크립트나 자동화 프로세스를 사용하여 비어 있는 폴더를 주기적으로 삭제할 수 있습니다. 다음 스크립트는 빈 폴더를 삭제하는 기본적인 접근 방식을 제공합니다. 스크립트는 폴더를 순차적으로 삭제하므로 대용량 버킷의 경우 속도가 느려질 수 있으므로 프로덕션 환경에 맞게 스크립트를 최적화하는 것이 좋습니다. 또한 스크립트는 관리 폴더와 연결된 IAM 정책을 포함하여 암시적 또는 명시적으로 생성된 모든 빈 폴더를 삭제합니다. 특정 폴더와 관리 폴더를 유지해야 하는 경우 유지하려는 리소스에 따라 스크립트를 조정합니다.

      # List all the folders under <bucket>/<prefix> and export results into
      # folders.txt
      gcloud storage folders list gs://<bucket>/<prefix> | grep storage_url | sed 's/storage_url: //' > folders.txt
      
      # Reverse the folder list and export results into folders-reverse.txt
      sed '1!G;h;$!d' folders.txt > folders-reverse.txt
      
      # Try deleting each folder in the reverse order (to guarantee child
      # folders are deleted before parent folders). This will fail for
      # non-empty folders, so only empty folders will be deleted
      xargs -I{} gcloud storage folders delete "{}" < folders-reverse.txt
      

다음 단계