2011-11-16 7 views
62

तो परिदृश्य निम्न है:क्या यह बहुत छोटा एज़ूर स्टोरेज ब्लोब कंटेनर (प्रत्येक ब्लब्स के साथ प्रत्येक) या ब्लॉब्स के साथ वास्तव में एक बड़ा कंटेनर बेहतर है?

मेरे पास एक वेब सेवा के कई उदाहरण हैं जो Azure संग्रहण में डेटा का एक ब्लॉब लिखते हैं। जब मुझे प्राप्त हुआ था, तो मुझे ब्लॉब्स को एक कंटेनर (या वर्चुअल निर्देशिका) में समूहित करने में सक्षम होना चाहिए। एक बार थोड़ी देर में (हर दिन सबसे खराब) पुराने ब्लब्स संसाधित हो जाएंगे और फिर हटा दिए जाएंगे।

विकल्प 1

मैं एक कंटेनर बुलाया "धब्बे" (उदाहरण के लिए) बनाने के लिए और फिर उस कंटेनर में सभी ब्लॉगों की दुकान:

मैं दो विकल्प हैं। प्रत्येक ब्लॉब एक ​​निर्देशिका शैली नाम का उपयोग निर्देशिका नाम के साथ प्राप्त होने के समय के साथ करेगा (उदाहरण के लिए "hr0min0/data.bin", "hr0min0/data2.bin", "hr0min30/data3.bin", "hr1min45/data.bin ", ...," hr23min0/dataN.bin ", आदि - एक नई निर्देशिका प्रत्येक एक्स मिनट)। इन ब्लॉब्स को संसाधित करने वाली चीज पहले hr0min0 ब्लब्स को संसाधित करेगी, फिर hr0minX और इसी तरह (और संसाधित होने पर ब्लब्स अभी भी लिखे जा रहे हैं)।

विकल्प 2

मैं कई कंटेनरों एक नाम आगमन समय के आधार पर प्रत्येक के साथ (ताकि पहले एक कंटेनर blobs_hr0min0 कहा जाता है तो blobs_hr0minX, आदि हो जाएगा) और कंटेनर में सभी धब्बे है उन धब्बे हैं कि नामित समय पर पहुंचे। जो चीज इन ब्लॉगों को संसाधित करती है वह एक समय में एक कंटेनर को संसाधित करेगी।

तो मेरा सवाल यह है कि कौन सा विकल्प बेहतर है? क्या विकल्प 2 मुझे बेहतर समांतरता देता है (क्योंकि एक कंटेनर विभिन्न सर्वरों में हो सकता है) या विकल्प 1 बेहतर है क्योंकि कई कंटेनर अन्य अज्ञात मुद्दों का कारण बन सकते हैं?

उत्तर

46

मुझे नहीं लगता कि यह वास्तव में मायने रखता है (स्केलेबिलिटी/समांतरता परिप्रेक्ष्य से), क्योंकि विन एज़ूर ब्लॉब्स स्टोरेज में विभाजन ब्लॉब स्तर पर किया जाता है, कंटेनर नहीं। विभिन्न कंटेनरों में फैलाने के कारणों को एक्सेस कंट्रोल (जैसे एसएएस) या कुल भंडारण आकार के साथ अधिक करना है।

अधिक जानकारी के लिए यहाँ देखें: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx

("विभाजन" पर नीचे स्क्रॉल)।

का हवाला देते हुए:

Blobs - चूंकि विभाजन कुंजी ब्लॉब नाम करने के लिए नीचे है, तो हम बाहर पैमाने उन तक पहुंच करने के क्रम में के रूप में कई सर्वर पर अलग धब्बे को संतुलन पहुँच लोड कर सकते हैं। यह कंटेनरों को बड़े के रूप में विकसित करने की अनुमति देता है क्योंकि आपको उनकी आवश्यकता होती है (स्टोरेज खाता स्थान सीमा के भीतर)। ट्रेडऑफ यह है कि हम कई ब्लॉब्स पर परमाणु लेनदेन करने की क्षमता प्रदान नहीं करते हैं।

+0

वाह - अच्छा समय ... :) – dunnry

+0

धन्यवाद, यह निर्णय स्पष्ट और आसान बनाता है! – encee

+0

कृपया, ब्लॉब नाम को यथासंभव छोटा रखने की आवश्यकता है? (मेरे पास "ब्लॉब्स के साथ एक बहुत बड़ा कंटेनर है", प्रश्न में विकल्प 1।) – nmit026

18

सैद्धांतिक रूप से बोलते हुए, बहुत सारे कंटेनरों या अधिक ब्लॉब्स वाले कम कंटेनरों के बीच कोई अंतर नहीं होना चाहिए। अतिरिक्त कंटेनर अतिरिक्त सुरक्षा सीमाओं के रूप में अच्छा हो सकते हैं (उदाहरण के लिए सार्वजनिक अनाम पहुंच या विभिन्न एसएएस हस्ताक्षर के लिए)। अतिरिक्त कंटेनर भी छंटनी करते समय हाउसकीपिंग को थोड़ा आसान बना सकते हैं (प्रत्येक ब्लॉब को लक्षित करने वाले बनाम एक कंटेनर को हटाकर)। मैं इन कारणों से अधिक कंटेनरों का उपयोग करता हूं (प्रदर्शन के लिए नहीं)।

सैद्धांतिक रूप से, प्रदर्शन प्रभाव मौजूद नहीं होना चाहिए। ब्लॉब स्वयं (पूर्ण यूआरएल) विंडोज एज़ूर में विभाजन कुंजी है (लंबे समय से रहा है)। यह सबसे छोटी चीज है जो विभाजन सर्वर से लोड-संतुलित होगी। तो, आप अलग-अलग सर्वरों द्वारा उसी कंटेनर में दो अलग-अलग ब्लॉब्स कर सकते हैं (और अक्सर होगा)।

जेरेमी इंगित करता है कि अधिक और कम कंटेनरों के बीच एक प्रदर्शन अंतर है। मैंने उन बेंचमार्कों में डुबकी नहीं डाली है जो यह समझाने के लिए पर्याप्त हैं कि यह मामला क्यों हो सकता है, लेकिन मुझे किसी भी विसंगतियों को समझाने के लिए अन्य कारकों (जैसे आकार, परीक्षण की अवधि इत्यादि) पर संदेह होगा।

+0

:-) बस आपको वोट दिया। –

49

हर किसी ने आपको सीधे ब्लॉब्स तक पहुंचने के लिए उत्कृष्ट उत्तर दिए हैं। हालांकि, अगर आपको कंटेनर में ब्लॉब्स सूचीबद्ध करने की ज़रूरत है, तो आपको कई कंटेनर मॉडल के साथ बेहतर प्रदर्शन दिखाई देगा। मैंने बस एक ऐसी कंपनी से बात की जो एक कंटेनर में बड़ी संख्या में ब्लॉब्स संग्रहित कर रहा है। वे अक्सर कंटेनर में ऑब्जेक्ट्स सूचीबद्ध करते हैं और फिर उन ब्लब्स के सबसेट के खिलाफ क्रियाएं करते हैं। वे एक प्रदर्शन हिट देख रहे हैं, क्योंकि एक पूर्ण लिस्टिंग पुनर्प्राप्त करने का समय बढ़ रहा है।

यह आपके परिदृश्य पर लागू नहीं हो सकता है, लेकिन यह कुछ विचार करने के लिए है ...

+1

यह एक अच्छा मुद्दा है। लिखने के समय (जून 2016) मेरा मानना ​​है कि उस कंटेनर में सभी ब्लॉब्स की सूची प्राप्त करने और सूची की 'गणना' संपत्ति की जांच करने के अलावा कंटेनर में ब्लॉब्स की संख्या की गिनती प्राप्त करने का कोई तरीका नहीं है। –

+0

क्या ब्लॉब नाम को जितना संभव हो सके कम रखने की आवश्यकता है? (मेरे पास "ब्लॉब्स के साथ एक वास्तव में बड़ा कंटेनर है", प्रश्न में विकल्प 1।) – nmit026

0

भी एक और पहलू यह है कि इस में की प्राप्त होती है। मूल्य!

वर्तमान में आपरेशन सूची और कंटेनर बनाएं एक ही कीमत के लिए कर रहे हैं: 0054 यूएस $/10.000 कॉल

एक ही कीमत ब्लॉब लिखने के लिए वास्तव में है।

तो चरम कारण में आप, एक बहुत अधिक भुगतान कर सकते हैं अगर आप को बनाने और हटाने कई कंटेनरों

  • हटाना

आप कैलकुलेटर यहाँ देख सकते हैं नि: शुल्क है: https://azure.microsoft.com/en-us/pricing/calculator/