我们目前在同一个 Azure 容器下有一个包含数千个文件的 Blob 存储。我们的文件命名约定是这样的:
存储名称\团队\子团队\文件名
我正在编写一个工具来显示每个特定子团队的文件。代码获取容器的 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