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

सास के लिए MongoDB में एकाधिक डेटाबेस

एक आसान उत्तर नहीं है क्योंकि बहुत कुछ आपके ऐप आर्किटेक्चर, उपयोग और क्वेरी पैटर्न पर निर्भर करता है, ग्राहकों के बीच वितरण (यानी:क्या उपयोग का स्तर लगभग सभी ग्राहकों के लिए समान होगा, या आपके पास 10% क्लाइंट हो सकते हैं जो 90% का उपयोग कर रहे हैं) संसाधन), आप कोड बनाम ऑप्स प्रबंधन और अन्य मुद्दों की एक पूरी मेजबानी पर कितना खर्च कर सकते हैं। यहाँ कुछ बातों पर विचार करना है:

1) एक डेटाबेस होने से आपका ऑप्स प्रबंधन आसान हो जाएगा, कम कंप्यूटिंग संसाधनों की आवश्यकता होगी, और आपको बेहतर स्केल करने की अनुमति मिल सकती है, लेकिन एक्सेस लेयर को कोड करना अधिक कठिन होगा और आपको स्पष्ट कारणों से वास्तव में अपनी सुरक्षा परत को अच्छी तरह से आर्किटेक्ट करना होगा। आप क्लाइंट/वेबसर्वर की ओर से भी कम संसाधनों का उपभोग करेंगे क्योंकि बहुत कम कनेक्शन होंगे।

एक मोनोलिथिक डेटाबेस के पास पहुंचने पर दो लोकप्रिय स्कीमा विकल्प होते हैं:

  • आप सभी समान डेटा को एक संग्रह में रख सकते हैं (यानी:सभी खातों के लिए प्रोफ़ाइल एक ही संग्रह में जाती हैं) और प्रत्येक दस्तावेज़ को यह पहचानने के लिए एक क्लाइंट आईडी दें कि कौन सा डेटा किस खाते से संबंधित है। यह आपको सबसे कम कंप्यूटिंग संसाधनों के साथ स्केल आउट के लिए सर्वोत्तम विकल्प (आपके स्कीमा आर्किटेक्चर के आधार पर) प्रदान कर सकता है।
  • एक अन्य विकल्प क्लाइंट डेटा को संग्रह द्वारा अलग करना है - प्रत्येक क्लाइंट के पास क्लाइंटिड प्रीफ़िक्स (यानी:clientid_userprofiles) के साथ पहचाने गए डेटाबेस के भीतर अपना स्वयं का संग्रह होगा।

2) डेटाबेस प्रति क्लाइंट विकल्प आपको अधिक ऑप्स प्रबंधन सिरदर्द देगा और लागत अधिक होगी क्योंकि आपको अधिक कंप्यूटिंग संसाधनों की आवश्यकता होगी। दूसरी ओर, आपकी कोडिंग लागत कम होनी चाहिए क्योंकि कोड लिखना आसान होगा। यह आपको भारी और हल्के उपयोगकर्ताओं के बीच अपने संसाधनों को बेहतर ढंग से वितरित करने की भी अनुमति देगा। उदाहरण के लिए, आप भारी उपयोग वाले ग्राहकों को अधिक शक्तिशाली मशीनों में स्थानांतरित कर सकते हैं और प्रति ग्राहक आधार पर शार्डिंग प्रदान कर सकते हैं।

3) आप दो विकल्पों का एक कॉम्बो प्रदान कर सकते हैं - उच्च अंत उपयोगकर्ताओं के लिए समर्पित डेटाबेस (अधिक भुगतान करने वाले खाते), और फिर निम्न-अंत ग्राहकों और परीक्षण/फ्रीमियम खातों के लिए संग्रह द्वारा अलग किए गए डेटा के साथ एक साझा डेटाबेस।

ध्यान दें कि यदि आप कई डेटाबेस रूट पर जाते हैं, तो आपको --smallfiles स्टार्टअप विकल्प पर गौर करना चाहिए। यह आपको उन स्थितियों में मदद करेगा जहां आपके पास बहुत से लोग "परीक्षण खाते" सेट करते हैं, लेकिन जो उनके साथ बहुत कुछ नहीं करते हैं।

वैसे भी, उम्मीद है कि उपरोक्त आपको विचार के लिए भोजन देता है। https://groups.google.com पर सर्च करें /forum/?fromgroups#!searchin/mongodb-user/multitenant चूंकि इस विशिष्ट मुद्दे पर मोंगो मंचों में कई चर्चाएं हुई हैं।

जहां तक ​​ऑडिट के निहितार्थ का सवाल है, यह निर्भर करता है कि आपको किस स्तर के ऑडिटिंग अनुपालन का पालन करना है। यदि आप फॉर्च्यून 1000 ग्राहकों की अपेक्षा करते हैं, तो आपकी अनुपालन आवश्यकताएं कहीं अधिक होंगी (और अधिक महंगी - $10 से $100 से हजारों डॉलर के बारे में सोचें), यदि आपके ग्राहक ऐसे स्टार्टअप हैं जिन्होंने एसएएस70 के बारे में कभी नहीं सुना होगा, आदि। उत्तर यह भी निर्भर करता है कि आप किस प्रकार का डेटा संग्रहीत कर रहे हैं - क्या यह उपयोगकर्ता वित्तीय डेटा है, या यह केवल उपयोगकर्ता फ़ोरम है? मूल रूप से, यदि भविष्य में बड़ी कंपनियों के लिए सुरक्षा ऑडिट पास करने की आवश्यकता के बारे में कोई चिंता है, तो साझा डेटाबेस दृष्टिकोण के बारे में भी न सोचें।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. किसी सरणी में किसी आइटम को अपडेट करें जो किसी सरणी में है

  2. विभिन्न एम्बेडेड संरचनाओं को एक ही नाम पर प्रोजेक्ट करें

  3. नेवला के साथ संग्रह के तत्वों को खोजें और गिनें

  4. बड़ी संख्या में मोंगो कनेक्शन का उपभोग करने वाला उल्का

  5. MongoDB C# ड्राइवर और सर्वर द्वारा उत्पन्न ObjectIds