2016-12-07 8 views
7

कैसंड्रा में पूछताछ के आसपास डेटा मॉडलिंग करने के लिए सलाह दी जाती है। हालांकि अगर मैं मॉडल के आधार पर सॉर्टिंग के उद्देश्य के लिए क्लस्टरिंग कॉलम के रूप में एक कॉलम सेट करता हूं और यदि वह ऑब्जेक्ट गतिशील है, क्योंकि यह क्लस्टरिंग कॉलम है, तो मैं इसके मान को अपडेट नहीं कर सकता क्योंकि यह उस तालिका के लिए प्राथमिक कुंजी से संबंधित है। उस मामले में, दो विकल्पक्लस्टरिंग कॉलम में से एक में कैसंड्रा अपडेट वैल्यू

  1. हैं क्लाइंट पक्ष के वर्गीकरण में (जो बुरा है)
  2. पूरा पंक्ति हटाएं और नई पंक्ति (जो समाधि का पत्थर पैदा करेगा)

सम्मिलित वहाँ के अन्य वैध तरीका है इसे कैसंद्रा डेटा मॉडलिंग में प्राप्त करना?

ईजी। मेरे पास table_A है और किसी विशेष स्थिति के साथ सभी पंक्तियों को प्राप्त करने की क्वेरी के लिए, table_A_by_state। हालांकि राज्य गतिशील होगा, और आपको table_A_by_state में राज्य को अपडेट करने की आवश्यकता होगी जो ऊपर उल्लिखित विकल्पों के साथ आता है। क्या किसी और को एक ही समस्या का सामना करना पड़ा है या इस समस्या के लिए डेटा मॉडलिंग का कोई अन्य तरीका है?

table_A: कॉलम: आईडी (कश्मीर), नाम, राज्य

table_A_by_state: कॉलम: आईडी (कश्मीर), राज्य (सी), नाम

उत्तर

2

आप में है अभिलेखों की संख्या पर निर्भर करता है प्रत्येक विभाजन, आप इंडेक्सिंग का सहारा ले सकते हैं, और देख सकते हैं कि आप उनके साथ कितना दूर स्केल कर सकते हैं।

दुर्भाग्य से कोई अन्य विकल्प नहीं हैं। उदाहरण के तौर पर, यदि आप कैसंड्रा 3.0+ का उपयोग कर रहे हैं और ऑर्डरिंग आवश्यकता को पूरा करने के लिए Materialized Views का उपयोग करना चाहते हैं, तो आप वास्तव में अपने विकल्प 2 के अंदर गिर रहे हैं, क्योंकि सी * आपके से छिपाता है कि यह एक और टेबल और डालने/अपडेट/दृश्यों के नीचे उस तालिका को हटा दें। तो, हाँ, यह आपके लिए टॉम्बस्टोन बनाएगा।

हालांकि, विकल्प 1 खराब नहीं है (यदि आप कुछ पंक्तियों को रिकॉर्ड करते हैं, क्योंकि बहुत सारी पंक्तियां एक एंटी-पैटर्न होती हैं), मान लीजिए कि आपको ऑर्डर कहीं करना है। हां, भंडारण और डेटा पुनर्प्राप्त करने के लिए पहले से ही आदेश दिया गया है बड़ा प्लस, लेकिन क्लाइंट-साइड को टॉम्बस्टोन के साथ जादूगर बनने और लिखने/पढ़ने के समय से बेहतर करने के लिए बेहतर ...

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