我们目前在同一个Azure容器下有一个包含数千个文件的blob存储.我们的文件命名约定是这样的:
StorageName \队伍\子团队\文件名
我正在编写一个工具,显示每个特定子团队的文件.代码获取Container的blob列表,然后为每个尝试与正确的Team\Subteam匹配的blob列表(请参阅下面的示例代码).
这有效但速度极慢(因为我需要浏览所有文件以查看它们是否与特定的子团队匹配).有没有办法提高查询的速度?我能想到的优化,比如"寻找球队相匹配的第一个文件,你正在寻找,然后跟踪,当你找到一个不同的团队退出早期",但会假定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
Run Code Online (Sandbox Code Playgroud)