हम इस तरह 500k के बारे में तत्वों के साथ एक XML फ़ाइल (xml-stream
का प्रयोग करके) पढ़ते हैं और उन्हें सम्मिलित कर MongoDB करते हैं: जब मोंगोnode.js में डिस्कनेक्ट के दौरान MongoDB प्रविष्टियों को कैसे बफर करें?
collection.insertOne(obj, {w: 1, wtimeout: 15000}).catch((e) => { });
अब:
xml.on(`endElement: product`, writeDataToDb.bind(this, "product"));
writeDataToDb(type, obj)
में सम्मिलित इस तरह दिखता है कनेक्शन डिस्कनेक्ट हो जाता है, एक्सएमएल स्ट्रीम अभी भी पढ़ता है और कंसोल त्रुटि संदेशों के साथ बाढ़ आ जाता है (सम्मिलित नहीं हो सकता है, डिस्कनेक्ट किया जा सकता है, ईपीआईपीई टूटा हुआ है ...)।
docs में यह कहते हैं:
जब आप mongod प्रक्रिया को बंद कर दिया, ड्राइवर प्रोसेसिंग आपरेशन बंद हो जाता है और bufferMaxEntries जा रहा है -1 डिफ़ॉल्ट बफर अर्थ सभी कार्यों द्वारा की वजह से उन्हें बफरिंग रहता है।
यह बफर वास्तव में क्या करता है?
हम नोटिस जब हम डेटा सम्मिलित करें और मोंगो सर्वर बंद करते हैं, बातें बफ़र हो, तो हम मोंगो सर्वर वापस ऊपर लाने के लिए, देशी ड्राइवर सफलतापूर्वक पुन: कनेक्ट हो और नोड (ऑफ़लाइन beeing मोंगो दौरान डालने डेटा लेकिन बफ़र दस्तावेजों शुरू) फिर से डाला नहीं है।
तो मैं इस बफर और इसके उपयोग पर सवाल करता हूं।
लक्ष्य:
हम सबसे अच्छा तरीका है बफर में आवेषण रखने के लिए के लिए देख रहे हैं जब तक मोंगो वापस (wtimeout
के अनुसार 15000milliseconds में) आता है और फिर बफ़र दस्तावेजों डालने या xml.pause();
और xml.resume()
का इस्तेमाल करते हैं जो करते हैं हमने सफलता के बिना कोशिश की।
असल में हमें डेटा हानि या इंटरप्ट के बिना डिस्कनेक्ट को संभालने में थोड़ा सा मदद चाहिए।
इस दोहराने नहीं कर सकते, दोनों डॉक्स और परीक्षण 'का उपयोग कर एक्सएमएल-stream' मोन एक बार बफ़र ऑब्जेक्ट सम्मिलित में उदाहरण सर्वर वापस आ गया है .. शायद आप अधिक कोड पोस्ट कर सकते हैं/अपने सेटअप के बारे में कुछ और जानकारी दे सकते हैं? – cviejo
@cviejo मैं अपनी स्क्रिप्ट को साझा नहीं कर सकता क्योंकि वे कंपनी से संबंधित हैं, लेकिन क्या आप मुझे उस स्क्रिप्ट को भेजना चाहेंगे जिसे आपने दोहराने की कोशिश की थी? जिस्ट/पेस्टबिन ठीक रहेगा। – DanFromGermany