मुझे बड़े पैमाने पर दंगा डेटाबेस में कुछ बाल्टी साफ करने की जरूरत है। कुछ बाल्टियों के लिए, चूंकि हमारे पास अनुक्रमणिकाएँ थीं, मैंने बस उनसे पूछताछ की और कुंजियों को हटा दिया। लेकिन अब मैं दो बाल्टियों के साथ काम कर रहा हूं जिनमें कोई अनुक्रमणिका नहीं है। जैसा कि मैंने कई बार पढ़ा है कि मुझे उत्पादन प्रणालियों पर keys?keys=true या keys?keys=stream का उपयोग नहीं करना चाहिए, हालांकि सभी चाबियों को प्राप्त करने का एक और तरीका $bucket इंडेक्स का उपयोग करना है, जैसा कि सुझाव दिया गया है दस्तावेज़ीकरण में, जो उत्पादन में इसका उपयोग न करने की चेतावनी नहीं देता है। मेरा मानना ​​है कि इसे पहले $keys के नाम से भी जाना जाता था। ऐसा लगता है कि हमारा सिस्टम या तो काम करता है।

हालाँकि, इसे उत्पादन पर चलाने से ठीक पहले मैं इधर-उधर खेल रहा था और पाया कि $bucket इंडेक्स रिटर्न कीज़ को हटा देता है, जैसे keys?keys=true/stream, जबकि ऐसा नहीं था। जब मैंने उन इंडेक्स का इस्तेमाल किया जिन्हें हम खुद बनाए रख रहे थे।

क्या $bucket अनुक्रमणिका उत्पादन में उपयोग करने के लिए सुरक्षित है?

ध्यान दें कि हमारा सिस्टम LevelDB बैकएंड पर चलता है, जिसके बारे में मुझे बताया गया है कि यह बकेट स्कोप है, और इसलिए इस पर keys?keys=true/stream चलाना भी सुरक्षित होगा। क्या ये सच है?

1
Stefano 15 अप्रैल 2020, 11:25

1 उत्तर

सबसे बढ़िया उत्तर

वास्तविकता यह है कि $bucket या $key का उपयोग करते समय कोई गारंटी नहीं है, खासकर यदि आप Map/Reduce के साथ गठबंधन करते हैं, तो वे क्लस्टर की स्थिरता को प्रभावित नहीं करेंगे। हालाँकि, यदि आप जानते हैं कि एक बकेट में अपेक्षाकृत कम संख्या में कुंजियाँ हैं, या यदि आप अपनी क्वेरी में max_results का उपयोग करते हैं - तो $bucket अपेक्षाकृत सुरक्षित होना चाहिए (निश्चित रूप से सूची कुंजियों का उपयोग करने से बहुत बेहतर)।

Riak KV में कीज़ को मिटाने के सुरक्षित तरीके हैं 2.9.1, जो बैकएंड की परवाह किए बिना उपलब्ध हैं (टिक्टैक एएई के उपयोग को मानते हुए)।

हटाए गए कुंजियों को वापस करने वाले $bucket या $key प्रश्नों के लिए, मुझे संदेह है कि यह इस तथ्य के कारण सच हो सकता है कि यह एक "आंतरिक" लेवलडीबी क्वेरी है और लेवलडीबी के भीतर यह एक Riak ऑब्जेक्ट और ए के बीच अंतर करने में सक्षम नहीं है रियाक समाधि का पत्थर। Riak 2.9.x में सुधार इस स्थिति को संभालते हैं, और हटाए गए कुंजियों को वापस नहीं करेंगे (जब तक कि आप कब्रों को काटने के लिए नहीं ढूंढ रहे हों)।

2
Martin S 15 अप्रैल 2020, 13:07