क्या कई छोटे अज़ूर भंडारण बूँद कंटेनर (प्रत्येक कुछ बूँदें के साथ) या एक सच में बड़े कंटेनर टन टन के साथ बेहतर है?


81

तो परिदृश्य निम्न है:

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

मेरे पास दो विकल्प हैं:

विकल्प 1

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

विकल्प 2

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

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

जवाबों:


61

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

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

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

उद्धरण:

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


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

60

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

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


1
यह लाभप्रद है। लेखन के समय (जून २०१६) मेरा मानना ​​है कि उस कंटेनर में अन्य सभी ब्लब्स की सूची प्राप्त करने और सूची की Countसंपत्ति की जांच करने के अलावा अन्य कंटेनर में ब्लब्स की संख्या प्राप्त करने का कोई तरीका नहीं है।
स्टीवन रेंड्स

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

वास्तव में जिस परिदृश्य से हम बचने की कोशिश कर रहे हैं
ग्लेनिट

21

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

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

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


4

वहाँ भी एक और कारक है कि इस में मिल रहा है। कीमत!

वर्तमान में ऑपरेशन सूची और बनाएँ कंटेनर समान मूल्य के लिए हैं: 0,054 US $ / 10.000 कॉल

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

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

  • डिलीट फ्री है

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.