2014-04-06 12 views
5

मुझे जानकारी के कुछ फ़ील्ड लोड करने की आवश्यकता है जो उपयोगकर्ता द्वारा उपयोग किए जा सकने वाले मार्गों के सत्यापन के लिए बार-बार बदलती हैं।मोंगो डीबी बनाम रेडिस?

वर्तमान में, मैं MongoDB क्वेरी और जब में।

किसी उपयोगकर्ता के लॉग तब मैं http कुकी और दुकान के लिए एक सत्र बनाने redis में उन क्षेत्रों में एक भी हैश में किसी विशेष राज्य जानकारी है कि 'user:' + mongodb_user_objectid से keyed है के साथ की दुकान रेडिस में एक स्ट्रिंग के रूप में यह कुंजी 'sess:' + session_id द्वारा की गई है।

क्या मैंगोडब से खेतों में प्रतिलिपि बनाना और लालसा और मोंगोडब दोनों को अद्यतन करने के साथ सौदा करना बेहतर होगा जब उनमें से एक सत्यापन फ़ील्ड बदल सकता है?

क्या इस सत्र की जानकारी को सीधे पढ़ने के लिए और मध्यस्थ के रूप में रेडिस का उपयोग किए बिना मोंगोडब से पढ़ने में महत्वपूर्ण प्रदर्शन अंतर है?

उत्तर

14

दुर्भाग्यवश, आपके सेटअप का उपयोग करके एक निश्चित उत्तर माप की आवश्यकता होगी क्योंकि बहुत से संभावित कारक हैं।

  • के बाद से सत्र अक्सर इस्तेमाल किया जाएगा, संग्रह रखता है:

    हालांकि, मेरा अनुमान कि किसी भी संभावित लाभ outweighs दो डेटा संग्रहों का उपयोग कर, क्योंकि पढ़ता दोनों डीबीएस पर अविश्वसनीय रूप से तेजी से होना चाहिए की भूमि के ऊपर है सुंदर 'गर्म' इसलिए यदि संभवतः मोंगोडीबी में कोई भी संभव हो तो यह रैम में रहेगा,

  • सत्र खोना अच्छा नहीं होगा, लेकिन यह कोई आपदा नहीं है, इसलिए आप जर्नल डीबी को जर्नल प्रतिबद्धता के इंतजार किए बिना लिख ​​सकते हैं (जो काफी समान विश्वसनीयता रेडिस है)
  • या तो मामले में, सबसे अधिक समय (शायद) नेटवर्क स्टैक पर खर्च है, और आप दोनों डीबीएस के लिए है कि के माध्यम से जाना

तो, संक्षेप में, मैं कोई कारण नहीं दिख रहा है यही कारण है कि redis हो जाएगा इस मामले में बहुत तेज़, लेकिन फिर, प्रदर्शन अक्सर अनुमान लगाया जाता है, खासकर जब विवरण अज्ञात होते हैं।

+1

मैं पूरी तरह सहमत हूं। मापने। पुन। अनुमान लगाने का हिस्सा - जबकि मैं मोंगोडीबी के साथ कम अंतरंग हूं, रेडिस के क्लासिक उपयोग मामलों में से दो सत्र प्रबंधन और डीबी त्वरण/कैशिंग हैं। विशेष रूप से, चूंकि मोंगोडीबी एक इन-मेमोरी डेटाबेस नहीं है, इसलिए इसे आमतौर पर रेडिस के साथ बढ़ाया जाता है जहां प्रदर्शन मायने रखता है (उदाहरण के लिए http://redislabs.com/blog/the-top-3-game-changing-redis-use-cases:)) –

+1

लिंक के लिए धन्यवाद। यह सब सच है, लेकिन जैसा कि लिंक इंगित करता है, रेडिस वास्तव में चमकता है जब * सत्र * * * को संशोधित करने के लिए * हिट मायने रखता है, हिट गिनती, अनुरोध गणना आदि इत्यादि। यह एक बिंदु है जहां तेजी से और थोक परिचालन को अलग करने के लिए यह समझ में आता है, और यह सुनिश्चित करने के लिए कि बार-बार लिखने वाले रैम केवल जा सकते हैं। हालांकि, ओपी ने यह नहीं कहा कि वह अक्सर लिख रहा था, और फिर भी, यह एक महत्वपूर्ण अंतर बनने के लिए बहुत अधिक यातायात होना चाहिए। – mnemosyn

+0

इसलिए, चूंकि मोंगोडब पूरे दस्तावेजों को स्मृति में लोड करता है, तो क्या यह रैम का अपशिष्ट होगा यदि मुझे केवल सत्र में उपयोगकर्ता के mongodb दस्तावेज़ से कुछ फ़ील्ड का उपयोग करने की आवश्यकता है? – paulkon

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