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