2011-06-20 13 views
10

कैसंद्रा माध्यमिक-सूचकांक आंतरिक रूप से कैसे काम करता है? डॉक्स राज्य यह हैश सूचकांक के कुछ प्रकार है:कैसंद्रा और माध्यमिक-सूचकांक, वे आंतरिक रूप से कैसे काम करते हैं?

एक CF User में देखते हुए मैं colum username="foobar" (स्तंभ उपयोगकर्ता नाम scondary सूचकांक हो जाएगा) के साथ RandomOrderingPartitioner

  1. मेरी asumption सही है, कि कैसेंड्रा एक का उपयोग करता है "वितरित हैश इंडेक्स" (= इसलिए सूचकांक एक एकल नोड पर नहीं है = सूचकांक विभाजित है)?
  2. इंडेक्स-पार्ट्स कितने नोड्स हैं (प्रतिकृति कारक के समान ही हैं)?
  3. कौन से नोड्स इंडेक्स-पार्ट्स आयोजित किए जाते हैं (क्या कैसंड्रा इंडेक्स को उसी तर्क से रैंडम ऑर्डरिंग पार्टिशनर के साथ कुंजी के रूप में विभाजित करता है)?

  4. मामले में सूचकांक केवल एक नोड पर पकड़ है (और निश्चित रूप से दोहराया का), कैसे "determin" नोड कि ( सूचकांक के लिए जिम्मेदार columname hashing और फिर निर्धारित करने के लिए randompartitioner LOGIK का उपयोग करके है कैसेंड्रा करता है नोड)?

  5. क्या यह वास्तव में सच है, कि यह सूचकांक कम कार्डिनालिटी के लिए अनुकूलित है? यदि हां, तो अनुमानित अनुमान क्या है ( क्या कोई ठोस आंकड़ा है जिसका मैं उपयोग करने के लिए उपयोग कर सकता हूं), कि मुझे माध्यमिक अनुक्रमणिका का उपयोग नहीं करना चाहिए (और इंडेक्स के लिए एक अलग सीएफ का उपयोग करना चाहिए)? या अलग-अलग कहा कि कार्डिनिटी की गणना कैसे करें और सही निर्णय लें?

मैं इसे समझने की कोशिश कर रहा हूं।

+0

अधिक जानकारी के लिए इन पिछले पोस्ट देखना "क्यों?" इस सवाल के पीछे? क्या कोई विशिष्ट समस्या है जिसे आप हल करने का प्रयास कर रहे हैं, या आप बस अपनी समझ में कुछ अंतराल भरने की कोशिश कर रहे हैं? –

+1

अंडरलेइंग प्रश्न "प्रदर्शन" के संबंध में है। इंडेक्स का प्रबंधन "मैन्युअल रूप से" नए सीएफ के रूप में बहुत कठिन है। माध्यमिक सूचकांक बनाए रखना आसान है, लेकिन (जैसा कार्डिनिटी समस्या इंगित करता है) महत्वपूर्ण आवश्यकताओं को पूरा नहीं करता है। इसके अलावा मैं अपने ऐप में अन्य परतों में कुछ इंडेक्सिंग सामान को "ऑफ़लोड" कर सकता हूं। और इसलिए मैं थोड़ा सा समझना चाहता हूं कि द्वितीयक अनुक्रमणिका आंतरिक रूप से कैसे काम करती हैं, उनके प्रो और कान क्या हैं और वे प्रदर्शन के लिए कैसे वास्तविक हैं। – Markus

उत्तर

11

माध्यमिक अनुक्रमणिका मूल रूप से केवल एक और कॉलम परिवार हैं। वे सीधे उपयोगकर्ताओं के लिए सुलभ नहीं हैं, लेकिन आप JMX सेम के माध्यम से आंकड़े देख सकते हैं: org.apache.cassandra.db.IndexedColumnFamilies

आप यहां आंकड़े से परामर्श कर सकते हैं, जैसे आप एक सामान्य अपने सूचकांक की प्रभावशीलता मापने के लिए कॉलम परिवार

How are Cassandra's 0.7 Secondary Indexes stored?

How scalable are automatic secondary indexes in Cassandra 0.7?

और चूंकि आप एक हेक्टर टैग है, यहाँ IndexedSlicesQuery के लिए परीक्षण का मामला करने के लिए एक कड़ी है: https://github.com/rantav/hector/blob/master/core/src/test/java/me/prettyprint/cassandra/model/IndexedSlicesQueryTest.java

+0

मैंने इस उदाहरण का बहुत बारीकी से पालन किया है और मैं डरावना हो रहा हूं: इसके कारण: अमान्य RequestException (क्यों: ऑपरेटर ईक्यू के साथ इंडेक्स क्लॉज में कोई अनुक्रमित कॉलम मौजूद नहीं है) –

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