MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

स्प्रिंग-डेटा-मोंगोडब बहु-किरायेदार बनाना

यहाँ बिल्ली की खाल उतारने के कुछ तरीके हैं। यह अनिवार्य रूप से इस बात पर निर्भर करता है कि आप किस स्तर पर किरायेदारी लागू करना चाहते हैं।

मूल बातें

मूल दृष्टिकोण ग्राहक को प्रति-थ्रेड आधार पर पहचानने वाली किसी प्रकार की कुंजी को बांधना है, ताकि आप ग्राहक के बारे में पता लगा सकें कि निष्पादन का वर्तमान धागा संबंधित है। यह आमतौर पर ThreadLocal . को पॉप्युलेट करके हासिल किया जाता है कुछ प्रमाणीकरण संबंधी जानकारी के साथ, जैसा कि आप आमतौर पर लॉग इन उपयोगकर्ता से टैनेंट प्राप्त कर सकते हैं।

अब अगर यह जगह है तो किरायेदार ज्ञान को लागू करने के कुछ विकल्प हैं। मुझे संक्षेप में सबसे आम लोगों की रूपरेखा तैयार करने दें:

डेटाबेस स्तर पर बहु-किरायेदारी

एकाधिक क्लाइंट के लिए डेटा अलग करने का एक तरीका प्रति टैनेंट अलग-अलग डेटाबेस रखना है। इसके लिए स्प्रिंग डेटा MongoDB का मुख्य अमूर्त MongoDBFactory है इंटरफेस। यहां सबसे आसान तरीका है SimpleMongoDbFactory.getDb(String name) को ओवरराइड करना और मूल विधि को डेटाबेस नाम के साथ कॉल करें उदा। टैनेंट उपसर्ग या इसी तरह से समृद्ध।

संग्रह स्तर पर बहु-किरायेदारी

एक अन्य विकल्प किरायेदार विशिष्ट संग्रह रखना है, उदा। किरायेदार पूर्व या पोस्टफिक्स के माध्यम से। @Document में स्प्रिंग एक्सप्रेशन लैंग्वेज (SpEl) का उपयोग करके वास्तव में इस तंत्र का लाभ उठाया जा सकता है एनोटेशन का collectionName गुण। सबसे पहले, स्प्रिंग बीन के माध्यम से टैनेंट उपसर्ग को उजागर करें:

 @Component("tenantProvider")
 public class TenantProvider {

   public String getTenantId() {
     // … implement ThreadLocal lookup here
   }
 }

फिर अपने डोमेन प्रकार @Document . में SpEL का उपयोग करें मानचित्रण:

 @Document(collectionName = "#{tenantProvider.getTenantId()}_accounts"
 public class Account { … }

SpEl आपको स्प्रिंग बीन्स को नाम से संदर्भित करने और उन पर विधियों को निष्पादित करने की अनुमति देता है। MongoTemplate (और इस प्रकार रिपोजिटरी एब्स्ट्रैक्शन ट्रांज़िटिवली) दस्तावेज़ वर्ग के मैपिंग मेटाडेटा का उपयोग करेगा और मैपिंग सबसिस्टम collectionName का मूल्यांकन करेगा इंटरैक्ट करने के लिए संग्रह के बारे में पता लगाने के लिए विशेषता।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला - ObjectId की एक सरणी पर पॉप्युलेट का उपयोग करना

  2. मोंगोडब क्वेरी विशिष्ट माह|वर्ष तारीख नहीं

  3. MongoDB नोड ड्राइवर जनरेटिंग इंस्टेंस पूल त्रुटियों को क्यों नष्ट कर रहा है?

  4. स्कीमा को परिभाषित किए बिना आप नेवला का उपयोग कैसे करते हैं?

  5. उल्का चल रहा है, जबकि मैं किसी अन्य क्लाइंट से उल्का के मोंगोडीबी तक कैसे पहुंचूं?