तो मैं कैसेंड्रा शोध किया गया था और वास्तुकला का एक समझ पाने के लिए कोशिश कर रहा है, और मैं विकि से निम्न पृष्ठों पर पढ़ रहा था: http://wiki.apache.org/cassandra/MemtableSSTableकैसेंड्रा SSTables और संघनन
तो, यहाँ कार्यप्रवाह पालन करने के लिए, आपके द्वारा भेजे एक अपनी तालिका को अपडेट करने का अनुरोध, यह अनुरोध CommitLog में लिखा गया है, फिर मेमटेबल नामक एक इन-मेमोरी टेबल में (जिसे सिस्टम विफलता के मामले में कमिट्लॉग से पुनर्निर्मित किया जा सकता है)। एक बार जब मेमटेबल एक निश्चित आकार को हिट करता है, तो यह पूरे मेमटेबल को डिस्क एसएसटीबल पर फ़्लश करता है जिसे अब संशोधित के दौरान विलय नहीं किया जा सकता है। जब आप एसएसटीबल्स की कॉन्फ़िगर करने योग्य संख्या तक पहुंचते हैं तो आप कॉम्पैक्शन करते हैं, जो मूल रूप से डिस्क स्पेस को मुक्त करने के परिणाम विलय करता है और एक नया बना देता है और एसएसटीबल तक अद्यतित होता है। कृपया मुझे सही करें अगर मुझे यहां कुछ भी गलत समझा गया है।
अब मेरे पास कंपैक्शन के बारे में कुछ प्रश्न हैं। सबसे पहले, यह ऑपरेशन कितना महंगा है? अगर हमारे पास डिस्क पर दो एसएसटीबल्स होने पर एक compaction की मांग की जाती है, तो क्या यह निषिद्ध होगा, या जब मैं उपयोग के समय रात के मध्य तक इंतजार कर रहा हूं तो बेहतर सेवा होगी? क्या मेरे पास कुछ बेहतर है (लेकिन छोटे) एसएसटीबल्स बनाम कुछ लेकिन बहुत बड़े एसएसटीबल्स हैं? क्या बहुत सारे गैर-कॉम्पैक्ट किए गए एसएसटीबल्स पढ़ने के प्रदर्शन को प्रभावित करते हैं? इस बारे में समेकन कैसे काम करता है: क्या होगा अगर मैं इन एसएसटीबल्स से पढ़ रहा हूं, तो कोई ऐसा सम्मिलित करता है जो डिस्क पर एक नया Memtable फ़्लश करता है, जो बदले में एक compaction का कारण बनता है?
कोई भी जानकारी और अनुभव जो आप इस बारे में प्रदान कर सकते हैं वह बहुत अच्छा होगा!
धन्यवाद! बस कुछ स्पष्ट प्रश्न: जब आप कहते हैं "प्रत्येक लिखने की कल्पना एक नया एसएसटीबल बनाता है" तो आप काल्पनिक परिस्थिति में आपका मतलब है कि आपके पास बहुत बड़ा लेखन है, सही? दूसरा, क्या आप स्पष्ट कर सकते हैं कि एसएसटीबल्स गायब होने के बारे में चिंता करने की आवश्यकता क्यों नहीं है? मेरा मतलब है, अगर मुझे एन एसएसटीबल्स पर पढ़ना है, तो मैंने उसमें से आधा पढ़ा है, और फिर खत्म होने से पहले बाकी को हटाकर एक कॉम्पैक्शन है जो समस्या नहीं होगी? –
> जब आप कहते हैं "कल्पना करें कि प्रत्येक लेखन एक नया एसएसटीबल बनाता है" तो आप काल्पनिक परिस्थिति में आपका मतलब है कि आपके पास बहुत बड़ा लेखन है, सही? मैं गणित को सरल बनाने के लिए बस ऐसा करता हूं। हकीकत में आपके पास कुछ नया बैच (बी) लिखता है जो एक नया एसएसटीबल बनाता है, लेकिन मुझे लगता है कि यह एन लिखने के लिए ओ (एन^2/बी), या प्रत्येक लिखने के लिए ओ (एन/बी) के रूप में आता है (जो है ओ ((लॉग एन)/बी) की तुलना में वास्तव में काफी बड़ा है, –
> दूसरा, क्या आप स्पष्टीकरण दे सकते हैं कि एसएसटीबल्स गायब होने के बारे में चिंता करने की आवश्यकता क्यों नहीं है? कैसल में हम संदर्भ प्रत्येक एसएसटीबल की गणना करते हैं; पढ़ने की शुरुआत में ऑपरेशन, हम प्रत्येक एसएसटीबल पर संदर्भ गणना करते हैं, उन्हें दूर जाने से रोकने के लिए। जब संदर्भ गणना शून्य हो जाती है (या तो मर्ज के परिणाम के रूप में या जब कोई पढ़ा जाता है) तालिका वास्तव में हटा दी जाती है। हमारे पास भी है यह तेजी से बनाने के लिए कुछ चालें। मुझे लगता है कि कैसंद्रा कुछ समान करता है, जहां कचरा कलेक्टर का उपयोग करके। –