Cassandra सरल डेटाबेस उदाहरण के साथ डेटा मॉडल
हालांकि Cassandra क्वेरी भाषा से मिलता जुलता है एसक्यूएल भाषा के संदर्भ में, उनकी डेटा मॉडलिंग पद्धतियां पूरी तरह से भिन्न हैं।
In Cassandraएक खराब डेटा मॉडल प्रदर्शन को ख़राब कर सकता है, खासकर जब उपयोगकर्ता RDBMS अवधारणाओं को लागू करने का प्रयास करते हैं Cassandraनीचे दिए गए कुछ नियमों को ध्यान में रखना सबसे अच्छा है।
Cassandra डेटा मॉडल नियम
In Cassandra, लिखना महंगा नहीं है। Cassandra जॉइन, ग्रुप बाय, OR क्लॉज, एग्रीगेशन आदि का समर्थन नहीं करता है। इसलिए आपको अपने डेटा को इस तरह से स्टोर करना होगा कि वह पूरी तरह से पुनर्प्राप्त करने योग्य हो। इसलिए डेटा मॉडलिंग करते समय इन नियमों को ध्यान में रखना चाहिए Cassandra.
लेखन की संख्या अधिकतम करें
In Cassandra, लेखन बहुत सस्ता है. Cassandra उच्च लेखन प्रदर्शन के लिए अनुकूलित है। इसलिए बेहतर पठन प्रदर्शन और डेटा उपलब्धता के लिए अपने लेखन को अधिकतम करने का प्रयास करें। डेटा लेखन और डेटा पढ़ने के बीच एक समझौता है। इसलिए, डेटा लेखन की संख्या को अधिकतम करके अपने डेटा पढ़ने के प्रदर्शन को अनुकूलित करें।
डेटा डुप्लिकेशन को अधिकतम करें
डेटा डीनॉर्मलाइज़ेशन और डेटा डुप्लीकेशन वास्तव में Cassandraडिस्क स्पेस मेमोरी, सीपीयू प्रोसेसिंग और आईओ ऑपरेशन से ज्यादा महंगा नहीं है। Cassandra यह एक वितरित डेटाबेस है, इसलिए डेटा दोहराव से डेटा की तत्काल उपलब्धता होती है और इसमें विफलता का कोई एकल बिंदु नहीं होता है।
Cassandra डेटा मॉडलिंग लक्ष्य
डेटा मॉडलिंग करते समय आपके पास निम्नलिखित लक्ष्य होने चाहिए Cassandra:
डेटा को समान रूप से चारों ओर फैलाएं Cluster
आप प्रत्येक नोड पर समान मात्रा में डेटा चाहते हैं Cassandra Clusterडेटा विभाजन कुंजियों के आधार पर अलग-अलग नोड्स में फैलाया जाता है जो प्राथमिक कुंजी का पहला भाग है। इसलिए, क्लस्टर के चारों ओर समान रूप से डेटा फैलाने के लिए पूर्णांक को प्राथमिक कुंजी के रूप में चुनने का प्रयास करें।
डेटा क्वेरी करते समय पढ़े जाने वाले विभाजनों की संख्या न्यूनतम करें
विभाजन एक ही विभाजन कुंजी वाले रिकॉर्ड का एक समूह है। जब रीड क्वेरी जारी की जाती है, तो यह अलग-अलग विभाजनों से अलग-अलग नोड्स से डेटा एकत्र करता है।
यदि कई विभाजन होंगे, तो क्वेरी डेटा एकत्र करने के लिए इन सभी विभाजनों पर जाना होगा।
इसका मतलब यह नहीं है कि विभाजन नहीं बनाए जाने चाहिए। यदि आपका डेटा बहुत बड़ा है, तो आप उस विशाल डेटा को एकल विभाजन पर नहीं रख सकते। एकल विभाजन धीमा हो जाएगा।
इसलिए विभाजनों की संतुलित संख्या चुनने का प्रयास करें।
अच्छी प्राथमिक कुंजी Cassandra
आइये एक उदाहरण लें और पता लगाएं कि कौन सी प्राथमिक कुंजी अच्छी है।
यहां संगीत प्लेलिस्ट तालिका है।
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key(SongId, SongName) );
उपरोक्त उदाहरण में, तालिका MusicPlaylist,
- Songid विभाजन कुंजी है, और
- SongName क्लस्टरिंग कॉलम है
- डेटा को SongName के आधार पर क्लस्टर किया जाएगा। SongId के साथ केवल एक विभाजन बनाया जाएगा। MusicPlaylist तालिका में कोई अन्य विभाजन नहीं होगा।
खराब प्राथमिक कुंजी के कारण इस डेटा मॉडल द्वारा डेटा पुनर्प्राप्ति धीमी होगी।
यहाँ एक और तालिका है MusicPlaylist.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key((SongId, Year), SongName) );
उपरोक्त उदाहरण में, तालिका MusicPlaylist,
- Songid और वर्ष विभाजन कुंजी हैं, और
- SongName क्लस्टरिंग कॉलम है.
- SongName के आधार पर डेटा को क्लस्टर किया जाएगा। इस टेबल में हर साल एक नया पार्टीशन बनाया जाएगा। साल के सभी गाने एक ही नोड पर होंगे। यह प्राइमरी की डेटा के लिए बहुत उपयोगी होगी।
इस डेटा मॉडल से हमारी डेटा पुनर्प्राप्ति तेज़ हो जाएगी।
अपने डेटा को मॉडल करें Cassandra
अपने प्रश्नों को तैयार करते समय निम्नलिखित बातों को ध्यान में रखना चाहिए:
निर्धारित करें कि आप किन प्रश्नों का समर्थन करना चाहते हैं
सबसे पहले, यह निर्धारित करें कि आप क्या प्रश्न चाहते हैं।
उदाहरण के लिए, क्या आपको ज़रूरत है?
- जुड़ती
- समूह द्वारा
- किस कॉलम पर फ़िल्टर करना है आदि।
अपनी क्वेरी के अनुसार तालिका बनाएं
अपनी क्वेरीज़ के अनुसार टेबल बनाएँ। ऐसी टेबल बनाएँ जो आपकी क्वेरीज़ को संतुष्ट करे। टेबल को इस तरह बनाने की कोशिश करें कि कम से कम संख्या में पार्टिशन को पढ़ने की ज़रूरत पड़े।
एक से एक रिश्ते को संभालना Cassandra
एक से एक संबंध का मतलब है कि दो तालिकाओं में एक से एक पत्राचार है। उदाहरण के लिए, छात्र केवल एक ही कोर्स रजिस्टर कर सकता है, और मैं एक छात्र पर यह खोजना चाहता हूं कि कोई विशेष छात्र किस कोर्स में रजिस्टर है।
इस मामले में, आपकी तालिका स्कीमा में उस विशेष पाठ्यक्रम से संबंधित छात्र के सभी विवरण शामिल होने चाहिए जैसे पाठ्यक्रम का नाम, छात्र का रोल नंबर, छात्र का नाम आदि।
Create table Student_Course ( Student rollno int primary key, Student_name text, Course_name text, );
एक से अनेक संबंधों को संभालना Cassandra
एक से अनेक संबंधों का अर्थ है दो तालिकाओं के बीच एक से अनेक पत्राचार होना।
उदाहरण के लिए, एक कोर्स का अध्ययन कई छात्र कर सकते हैं। मैं उन सभी छात्रों को खोजना चाहता हूँ जो एक विशेष कोर्स का अध्ययन कर रहे हैं।
इसलिए पाठ्यक्रम के नाम पर पूछताछ करने पर, मुझे कई छात्रों के नाम मिलेंगे जो एक विशेष पाठ्यक्रम का अध्ययन कर रहे होंगे।
Create table Student_Course ( Student_rollno int, Student_name text, Course_name text, );
मैं निम्नलिखित क्वेरी द्वारा किसी विशेष पाठ्यक्रम के सभी छात्रों को पुनः प्राप्त कर सकता हूं।
Select * from Student_Course where Course_name='Course Name';
अनेक से अनेक संबंधों को संभालना Cassandra
अनेक से अनेक संबंधों का अर्थ है दो तालिकाओं के बीच अनेक से अनेक पत्राचार होना।
उदाहरण के लिए, एक पाठ्यक्रम का अध्ययन कई छात्र कर सकते हैं, और एक छात्र भी कई पाठ्यक्रमों का अध्ययन कर सकता है।
मैं उन सभी छात्रों को खोजना चाहता हूं जो एक विशेष पाठ्यक्रम का अध्ययन कर रहे हैं। साथ ही, मैं उन सभी पाठ्यक्रमों को खोजना चाहता हूं जो एक विशेष छात्र पढ़ रहा है।
तो इस मामले में, मेरे पास दो तालिकाएँ होंगी यानी समस्या को दो मामलों में विभाजित करूँगा।
सबसे पहले, मैं एक तालिका बनाऊंगा जिसके द्वारा आप किसी विशेष छात्र द्वारा चुने गए पाठ्यक्रम ढूंढ सकेंगे।
Create table Student_Course ( Student_rollno int primary key, Student_name text, Course_name text, );
मैं निम्नलिखित क्वेरी द्वारा किसी विशेष छात्र के सभी पाठ्यक्रम पा सकता हूँ।
Select * from Student_Course where student_rollno=rollno;
दूसरा, मैं एक तालिका बनाऊंगा जिससे आप यह जान सकेंगे कि कितने छात्र किसी विशेष पाठ्यक्रम का अध्ययन कर रहे हैं।
Create table Course_Student ( Course_name text primary key, Student_name text, student_rollno int );
मैं निम्नलिखित क्वेरी द्वारा किसी विशेष पाठ्यक्रम में छात्र ढूंढ सकता हूं।
Select * from Course_Student where Course_name=CourseName;
आरडीबीएमएस और के बीच अंतर Cassandra डेटा मॉडलिंग
आरडीबीएमएस | Cassandra |
---|---|
डेटा को सामान्यीकृत रूप में संग्रहीत करता है | डेटा को असामान्यीकृत रूप में संग्रहीत करता है |
विरासत dbms; संरचित डेटा | विस्तृत पंक्ति भंडारण, गतिशील; संरचित और असंरचित डेटा |
सारांश
- डेटा मॉडलिंग Cassandra अन्य से अलग है आरडीबीएमएस डेटाबेस.
- Cassandra डेटा मॉडलिंग के कुछ नियम हैं। अच्छे डेटा मॉडलिंग के लिए इन नियमों का पालन किया जाना चाहिए। इन नियमों के अलावा, हमने तीन अलग-अलग डेटा मॉडलिंग मामलों को देखा और उनसे निपटने का तरीका भी देखा।
- एक से एक संबंध का अर्थ है कि दो तालिकाओं में एक से एक पत्राचार है।
- एक से अनेक संबंधों का अर्थ है दो तालिकाओं के बीच एक से अनेक पत्राचार होना।
- अनेक से अनेक संबंधों का अर्थ है दो तालिकाओं के बीच अनेक से अनेक पत्राचार होना।