2013-01-14 2 views

답변

7

당신은 그위한 Guid를 사용할 수 있습니다

Sandrino는 일부 타사 라이브러리를 고려할 수 있습니다 ( 중복되는 매우 낮은 확률이 GUID를 사용하는) 말 이외에
string blobName = Guid.NewGuid().ToString(); 
4

하는 충돌이없는 식별자의 예를 생성합니다 Flake ID Generator

편집

,

Herve은 BLOB 이름과 함께 고려해야하는 매우 유효한 Azure Blob 기능을 지적했습니다. 즉, Azure 저장소로드 균형 조정 및 BLOB 파티셔닝입니다.

Azure는 모든 blob을 파티션 서버에 보관합니다. 특정 blob을 저장하는 데 사용해야하는 파티션 서버는 blob 컨테이너와 blob 파일 이름에서 결정됩니다. 불행히도 나는 blobs 파티셔닝에 사용 된 알고리즘을 발견하고 문서화 할 수 없었다.

Azure Blob 아키텍처에 대한 자세한 내용은 Windows Azure Storage Architecture Overview 문서에서 확인할 수 있습니다.

4

"삽입시 고유 한 이름을 생성하는 것은 없습니다. 당신은 미리 이름을 생각해 내야합니다.

BLOB의 이름을 선택할 때 어떤 종류의 순차 번호를 생성하는 알고리즘을 사용할 때주의해야합니다 (BLOB 이름의 시작 또는 끝 부분에 있음). Azure Storage는로드 밸런싱의 이름에 의존합니다. 순차 값을 사용하면 Azure가 해당 저장 장치를 적절히로드 밸런싱하지 못하게 할 수 있기 때문에 Azure Blob에 액세스/쓰기 할 때 경합이 발생할 수 있습니다. 각 노드 (예 : 서버)에서 60MB/초를 얻습니다. 따라서 적절한로드 밸런싱을 보장하고 여러 스토리지 노드에서 60MB/Sec를 활용하려면 얼룩에 임의의 이름을 사용해야합니다. Sandrino가 추천하는대로이 문제를 피하기 위해 일반적으로 Guids를 사용합니다.

+0

매우 유효한 포인트 (+1)입니다. BTW, blob 스토리지 노드간에 * blob *을 배포하기 위해 파티션 계층에서 사용되는 알고리즘을 설명하는 기사에 대한 참조가 있습니까? 나는 그것이 문제의 관점에서 매우 유익 할 것이라고 생각한다. – Tom

+0

아니요. 이 일이 (기본 세부 사항없이) 계속되었다는 사실에 관한 미시시피 기사가 있었지만, 나는 그것을 더 이상 찾을 수 없다 ... 내가 링크를 찾으면 나는 게시 할 것이다. MS가 파티션을 통해 수행하는 작업을 제어 할 수 없으며 데이터 및 다른 테넌트 데이터 사용에 따라 동적 일 수 있습니다. 그래서 내가하는 것은 기본 액세스 레이어를 비 결정적으로 취급한다는 것입니다. –

+0

그 정도면 충분합니다. 나는 Azure Storage 아키텍처를 설명하는 블로그에 대한 링크를 다음과 같이 발견했습니다 : http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/windows-azure-storage-architecture-overview.aspx – Tom