3.5.2. Swift 컨테이너 작업
컨테이너는 데이터 오브젝트를 저장하는 메커니즘입니다. 계정에는 여러 컨테이너가 있을 수 있지만 컨테이너 이름은 고유해야 합니다. 이 API를 사용하면 클라이언트는 컨테이너를 생성하고, 액세스 제어 및 메타데이터를 설정하고, 컨테이너의 콘텐츠를 검색하고, 컨테이너를 삭제할 수 있습니다. 이 API는 특정 사용자 계정의 정보와 관련된 요청을 하므로 컨테이너의 액세스 제어가 의도적으로 공개적으로 액세스할 수 있는 경우를 제외하고 이 API의 모든 요청을 인증해야 합니다. 즉 익명의 요청을 허용합니다.
Amazon S3 API는 'bucket'이라는 용어를 사용하여 데이터 컨테이너를 설명합니다. 다른 사람이 Swift API에서 'bucket'을 참조하는 것을 들으면 'bucket'이라는 용어는 'container.' 용어와 동등한 것으로 해석될 수 있습니다.
오브젝트 스토리지의 한 가지 기능은 계층적 경로 또는 디렉터리를 지원하지 않는다는 것입니다. 대신 각 컨테이너에 오브젝트가 포함될 수 있는 하나 이상의 컨테이너로 구성된 하나의 수준을 지원합니다. RADOS 게이트웨이의 Swift 호환 API는 'pseudo-hierarchical containers'의 개념을 지원합니다. 이는 오브젝트 이름 지정을 사용하여 컨테이너 또는 디렉터리 계층 구조를 실제로 스토리지 시스템에서 구현하지 않고 구현하는 수단입니다. pseudo-hierarchical 이름으로 오브젝트의 이름을 지정할 수 있습니다(예: photo/buildings/empire-state.jpg)이지만 컨테이너 이름에는 슬래시(/
) 문자를 포함할 수 없습니다.
대용량 오브젝트를 버전 Swift 컨테이너에 업로드할 때 python-swiftclient
유틸리티와 함께 --leave-segments
옵션을 사용합니다. --leave-segments
를 사용하지 않는 경우 매니페스트 파일을 덮어씁니다. 따라서 기존 개체를 덮어쓰면 데이터 손실로 이어집니다.Consequently, an existing object is overwritten, which leads to data loss.