1) स्थायित्व के संदर्भ में, आप MongoDB जावा ड्राइवर (जो मॉर्फिया उपयोग कर रहा है) को बता सकते हैं कि किस रणनीति का उपयोग करना है, देखें https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/ mongodb/WriteConcern.java#L53
. यह गति के बीच केवल एक समझौता है:NONE
(यहां तक कि कनेक्टिविटी समस्याओं के कारण भी त्रुटि नहीं होगी) FSYNC_SAFE
. तक (डेटा निश्चित रूप से डिस्क पर लिखा गया है)। आंतरिक विवरण के लिए http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/
2) आपका पूरा डेटा मेमोरी में मैप किया जाता है (इसीलिए 32 बिट संस्करण की आकार सीमा 2GB है), हालाँकि यह केवल आवश्यकता पड़ने पर ही वास्तव में लोड होता है। MongoDB mmap का उपयोग करके इसे ऑपरेटिंग सिस्टम पर छोड़ देता है। इसलिए जब तक अधिक RAM उपलब्ध है, MongoDB प्रश्नों को बहुत तेज़ी से करने के लिए RAM में आवश्यक सभी डेटा को खुशी से लोड करेगा। यदि कोई और मेमोरी उपलब्ध नहीं है, तो पुराने सामान को स्वैप करना ऑपरेटिंग सिस्टम पर निर्भर है। इसका अच्छा प्रभाव है कि यदि आप MongoDB प्रक्रिया को पुनरारंभ करते हैं तो भी आपका डेटा स्मृति में रखा जाएगा; केवल अगर आप सर्वर को पुनरारंभ करते हैं तो डेटा फिर से डिस्क से प्राप्त किया जाना चाहिए। मुझे लगता है कि नकारात्मक पक्ष यह है कि डेटाबेस प्रक्रिया में ऑपरेटिंग सिस्टम की तुलना में पहले क्या बदला जाना चाहिए, इसकी थोड़ी बेहतर समझ हो सकती है। मैं विंडोज़ पर मोंगोडीबी का उपयोग नहीं कर रहा हूं और मैक या लिनक्स पर उस संदेश को नहीं देखा है (अभी तक ), लेकिन ऑपरेटिंग सिस्टम को आपके लिए इसे संभालना चाहिए (और आवश्यकतानुसार सूचनाओं के टुकड़ों को स्वचालित रूप से स्वैप करें)। क्या आपने ड्राइवर को JOURNAL_SAFE
. पर सेट करने का प्रयास किया है? (डेटा सुरक्षा और गति के बीच एक अच्छा समझौता होना चाहिए)? उस सेटिंग में, कोई भी डेटा नष्ट नहीं होना चाहिए, भले ही MongoDB प्रक्रिया समाप्त हो जाए।
3) आम तौर पर मोंगोडीबी जितना संभव हो उतना उपलब्ध स्मृति का उपयोग करने के लिए बनाया गया है, लेकिन आप इसे http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ - जिसका मैंने परीक्षण नहीं किया है, क्योंकि हम (वर्चुअल) लिनक्स सर्वर का उपयोग कर रहे हैं।