2013-10-08 9 views
6

जब मैंने इन दोनों के बारे में पढ़ा, तो मैंने सोचा कि वे दोनों एक ही दृष्टिकोण को समझा रहे हैं, मैंने गुगल किया लेकिन कुछ भी नहीं मिला। कार्यान्वयन में अंतर है? कैसंद्रा द्वितीयक इंडेक्स स्वयं करता है लेकिन उलटा इंडेक्स खुद ही लागू किया जाना चाहिए?कैसंड्रा में एक द्वितीयक सूचकांक और एक उलटा सूचकांक के बीच क्या अंतर है?

जो खोज में तेजी से है, वैसे?

उत्तर

12

मुख्य अंतर यह है कि कैसंद्रा में द्वितीयक अनुक्रमणिका उसी तरह वितरित नहीं की जाती है जैसे मैन्युअल उलटा इंडेक्स होगा। अंतर्निहित माध्यमिक इंडेक्स के साथ, प्रत्येक नोड उस डेटा को इंडेक्स करता है जो इसे स्थानीय रूप से संग्रहीत करता है (स्थानीय पार्टिशनर का उपयोग करके)। मैन्युअल इंडेक्सिंग के साथ, इंडेक्स को नोड्स से स्वतंत्र रूप से वितरित किया जाता है जो मानों को संग्रहित करते हैं।

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

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

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

+3

इस प्रश्न से प्रेरित, मैंने अपने ब्लॉग पर एक और विस्तृत उत्तर लिखा: www.wentnet.com/blog/?p=77 – Richard

+0

डेटाबेस कनेक्शन विफलता की विडंबना – devshorts

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