2012-10-03 15 views
18

मैं कैसंद्रा को समझने और अपने कॉलम परिवारों (सीएफ) को कैसे व्यवस्थित करने की कोशिश कर रहा हूं लेकिन यह काफी कठिन है क्योंकि मुझे डेटाबेस से संबंध बनाने के लिए उपयोग किया जाता है।कैसंड्रा कॉलम कुंजी ऑटो वृद्धि

उदाहरण के लिए यदि मैं सरल users सीएफ बनाता हूं और मैं नई पंक्ति डालने का प्रयास करता हूं, तो मैं MySQL में वृद्धिशील कुंजी कैसे बना सकता हूं?

मैंने कई उदाहरण देखे जहां आप केवल अद्वितीय आईडी के बजाय उपयोगकर्ता नाम डाल देंगे और इससे थोड़ा सा अर्थ होगा, लेकिन यदि मैं चाहता हूं कि उपयोगकर्ता उपयोगकर्ता नाम डुप्लिकेट करें?

मैं कैसे समझ सकता हूं कि जब मैं समझता हूं कि कैसंड्रा > ऑपरेटरों को पसंद नहीं करता है, तो select * from users where something > something2 जैसे कुछ काम नहीं करेगा।

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

तो मूल रूप से मुझे कुछ संक्षिप्त स्पष्टीकरण की आवश्यकता है कि कैसांडा के साथ कैसे शुरुआत करें।

उत्तर

16

आपके प्रश्न काफी सामान्य हैं, लेकिन मुझे इसमें एक स्टैब लेने दें। सबसे पहले, आपको अपने प्रश्नों के संदर्भ में अपने डेटा को मॉडल करने की आवश्यकता है। आरडीबीएमएस के साथ, आप अपने डेटा को कुछ सामान्य रूप में मॉडल करते हैं, फिर बाद में अपने विशिष्ट प्रश्नों के लिए अनुकूलित करें। आप इसे कैसंद्रा के साथ नहीं कर सकते; आपको अपना डेटा लिखना चाहते हैं जिस तरह से आप इसे पढ़ना चाहते हैं। अक्सर इसका मतलब है कि इसे एक से अधिक तरीके से लिखना। आम तौर पर, यदि आप कैसंद्रा के साथ प्रभावी ढंग से काम करना चाहते हैं तो यह आपकी आरडीबीएमएस सोच को पूरी तरह से बहाल करने में मदद करता है।

बारे कुंजियाँ:

  • वे अंगूठी भर में वितरण की इकाई के रूप में कैसेंड्रा में किया जाता है। तो आपकी कुंजी रिंग में एक "मालिक" को धोया और सौंपा जाएगा। वितरण

  • की गारंटी देने के लिए रैंडमपार्टिशनर का उपयोग करें, मान लें कि आप रैंडमपार्टिशनर (आपको चाहिए) का उपयोग करना है, चाबियाँ क्रमबद्ध नहीं हैं। इसका मतलब है कि आप कई प्रकार की चाबियाँ नहीं मांग सकते हैं। हालांकि, आप एक ही क्वेरी में चाबियों की एक सूची मांग सकते हैं।

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

के बारे में क्वेरी विधेय:

  • आप मानते हुए आप इसे सही ढंग से मॉडल आपके प्रश्नों का उत्तर देने डेटा की सीमाओं मिल सकती है।

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

  • आप कॉलम पर द्वितीयक अनुक्रमणिका का उपयोग कर सकते हैं जहां आपके पास कम कार्डिनालिटी है - यह आपको क्वेरी-बाय-वैल्यू कार्यक्षमता देता है।

  • आप अपनी खुद की अनुक्रमणिका बना सकते हैं जहां डेटा को जिस तरह से आप चाहते हैं उसे सॉर्ट किया गया है।

समूह के बारे में:

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

1

आप PlayOrm को देखना चाह सकते हैं। जबकि मैं मानता हूं कि आपको आरडीबीएमएस से बाहर निकलने की ज़रूरत है, कभी-कभी आपकी प्राथमिक कुंजी यूजर आईडी के रूप में गलत विकल्प है। कभी-कभी यह सही विकल्प है (आपकी आवश्यकताओं पर निर्भर करता है)।

PlayOrm नोएसक्यूएल और रिलेशनल अवधारणाओं का मिश्रण है क्योंकि आपको दोनों की आवश्यकता है और आप स्केलेबल-एसक्यूएल को जॉइन और सबकुछ के साथ कर सकते हैं। आपको बस उन टेबलों को विभाजित करने की आवश्यकता है जिन्हें आप मानते हैं कि अरबों/ट्रिलियन पंक्तियों में वृद्धि होगी और आप उन विभाजनों में क्वेरी कर सकते हैं। सीक्यूएल के साथ भी, आपको अपनी टेबल को विभाजित करने की आवश्यकता है। आप किसके द्वारा विभाजन कर सकते हैं? कुछ उपयोग मामलों के लिए समय अच्छा है। दूसरों को ग्राहकों द्वारा विभाजित किया जा सकता है क्योंकि प्रत्येक क्लाइंट वास्तव में आपके नोएसक्यूएल क्लस्टर में मिनी-डेटाबेस है।

जहां तक ​​चाबियां चलती हैं, PlayOrm अद्वितीय "क्लस्टर" कुंजी उत्पन्न करता है जो होस्टनाम-अनन्यडिडिनहाटहोस्ट है, मूल रूप से टाइमयूयूआईडी की तरह, थोड़ा सा और अधिक पठनीय छोड़कर हम ए 1, ए 2, ए 3 इत्यादि के हमारे क्लस्टर में होस्टनाम का उपयोग करते हैं। । आदि

7
अपने पहले प्रश्न के लिए

:

मैं mysql

नहीं की तरह वृद्धिशील कुंजी कर सकते हैं, वास्तव में नहीं - कैसेंड्रा के मूल निवासी नहीं। How to create auto increment IDs in Cassandra - आप अधिक जानकारी के लिए यहां देख सकते हैं: http://srinathsview.blogspot.ch/2012/04/generating-distributed-sequence-number.html

आपका दूसरा प्रश्न इस बारे में अधिक है कि आप अपने कैसंड्रा डेटा को कैसे स्टोर और मॉडल करते हैं।

स्टैक ओवरफ्लो के खोज विकल्प को देखें। दिलचस्प सवाल के बहुत सारे!

  1. Switching from MySQL to Cassandra - Pros/Cons?
  2. Cassandra Data Model
  3. Cassandra/NoSQL newbie: the right way to model?
  4. Apache Cassandra schema design
  5. Knowledge sources for Apache Cassandra

सबसे महत्वपूर्ण बात, When NOT to use Cassandra?

+0

कैसेंड्रा sup बंदरगाह काउंटर (https://cassandra.apache.org/doc/cql3/CQL.html#counters), हालांकि कुछ सीमाएं हैं। –

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