मुझे एक ही समस्या का समाधान करना है और विभिन्न प्रकारों पर भी विचार करना है। जैसा कि मेरे पास सास बहु-किरायेदार एप्लिकेशन बनाने का वर्षों का अनुभव है, मैं भी रिलेशनल डेटाबेस के साथ अपने पिछले अनुभव के आधार पर दूसरे विकल्प का चयन करने जा रहा था।
अपना शोध करते समय मुझे यह लेख mongodb सपोर्ट साइट (जिस तरह से चला गया है के बाद से जोड़ा गया) पर मिला:
https://web.archive.org/web/20140812091703/http://support.mongohq.com/use-cases-multi -tenant.html
लोगों ने किसी भी कीमत पर 2 विकल्पों से बचने के लिए कहा, जैसा कि मैं समझता हूं कि विशेष रूप से मोंगोडब के लिए विशिष्ट नहीं है। मेरी धारणा यह है कि यह डेटाबेस डिजाइन की बारीकियों के कारण, NoSQL dbs I पर शोध (CoachDB, Cassandra, CouchBase Server, आदि) के लिए लागू होता है।
संग्रह (या बाल्टियाँ या फिर भी वे इसे अलग-अलग डीबी में कहते हैं) आरडीबीएमएस में सुरक्षा स्कीमा के समान नहीं हैं क्योंकि वे दस्तावेजों के लिए कंटेनर के रूप में व्यवहार करते हैं क्योंकि वे अच्छे किरायेदार अलगाव को लागू करने के लिए बेकार हैं। मुझे NoSQL डेटाबेस नहीं मिला जो संग्रह के आधार पर सुरक्षा प्रतिबंध लागू कर सकता है।
बेशक आप डेटाबेस / सर्वर स्तर पर पहुंच को प्रतिबंधित करने के लिए मोंगॉडब भूमिका आधारित सुरक्षा का उपयोग कर सकते हैं। ( http://docs.mongodb.org/manual/core/authorization/ )
मैं 1 विकल्प की सिफारिश करूंगा जब:
- इस परिदृश्य की डिजाइन, कार्यान्वयन और परीक्षण की जटिलता से निपटने के लिए आपके पास पर्याप्त समय और संसाधन हैं।
- यदि आप अलग-अलग किरायेदारों के लिए संरचना और कार्यक्षमता में बहुत अंतर नहीं करने जा रहे हैं।
- आपका एप्लिकेशन डिज़ाइन किरायेदारों को रनटाइम पर केवल न्यूनतम अनुकूलन बनाने की अनुमति देगा।
- यदि आप अंतरिक्ष का अनुकूलन करना चाहते हैं और हार्डवेयर संसाधनों का उपयोग कम से कम करना चाहते हैं।
- अगर आपके पास हजारों किराएदार हैं।
- यदि आप तेजी से और अच्छी लागत पर स्केल करना चाहते हैं।
- यदि आप किरायेदारों के आधार पर बैकअप डेटा पर नहीं जा रहे हैं (प्रत्येक किरायेदार के लिए अलग बैकअप रखें)। इस परिदृश्य में भी ऐसा करना संभव है, लेकिन प्रयास बहुत बड़ा होगा।
मैं वैरिएंट 3 के लिए जाऊंगा अगर:
- आपके पास किरायेदारों (कई सौ) की छोटी सूची होने वाली है।
- व्यवसाय की बारीकियों के लिए आपको अलग-अलग किरायेदारों के लिए डेटाबेस संरचना में बड़े अंतर का समर्थन करने में सक्षम होना चाहिए (जैसे 3-पार्टी सिस्टम के साथ एकीकरण, डेटा का आयात-निर्यात)।
- आपका एप्लिकेशन डिज़ाइन ग्राहकों (किरायेदारों) को एप्लिकेशन रनटाइम में महत्वपूर्ण बदलाव करने (मॉड्यूल जोड़ने, खेतों को अनुकूलित करने आदि) की अनुमति देगा।
- यदि आपके पास नए हार्डवेयर नोड्स के साथ जल्दी से स्केल करने के लिए पर्याप्त संसाधन हैं।
- यदि आपको प्रति किरायेदार डेटा के संस्करण / बैकअप रखने की आवश्यकता है। साथ ही रिस्टोर आसान होगा।
- कानूनी / नियामक प्रतिबंध हैं जो आपको अलग-अलग डेटाबेस (यहां तक कि डेटा सेंटर) में अलग-अलग किरायेदारों को रखने के लिए मजबूर करते हैं।
- यदि आप मोंगोडब की आउट-ऑफ-द-बॉक्स सुरक्षा सुविधाओं का पूरी तरह से उपयोग करना चाहते हैं जैसे कि भूमिका।
- किरायेदारों के बीच आकार के मामले में बड़े अंतर हैं (आपके पास कई छोटे किरायेदार हैं और कुछ बहुत बड़े किरायेदार हैं)।
यदि आप अपने आवेदन के बारे में अतिरिक्त विवरण पोस्ट करते हैं, तो शायद मैं आपको अधिक विस्तृत सलाह दे सकता हूं।