我們目前在同一個Azure容器下有數千個文件的blob存儲。我們的文件命名規則是這樣的:提高azure blob存儲查詢速度
StorageName \隊伍\工作小組\文件名
我正在寫顯示文件爲每個特定工作小組的工具。該代碼獲取Container的Blob列表,然後爲每個嘗試匹配正確的Team \ Subteam的對象(請參閱下面的示例代碼)。
這有效,但速度非常慢(因爲我需要瀏覽所有文件以查看它們是否與特定的小組匹配)。有沒有提高查詢速度的方法?我可以考慮優化,例如「找到與您正在查找的團隊相匹配的第一個文件,然後在您發現不同的團隊早點退出時保持跟蹤」,但會假定BlobList已排序並且不會修復最壞的情況。
不幸的是,在不同容器下分割文件目前不是一個選項。
下面是示例代碼:
IEnumerable<IListBlobItem> blobs = blobContainer.ListBlobs(
new BlobRequestOptions()
{
UseFlatBlobListing = true,
BlobListingDetails = BlobListingDetails.Metadata
}).OfType<CloudBlob>();
foreach (var blob in blobs) {
var cloudy = blob as CloudBlob;
string blobTeamId = cloudy.Uri.Segments[2].Trim('/');
if (blobTeamId != teamId)
continue;
//Do something interesting with the file
看起來像listblobs確實根據MSDN http://msdn.microsoft.com/en-us/library/dd135734.aspx進行排序。 – krolth 2011-05-11 01:31:34