2010-10-06 13 views
12

पर क्वेरी की गति मैं एसक्यूएल एज़ूर और टेबल सर्विस की तुलना करने के बारे में कई पोस्ट और लेख पढ़ूंगा और उनमें से ज्यादातर ने बताया कि तालिका सेवा एसक्यूएल एज़ूर की तुलना में अधिक स्केलेबल है।प्रदर्शन - तालिका सेवा, एसक्यूएल Azure - सम्मिलित करें। बड़ी मात्रा में डेटा

http के लिए क्षमा करें, मैं < लेकिन http://azurescope.cloudapp.net/BenchmarkTestCases/ बेंचमार्क अलग तस्वीर से पता चलता नया उपयोगकर्ता हूँ> _।

मेरा मामला। एसक्यूएल एज़ूर का उपयोग करना: कई प्रविष्टियों वाली एक तालिका, लगभग 172,000,000 प्रति दिन (2000 प्रति सेकेंड)। क्या मैं आवेषण के लिए अच्छा perfomance की उम्मीद कर सकता हूं और जब मेरे पास 2 मिलियन रिकॉर्ड या 99 99 हैं .... एक टेबल में 9 बिलियन रिकॉर्ड?

तालिका सेवा का उपयोग करना: कुछ तालिकाओं के साथ एक तालिका। विभाजन की संख्या बड़ी, बहुत बड़ी हो सकती है।

प्रश्न # 1: तालिका सेवा में एक तालिका में कई, कई, कई विभाजन बनाने के लिए कुछ सीमाएं या सर्वोत्तम अभ्यास है?

प्रश्न # 2: एक ही विभाजन में मेरे पास ऊपर बड़ी एसक्यूएल Azure उदाहरण की तरह छोटी इकाइयां हैं। क्या मैं आवेषण के लिए अच्छा प्रदर्शन की उम्मीद कर सकता हूं और चुन सकता हूं कि मेरे पास एक विभाजन में 2 मिलियन रिकॉर्ड या 99 99 अरब इकाइयां हैं?

मुझे शेरर्ड या विभाजन समाधान के बारे में पता है, लेकिन यह क्लाउड सेवा है, क्लाउड शक्तिशाली नहीं है और मेरे कोड कौशल के बिना सभी काम करते हैं?

प्रश्न # 3: क्या कोई मुझे SQL Azure और Table Service के लिए बड़ी मात्रा में डेटा पर quering के लिए मानक दिखा सकता है?

प्रश्न # 4: क्या आप मेरे मामले के लिए बेहतर समाधान सुझा सकते हैं।

उत्तर

6

लघु उत्तर

  1. मैंने नहीं देखा है विभाजन के बहुत सारे Azure टेबल्स (AZT) समस्याओं के कारण है, लेकिन मैं डेटा की इस मात्रा की जरूरत नहीं है।
  2. एक विभाजन में और अधिक आइटम, कि विभाजन में धीमी प्रश्नों
  3. क्षमा नहीं, मैं नहीं है मानक
  4. नीचे

लांग उत्तर

देखें में अपने अगर मुझे संदेह है कि एसक्यूएल एज़ूर डेटाबेस के आकार पर सीमाओं की वजह से एसक्यूएल एज़ूर आपके लिए काम नहीं कर रहा है। यदि आप जिन पंक्तियों को सम्मिलित कर रहे हैं उनमें से प्रत्येक इंडेक्स के साथ 1K है तो आप लगभग 300 दिनों में 50 जीबी सीमा को दबाएंगे। यह सच है कि माइक्रोसॉफ्ट 50 जीबी से बड़े डेटाबेस के बारे में बात कर रहा है, लेकिन उन्होंने उस पर कोई फ्रेम फ्रेम नहीं दिया है। एसक्यूएल एज़ूर में एक थ्रूपुट सीमा भी है जो मैं इस बिंदु पर नहीं ढूंढ पा रहा हूं (मुझे यकीन है कि यह आपको जो चाहिए उससे कम है)। आप एक से अधिक SQL Azure डेटाबेस में अपने डेटा को विभाजित करके इसे प्राप्त करने में सक्षम हो सकते हैं।

एसक्यूएल एज़ूर का लाभ कुल प्रश्नों को चलाने की क्षमता है। एजेडटी में आप प्रत्येक ग्राहक को लोड किए बिना select count(*) from customer भी लिख नहीं सकते हैं।

एजेडटी में प्रति सेकंड प्रति सेकंड 500 लेनदेन की सीमा है, और "several thousand" per second per account की सीमा है।

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

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

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

मेरे सामने आने वाली सभी परिस्थितियों में, बहुत से विभाजन होने से एज़टी बहुत ज्यादा चिंता नहीं होती है।

एजेडटी में आपके डेटा को विभाजित करने का एक और तरीका जिसका अक्सर उल्लेख नहीं किया जाता है, डेटा को विभिन्न तालिकाओं में रखना है। उदाहरण के लिए, आप प्रत्येक दिन के लिए एक टेबल बनाना चाहते हैं। यदि आप पिछले सप्ताह के लिए एक क्वेरी चलाने के लिए चाहते हैं, तो 7 अलग-अलग तालिकाओं के खिलाफ एक ही क्वेरी चलाएं। यदि आप क्लाइंट एंड पर थोड़ा सा काम करने के लिए तैयार हैं तो आप उन्हें समानांतर में भी चला सकते हैं।

+0

मेरी चुप्पी के बारे में खेद है, मैंने क्लाउड कंप्यूटिंग में ड्रिल कर दिया है और कुछ छोटा शोध किया है। यह आसान तनाव परीक्षण है। अब आंकड़े एकत्र करने के लिए समय चाहिए और कुछ दिन मैं अपना परिणाम साझा करता हूं, मुझे लगता है :) – tartrius

+0

मैं इस संदेश को msdn मंच पर पोस्ट कर रहा हूं http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/ bacc5dd0-0883-4df7-a2d1-47d8a720cbbe? प्रोफेसर = की आवश्यकता है। यदि आप इसे दिलचस्प करते हैं तो उत्तर पढ़ें – tartrius

संबंधित मुद्दे