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

उल्का विधि बनाम नियमों को अस्वीकार/अनुमति दें

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

तरीके

समर्थक

  • तरीके बाहरी पुस्तकालय की आवश्यकता के बिना मनमाने ढंग से जटिलता के स्कीमा और सत्यापन नियमों को सही ढंग से लागू कर सकते हैं। साइड नोट - आपके इनपुट की संरचना को सत्यापित करने के लिए चेक एक उत्कृष्ट उपकरण है।

  • आपके आवेदन में प्रत्येक विधि सत्य का एक स्रोत है। यदि आप 'posts.insert' विधि बनाते हैं, तो आप आसानी से सुनिश्चित कर सकते हैं कि आपके ऐप में पोस्ट डालने का यही एकमात्र तरीका है।

चोर

  • विधियों को एक अनिवार्य शैली की आवश्यकता होती है, और वे एक ऑपरेशन के लिए आवश्यक सत्यापन की संख्या के संबंध में क्रियात्मक होते हैं।

क्लाइंट-साइड ऑपरेशंस

समर्थक

  • allow /deny एक सरल घोषणात्मक शैली है।

चोर

  • update पर स्कीमा और अनुमतियों को मान्य करना ऑपरेशन असीम रूप से कठिन है। यदि आपको स्कीमा लागू करने की आवश्यकता है तो आपको संग्रह 2 जैसे बाहरी पुस्तकालय का उपयोग करने की आवश्यकता होगी। केवल यही कारण आपको विराम देना चाहिए।

  • संशोधनों को आपके पूरे आवेदन में फैलाया जा सकता है। इसलिए, यह पहचानना मुश्किल हो सकता है कि कोई विशेष डेटाबेस ऑपरेशन क्यों हुआ।

सारांश

मेरी राय में, allow /deny अधिक सौंदर्यपूर्ण रूप से प्रसन्न है, हालांकि यह मौलिक कमजोरी अनुमतियों को लागू करने में है (विशेष रूप से अपडेट पर)। मैं ऐसे मामलों में क्लाइंट-साइड संचालन की अनुशंसा करता हूं जहां:

  • आपका कोडबेस अपेक्षाकृत छोटा है - इसलिए उन सभी उदाहरणों के लिए grep करना आसान है जहां कोई विशेष संशोधक होता है।

  • आपके पास कई डेवलपर नहीं हैं - इसलिए आपको सभी सहमत होने की आवश्यकता नहीं है कि X में सम्मिलित करने का एक और केवल एक ही तरीका है संग्रह।

  • आपके पास सरल अनुमति नियम हैं - उदा। केवल दस्तावेज़ का स्वामी ही इसके किसी भी पहलू को संशोधित कर सकता है।

मेरी राय में, एमवीपी बनाते समय क्लाइंट-साइड ऑपरेशंस का उपयोग करना एक उचित विकल्प है, लेकिन मैं अन्य सभी स्थितियों के लिए विधियों पर स्विच करूंगा।

अपडेट 2/22/15

सैशको स्टुबैलो ने अनुमति/अस्वीकार को सम्मिलित/अद्यतन/निकालने के तरीकों से बदलने का प्रस्ताव बनाया।

6/1/16 अपडेट करें

उल्का गाइड यह स्थिति लेता है कि allow/deny हमेशा बचना चाहिए।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब मानदंड से मेल खाने वाली सभी वस्तुओं में सभी सरणी तत्वों की गणना करता है

  2. MongoDB संग्रह में सभी दस्तावेज़ों में एक कुंजी के मूल्य का योग कैसे करें

  3. MongoDB में डेटाबेस को हटाने के 2 तरीके

  4. कस्टम फ़ंक्शन परिकलित कॉलम मोंगोडब प्रोजेक्शन

  5. MongoDB स्कीमा योजना युक्तियाँ