2015-12-11 8 views
9

मैं कैसंद्रा में नया हूं और मैंने पढ़ा है कि कैसंड्रा डेटा के denormalization और नकल को प्रोत्साहित करता है। यह मुझे थोड़ा उलझन में छोड़ देता है।विभिन्न तालिकाओं पर कैसंद्रा में डेटा स्थिरता सुनिश्चित करने के लिए कैसे?

मैं चार टेबल के साथ एक keyspace है: हमें इस परिदृश्य की कल्पना करते हैं ए, बी, सी और डी

CREATE TABLE A ( tableID int, column1 int, column2 varchar, column3 varchar, column4 varchar, column5 varchar, PRIMARY KEY (column1, tableID) );

हमें कल्पना करते हैं कि अन्य तालिकाओं (बी, सी, डी) एक ही संरचना और वही डेटा है जो अन्य प्रश्नों के उत्तर देने के लिए तालिका ए, केवल एक अलग प्राथमिक कुंजी के साथ है।

यदि मैं तालिका ए में एक पंक्ति को अपग्रेड करता हूं तो मैं अन्य सारणी में डेटा की स्थिरता सुनिश्चित कैसे कर सकता हूं जिसमें एक ही डेटा है?

उत्तर

6

कैसंद्रा इस उद्देश्य के लिए BATCH प्रदान करता है। documentation से:

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

बैचों डिफ़ॉल्ट रूप से परमाणु हैं। एक कैसंद्रा बैच ऑपरेशन के संदर्भ में, परमाणु का अर्थ है कि यदि कोई भी बैच सफल होता है, तो यह सब होगा। परमाणुता प्राप्त करने के लिए, कैसंद्रा पहले बैचलॉग सिस्टम टेबल पर धारावाहिक बैच लिखता है जो धारावाहिक बैच को ब्लॉब डेटा के रूप में उपयोग करता है। जब बैच में पंक्तियों को सफलतापूर्वक लिखा गया है और बैचलॉग डेटा को हटा दिया गया है (या संकेत दिया गया है)। परमाणुता के लिए एक प्रदर्शन जुर्माना है। आप इस दंड देना नहीं करना चाहते हैं, तो UNLOGGED विकल्प का उपयोग करके batchlog व्यवस्था करने के लिए लिखने से कैसेंड्रा को रोकने: शुरू UNLOGGED बैच

UNLOGGED बैच लगभग हमेशा अवांछनीय है और मेरा मानना ​​है कि भविष्य के संस्करणों में निकाल दिया जाता है। सामान्य बैच आपकी इच्छित कार्यक्षमता प्रदान करते हैं।

1

तुम भी कैसेंड्रा 3.0 materialized views नाम से एक नई सुविधा का पता लगाने कर सकते हैं: कैसेंड्रा में डेटा मॉडलिंग की

बुनियादी नियम मैन्युअल प्रश्नों कि कि टेबल के खिलाफ चलाया जाएगा के आधार पर अलग-अलग तालिकाओं में डेटा denormalizing शामिल है। वर्तमान में, विभाजन कुंजी निर्दिष्ट किए बिना कॉलम से पूछने का एकमात्र तरीका माध्यमिक अनुक्रमणिका का उपयोग करना है, लेकिन वे डेटा के denormalization के लिए नए टेबल में एक विकल्प नहीं हैं क्योंकि वे उच्च कार्डिनालिटी डेटा के लिए उपयुक्त नहीं हैं। उच्च कार्डिनिटी द्वितीयक सूचकांक प्रश्नों को अक्सर अंगूठी में सभी नोड्स के प्रतिक्रिया की आवश्यकता होती है, जो प्रत्येक अनुरोध के लिए विलंबता जोड़ता है। इसके बजाए, क्लाइंट-साइड denormalization और एकाधिक स्वतंत्र टेबल का उपयोग किया जाता है, जिसका अर्थ है कि एक ही कोड कई अलग-अलग उपयोगकर्ताओं के लिए फिर से लिखा जाता है।

3.0 में, कैसंद्रा मटेरियलाइज्ड व्यू नामक एक नई सुविधा पेश करेगा। मटेरियलाइज्ड विचार स्वचालित सर्वर-साइड denormalization संभाल, इस denormalization के ग्राहक पक्ष हैंडलिंग की आवश्यकता को हटाने और आधार के बीच अंतिम स्थिरता सुनिश्चित करने और डेटा देखने के लिए। यह denormalization सामान्य कैसंद्रा पढ़ने पथ का उपयोग कर प्रत्येक दृश्य में डेटा के बहुत तेज़ लुकअप के लिए अनुमति देता है।

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

+2

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

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