2014-12-16 5 views
6

Blob 저장소에 일부 이미지를 동시에로드하는 작업이 있습니다. 얼룩의 이름은 얼룩의 md5로 정의됩니다. 다른 스레드가 다른 위치에서 동일한 파일을로드하려고 시도 할 수 있습니다.동일한 이름의 Azure Blob 저장소에 Blob 만들기 동시에

이제는 이미 같은 blob을 업로드하려고 시도하는 경우 다른 파일이 동일한 파일을로드하는 것을 차단하는 방법을 알아야합니다.

답변

5

낙천적 동시성을 사용하여 임대하지 않고 수행 할 수 있습니다. 이 blob이이 이름을 가진 blob의 모든 etag와 다를 것이라고 말하는 액세스 조건을 기본적으로 설정하십시오. 실제로 일부 etag을 가진 얼룩이 있다면 두 번째 업로드가 실패합니다.

var access = AccessCondition.GenerateIfNoneMatchCondition("*"); 
await blobRef.UploadFromStreamAsync(stream, access, null, null); 
+0

블롭이없고 두 프로세스가 동일한 파일을 동시에 업로드하기 시작하면 어떻게됩니까? 내가 잘못 본 것이 아니라면,이 특정 접근 조건에 대해 입방체가 저장소에 있어야합니다. –

+1

저장소에 반드시 있어야합니다. 우리는 현재이 방법을 사용하고 있습니다. 푸른 색 기억 장치를 올바르게 이해하면 두 프로세스 모두 데이터를 업로드합니다. 결국 매니페스트가 블롭 이름으로 여러 부분을 결합하여 업로드됩니다. 이것은 원자 적 연산이며 호출 중 하나만 성공합니다. –

+0

감사합니다. 나는 그것을 결코 시도하지 않았다. 그래서 나는 호기심을 가지고 있었다. 시나리오에서는 블록을 블록으로 분할하고 블록을 업로드합니다. blob이 정말로 작아서 부분으로 분해되지 않는 시나리오로 해본 적이 있습니까? –

관련 문제