Cassandra संग्रह: उदाहरण के साथ CQL में सेट, सूची और मानचित्र
⚡ स्मार्ट सारांश
Cassandra संग्रह सेट, सूची और मानचित्र प्रकारों का उपयोग करके एक ही कॉलम में कई मानों को संग्रहीत करते हैं। यह पृष्ठ प्रत्येक प्रकार, उन्हें बनाने और उनमें डेटा भरने के लिए CQL सिंटैक्स, तत्वों को अपडेट करने का तरीका और आकार सीमाएँ बताता है जो यह निर्धारित करती हैं कि संग्रह का उपयोग कब अनुचित है।

क्या हैं Cassandra संग्रह?
Cassandra संग्रह कार्यों को संभालने का एक अच्छा तरीका है। संग्रह में कई तत्व संग्रहीत किए जा सकते हैं। इसमें सीमाएँ हैं Cassandra संग्रह।
- एक कलेक्शन कॉलम एक ही वैल्यू में 64 केबी से अधिक डेटा स्टोर नहीं कर सकता है।
- संग्रह को छोटा रखें ताकि संग्रह को क्वेरी करने का अतिरिक्त भार न पड़े, क्योंकि पूरे संग्रह को तब भी पढ़ा जाता है जब केवल एक तत्व की आवश्यकता होती है।
- 64 केबी से अधिक डेटा स्टोर करने का मतलब है कि केवल पहले 64 केबी डेटा को ही क्वेरी किया जा सकता है, जिसके परिणामस्वरूप डेटा का नुकसान होता है।
- एक अनफ्रोजन संग्रह लगभग 65,535 तत्वों तक सीमित है, और प्रत्येक तत्व को एक इकाई के रूप में एक साथ पढ़ा जाता है।
ये सीमाएँ एक नियम की ओर इशारा करती हैं: संग्रह किसी पंक्ति से जुड़े कुछ ही गुणों के लिए उपयुक्त होते हैं, न कि उपयोग के साथ बढ़ने वाली असीमित सूची के लिए। जो कुछ भी लगातार बढ़ता रहता है, उसे अपनी ही तालिका के क्लस्टरिंग कॉलम में रखना चाहिए।
के प्रकार Cassandra संग्रह
मुख्यतः तीन प्रकार के संग्रह होते हैं Cassandra का समर्थन करता है:
- सेट
- सूची
- नक्शा
Cassandra सेट संग्रह
एक सेट तत्वों के समूह को संग्रहीत करता है जो क्वेरी करते समय क्रमबद्ध तत्वों को लौटाता है।
वाक्य - विन्यास
यहां सेट संग्रह का सिंटैक्स दिया गया है जो शिक्षक के लिए एकाधिक ईमेल पते संग्रहीत करता है।
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
उदाहरण
यहां स्नैपशॉट दिया गया है जहां तालिका “शिक्षक” को “ईमेल” कॉलम के साथ एक संग्रह के रूप में बनाया गया है।
यहां वह स्नैपशॉट है जहां डेटा को संग्रह में डाला जा रहा है।
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
पूरे सेट को दोबारा लिखे बिना ही अलग-अलग तत्वों को जोड़ा या हटाया जा सकता है, जो किसी संग्रह को अनफ्रीज छोड़ने का मुख्य लाभ है।
UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1; UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;
Cassandra सूची संग्रह
जब तत्वों का क्रम मायने रखता है, तो सूची का उपयोग किया जाता है।
उदाहरण
यहां वह स्नैपशॉट है जहां "शिक्षक" तालिका में सूची प्रकार के कॉलम पाठ्यक्रम जोड़े गए हैं।
ALTER TABLE University.Teacher ADD coursenames list<text>;
यहां स्नैपशॉट है जहां डेटा को कॉलम “कोर्सनेम्स” में डाला जा रहा है।
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
यहां स्नैपशॉट है जो सम्मिलन के बाद वर्तमान डेटाबेस स्थिति को दर्शाता है।
तत्वों को जोड़ा या पहले जोड़ा जा सकता है, हालांकि पहले जोड़ने और इंडेक्स द्वारा अपडेट करने दोनों के लिए आवश्यकता होती है Cassandra सूची को पहले पढ़ने से वे जोड़ने की तुलना में धीमे हो जाते हैं।
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra मानचित्र संग्रह
मैप एक संग्रह प्रकार है जिसका उपयोग कुंजी मान जोड़े को संग्रहीत करने के लिए किया जाता है। जैसा कि इसके नाम से पता चलता है कि यह एक चीज़ को दूसरी चीज़ से मैप करता है।
उदाहरण के लिए, यदि आप पाठ्यक्रम का नाम उसके पूर्वापेक्षित पाठ्यक्रम नाम के साथ सहेजना चाहते हैं, तो मानचित्र संग्रह का उपयोग किया जा सकता है।
उदाहरण
यहां वह स्नैपशॉट है जहां पाठ्यक्रम नाम और उसके पूर्वापेक्षित पाठ्यक्रम नाम के लिए मानचित्र प्रकार बनाया गया है।
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
यहां वह स्नैपशॉट है जहां डेटा को मानचित्र संग्रह प्रकार में डाला जा रहा है।
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
मानचित्र के बाकी हिस्सों को छुए बिना ही एक प्रविष्टि को सेट या हटाया जा सकता है।
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
सेट बनाम सूची बनाम मानचित्र: संग्रह का चयन करना
ये तीनों प्रकार देखने में एक जैसे लगते हैं लेकिन ऑर्डर करने की गारंटी और अपडेट की लागत में भिन्न होते हैं।
| पहलू | सेट | सूची | नक्शा |
|---|---|---|---|
| आदेश | मान के अनुसार क्रमबद्ध | सम्मिलन क्रम संरक्षित | कुंजी के अनुसार क्रमबद्ध |
| डुप्लिकेट | अनुमति नहीं | रख सकते है | चाबियाँ अद्वितीय |
| अद्यतन लागत | सस्ता, पढ़ने की कोई आवश्यकता नहीं | जोड़ना सस्ता है; पहले जोड़ना और इंडेक्स अपडेट करने के लिए रीड कमांड की आवश्यकता होती है। | प्रति कुंजी सस्ता |
| के लिए सबसे अच्छा | टैग, ईमेल पते, विशिष्ट लेबल | क्रमबद्ध चरण जहां दोहराव सार्थक हैं | अप्रत्याशित कुंजियों वाले नामित विशेषताएँ |
जब तक क्रम वास्तव में मायने न रखता हो, सूची के बजाय सेट को प्राथमिकता दें, क्योंकि सूची अनुक्रमणिका संचालन से त्रुटि उत्पन्न होती है और समवर्ती लेखन के दौरान अप्रत्याशित परिणाम मिल सकते हैं। जमे हुए इन तीनों में से किसी भी स्टोर में इसे एक अपरिवर्तनीय मान के रूप में संग्रहीत किया जाता है, जो संग्रह को प्राथमिक कुंजी में दिखाई देने की अनुमति देता है लेकिन तत्व-स्तर के अपडेट को हटा देता है।
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
जब किसी संग्रह में कुछ दर्जन से अधिक तत्व हों, तो उसे एक अलग तालिका के रूप में मॉडल करें, जिसमें तत्व को क्लस्टरिंग कॉलम के रूप में उपयोग किया जाए, जैसा कि नीचे दिए गए दृष्टिकोण में बताया गया है। Cassandra डेटा मॉडल नियमसंग्रह की सामग्री पर फ़िल्टरिंग के लिए एक इंडेक्स की आवश्यकता होती है, जिसका विवरण इसमें दिया गया है। इंडेक्स बनाएं और हटाएं ट्यूटोरियल।






