वर्तमान में हमारे पास एक ही Azure कंटेनर के तहत हजारों फाइलों के साथ ब्लॉब स्टोरेज है।एज़ूर ब्लोब स्टोरेज क्वेरीिंग गति में सुधार
StorageName \ टीम \ SubTeam \ FileName
मैं एक उपकरण है जो प्रत्येक विशेष subteam के लिए फ़ाइलों को प्रदर्शित करता है लिख रहा हूँ: हमारे फ़ाइल नामकरण सम्मेलन कुछ इस तरह है। कोड कंटेनर के लिए ब्लॉब्स की सूची प्राप्त करता है और फिर उनमें से प्रत्येक के लिए यह सही टीम \ Subteam से मिलान करने का प्रयास करता है (नमूना कोड के लिए नीचे देखें)।
यह काम करता है लेकिन यह बेहद धीमा है (क्योंकि मुझे यह देखने के लिए सभी फ़ाइलों के माध्यम से जाना होगा कि वे किसी विशेष उपमहाक से मेल खाते हैं)। क्या क्वेरी की गति में सुधार करने का कोई तरीका है? मैं ऑप्टिमाइज़ेशन के बारे में सोच सकता हूं जैसे कि "जिस टीम को आप ढूंढ रहे हैं उससे मेल खाने वाली पहली फ़ाइल ढूंढें और फिर जब आप जल्दी से बाहर निकलने के लिए एक अलग टीम ढूंढें तो ट्रैक रखें" लेकिन यह मान लेगा कि ब्लॉबलिस्ट को सॉर्ट किया गया है और ठीक नहीं होगा सबसे खराब स्थिति परिदृश्य।
दुर्भाग्यवश विभिन्न कंटेनर के तहत फ़ाइलों को विभाजित करना इस समय एक विकल्प नहीं है।
यहाँ नमूना कोड है:
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 वास्तव में एमएसडीएन http://msdn.microsoft.com/en-us/library/dd135734.aspx के अनुसार क्रमबद्ध हैं। – krolth