Cassandra CQL टेबल: निर्माण, परिवर्तन और ट्रंकेट का उदाहरण

⚡ स्मार्ट सारांश

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

  • 🏗️ तालिका बनाएं: एक टेबल को कीस्पेस, कॉलम परिभाषाओं और एक प्राइमरी की क्लॉज़ की आवश्यकता होती है जो वितरण और सॉर्ट क्रम को निर्धारित करता है।
  • 🔑 एकल प्राथमिक कुंजी: एक कॉलम विभाजन कुंजी के रूप में कार्य करता है, इसलिए उस मान की प्रत्येक पंक्ति एक ही नोड पर आती है।
  • 🧩 संयुक्त प्राथमिक कुंजी: पहला कॉलम पंक्तियों को विभाजित करता है, शेष कॉलम उन्हें समूहित करते हैं और विभाजन के भीतर पंक्तियों को क्रमबद्ध करते हैं।
  • 🧮 संयुक्त विभाजन कुंजी: दो स्तंभों को ब्रैकेट में रखने से एक बड़े आकार के विभाजन को कई छोटे-छोटे विभाजनों में विभाजित किया जा सकता है।
  • सीमाएँ बदलें: कॉलम जोड़े या हटाए जा सकते हैं, लेकिन प्राइमरी की कॉलम को कभी भी बदला नहीं जा सकता है।
  • ड्रॉप बनाम ट्रंकेट: ड्रॉप कमांड स्कीमा और डेटा को हटा देता है; ट्रंकेट कमांड प्रत्येक पंक्ति को खाली कर देता है लेकिन टेबल की परिभाषा को बरकरार रखता है।

Cassandra टेबल बनाएं बदलें हटाएं

का वाक्य विन्यास Cassandra क्वेरी भाषा (CQL) मिलती-जुलती है एसक्यूएल भाषा।

टेबल कैसे बनाएं? Cassandra

कॉलम परिवार में Cassandra RDBMS टेबल के समान है। कॉलम परिवार का उपयोग डेटा संग्रहीत करने के लिए किया जाता है।

कमांड 'Create Table' का उपयोग कॉलम परिवार बनाने के लिए किया जाता है Cassandra.

वाक्य - विन्यास

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. प्राथमिक कुंजी: दो प्रकार के होते हैं प्राथमिक कुंजी.

  • एकल प्राथमिक कुंजी: एकल प्राथमिक कुंजी निम्नलिखित सिंटैक्स द्वारा निर्दिष्ट की जाती है।

वाक्य - विन्यास

PRIMARY KEY (ColumnName)

सिंगल प्राइमरी की में सिर्फ़ एक कॉलम होता है। उस कॉलम को पार्टीशनिंग की भी कहते हैं। उस कॉलम के आधार पर डेटा का विभाजन होता है। डेटा को पार्टीशनिंग की के आधार पर अलग-अलग नोड्स पर फैलाया जाता है।

2. मिश्रित प्राथमिक कुंजी: संयुक्त प्राथमिक कुंजी निम्नलिखित सिंटैक्स द्वारा निर्दिष्ट की जाती है।

वाक्य - विन्यास

PRIMARY KEY (ColumnName1, ColumnName2, ...)

उपरोक्त सिंटैक्स में, ColumnName1 विभाजन कुंजी है और ColumnName2 है Clusterडेटा को ColumnName1 के आधार पर विभाजित किया जाएगा और डेटा को ColumnName2 के आधार पर क्लस्टर किया जाएगा। Clustering वह प्रक्रिया है जो विभाजन में डेटा को सॉर्ट करती है।

3. संयुक्त विभाजन कुंजी: मिश्रित विभाजन कुंजी निम्नलिखित सिंटैक्स द्वारा निर्दिष्ट की जाती है।

वाक्य - विन्यास

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

ऊपर दिए गए सिंटैक्स में, ColumnName1 और ColumnName2 संयुक्त विभाजन कुंजी हैं। डेटा को ColumnName1 और ColumnName2 दोनों कॉलम के आधार पर विभाजित किया जाएगा और ColumnName3 के आधार पर क्लस्टर किया जाएगा। यदि एक ही विभाजन में बहुत अधिक डेटा है, तो संयुक्त विभाजन कुंजी का उपयोग किया जाता है। संयुक्त विभाजन कुंजी का उपयोग डेटा के लिए कई विभाजन बनाने के लिए किया जाता है।

  • धारा के साथ

“विद क्लॉज” का उपयोग परिभाषित तालिका के लिए किसी भी गुण और उसके मान को निर्दिष्ट करने के लिए किया जाता है। उदाहरण के लिए, यदि आप संपीड़ित करना चाहते हैं Cassandra टेबल डेटा। आप "विद क्लॉज़" में कम्प्रेशन एल्गोरिदम प्रॉपर्टी वैल्यू निर्दिष्ट करके कम्प्रेशन प्रॉपर्टी सेट कर सकते हैं। यही क्लॉज़ क्लस्टरिंग कॉलम की सॉर्ट दिशा को उलटने के लिए CLUSTERING ORDER BY और प्रत्येक पंक्ति के स्वचालित रूप से समाप्त होने के लिए default_time_to_live भी सेट करता है।

उदाहरण

यहां 'Create table' कमांड का निष्पादन दिया गया है, जो कुंजीस्पेस 'University' में 'Student' नाम की टेबल बनाएगा।

Cassandra तालिका बनाएं

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

'Create table' कमांड के सफलतापूर्वक निष्पादन के बाद, 'University' कीस्पेस में 'Student' नामक एक टेबल बनाई जाएगी जिसमें RollNo, Name और dept कॉलम होंगे। RollNo प्राथमिक कुंजी है। RollNo एक विभाजन कुंजी भी है, इसलिए प्रत्येक छात्र एक अलग एकल-पंक्ति विभाजन में होगा।

Cassandra परिवर्तन तालिका

कमांड 'ऑल्टर टेबल' का उपयोग कॉलम हटाने, नया कॉलम जोड़ने, कॉलम का नाम बदलने, कॉलम का प्रकार बदलने और टेबल के गुणधर्म बदलने के लिए किया जाता है।

वाक्य - विन्यास

'Alter Table' कमांड का सिंटैक्स निम्नलिखित है।

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

प्रत्येक प्रपत्र एक अलग विवरण के रूप में जारी किया जाता है। वर्तमान में दो प्रतिबंध लागू होते हैं। Cassandra रिलीज़: किसी मौजूदा कॉलम के डेटा प्रकार को अब बदला नहीं जा सकता है, और RENAME केवल प्राथमिक कुंजी के क्लस्टरिंग कॉलम पर ही काम करता है।

उदाहरण

यहां 'Alter Table' कमांड का स्नैपशॉट दिया गया है जो Student टेबल में नया कॉलम जोड़ देगा।

Cassandra परिवर्तन तालिका

ALTER TABLE University.Student ADD Semester int;

'Alter Table' कमांड के सफल निष्पादन के बाद, 'int' डेटा प्रकार वाला एक नया कॉलम 'Semester', Student टेबल में जोड़ दिया जाएगा।

यहां स्क्रीनशॉट है जो अद्यतन छात्र तालिका दिखाता है।

Cassandra परिवर्तन तालिका

Cassandra ड्रॉप टेबल

'Drop table' कमांड निर्दिष्ट टेबल को कीस्पेस से सभी डेटा सहित हटा देता है। हटाने से पहलेping टेबल, Cassandra बैकअप के रूप में स्कीमा का नहीं बल्कि डेटा का स्नैपशॉट लेता है।

वाक्य - विन्यास

DROP TABLE IF EXISTS KeyspaceName.TableName;

उदाहरण

यहां निष्पादित कमांड 'ड्रॉप टेबल' का स्नैपशॉट दिया गया है जो कुंजीस्पेस 'यूनिवर्सिटी' से टेबल स्टूडेंट को हटा देगा।

Cassandra ड्रॉप टेबल

DROP TABLE University.Student;

'ड्रॉप टेबल' कमांड के सफल निष्पादन के बाद, टेबल स्टूडेंट को यूनिवर्सिटी कुंजीस्पेस से हटा दिया जाएगा।

यहाँ स्नैपशॉट है जो दिखाता है कि त्रुटि क्या है Cassandra जब छात्र तालिका तक पहुंचने का प्रयास किया गया जो मौजूद नहीं थी।

Cassandra ड्रॉप टेबल

Cassandra ट्रंकेट टेबल

कमांड 'ट्रंकेट टेबल' निर्दिष्ट टेबल से सारा डेटा हटा देता है। डेटा को ट्रंकेट करने से पहले, Cassandra बैकअप के रूप में डेटा का स्नैपशॉट लेता है।

वाक्य - विन्यास

TRUNCATE KeyspaceName.TableName;

उदाहरण

तालिका Student में तीन रिकॉर्ड हैं। ये तालिका में रिकॉर्ड हैं।

Cassandra ट्रंकेट टेबल

यहां निष्पादित कमांड 'ट्रंकेट टेबल' का स्नैपशॉट दिया गया है जो स्टूडेंट टेबल से सभी डेटा को हटा देगा।

Cassandra ट्रंकेट टेबल

'ट्रंकेट टेबल' कमांड के सफल निष्पादन के बाद, स्टूडेंट टेबल से सारा डेटा हटा दिया जाएगा।

यहां डेटाबेस स्थिति का स्नैपशॉट दिया गया है जहां विद्यार्थी तालिका में कोई रिकॉर्ड नहीं है।

Cassandra ट्रंकेट टेबल

ट्रंकेट कमांड के लिए सभी नोड्स का पहुंच योग्य होना आवश्यक है, क्योंकि यह पूरे क्लस्टर में एक साथ निष्पादित होता है। यदि कोई भी नोड डाउन हो जाता है, तो कमांड विफल हो जाता है, जो आंशिक डेटा छूटने से बचने के लिए जानबूझकर किया गया एक सुरक्षा उपाय है।

ड्रॉप बनाम ट्रंकेट बनाम डिलीट Cassandra

तीन कमांड डेटा को हटाते हैं, और गलत कमांड चुनने से या तो स्कीमा नष्ट हो जाता है या प्रदर्शन संबंधी समस्या उत्पन्न हो जाती है।

आदेश यह क्या हटाता है स्कीमा रखा गया लागत
ड्रॉप तालिका सभी पंक्तियाँ और तालिका परिभाषा नहीं सस्ता। एसएसटेबल का स्नैपशॉट लिया जाता है और फिर उसे हटा दिया जाता है।
TRUNCATE सभी पंक्तियाँ हाँ सस्ता है, लेकिन इसके लिए सभी नोड्स का चालू होना आवश्यक है। कोई मकबरा नहीं बनाया जाता है।
हटाएँ चयनित पंक्तियाँ या स्तंभ हाँ बड़े पैमाने पर महंगा पड़ता है। हर बार हटाने पर एक खामी सी बन जाती है जिस पर लिखा होता है कि संघनन होने तक इसे छोड़ना होगा।

किसी पूरी टेबल को खाली करते समय, बल्क डिलीट की बजाय ट्रंकेट का उपयोग करना एक व्यावहारिक नियम है, क्योंकि हजारों टैब उस विभाजन के प्रत्येक बाद के रीड को धीमा कर देंगे। पंक्ति-स्तर से हटाने के बारे में विस्तार से बताया गया है। CQL सम्मिलित करें, अद्यतन करें और हटाएं ट्यूटोरियल।

अक्सर पूछे जाने वाले प्रश्न

नहीं। प्राथमिक कुंजी डेटा के भौतिक स्थान को निर्धारित करती है, इसलिए यह निर्माण के समय ही तय हो जाती है। इसे बदलने का अर्थ है वांछित कुंजी के साथ एक नई तालिका बनाना और पंक्तियों को उसमें स्थानांतरित करना।

कॉलम बनाते समय WITH CLUSTERING ORDER BY (ColumnName DESC) जोड़ें। इसे स्कीमा में सेट करना, हर बार रीड करते समय क्वेरी के दौरान सॉर्ट करने की तुलना में कहीं अधिक किफायती है।

नहीं। कॉलम को क्वेरी से तुरंत छिपा दिया जाता है, लेकिन इसका डेटा मौजूदा SSTables में तब तक बना रहता है जब तक कि कंपैक्शन द्वारा उन्हें दोबारा नहीं लिखा जाता। स्थान धीरे-धीरे पुनः प्राप्त किया जाता है।

कॉलम सूची का अनुवाद तो आसानी से हो जाता है, लेकिन AI अक्सर एक वैकल्पिक आईडी को विभाजन कुंजी के रूप में रखता है, जिससे एकल-पंक्ति विभाजन बनते हैं। क्वेरी पैटर्न को इस प्रकार पुनः लिखें कि पढ़ने के लिए कुंजी का चयन किया जा सके।

हां, क्लस्टरिंग कॉलम की कमी, असीमित विभाजन, या संग्रह कॉलम की सीमा से अधिक होने जैसी पैटर्न-स्तर की समस्याओं के लिए। कार्रवाई करने से पहले वास्तविक संख्या की पुष्टि करें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: