यह आपके प्रोजेक्ट के आकार और आवश्यकताओं पर निर्भर करता है।
मैं एक तरीका देख सकता हूं जिसमें उपयोगकर्ताओं के बारे में डेटा को दो सेटों में विभाजित किया जा सकता है, विभिन्न उद्देश्यों और इस प्रकार आवश्यकताओं के साथ:
- पहचान डेटा: उपयोगकर्ता नाम, पासवर्ड हैश, ईमेल पता, अंतिम लॉगिन समय, आदि।
- उपयोगकर्ता प्रोफ़ाइल डेटा, जिसमें उपयोगकर्ता प्राथमिकताएं, नवीनतम गतिविधि, स्थिति अपडेट आदि शामिल हैं।
ध्यान दें कि उपयोगकर्ता के बारे में कुछ विशेषताएं हैं जो या तो श्रेणी में गिर सकती हैं (जैसे उपयोगकर्ता की जन्म तिथि)। हालांकि इन दो सेटों के बीच का अंतर यह है कि पहले एक को कसकर नियंत्रित किया जाता है और केवल कुछ वर्कफ़्लो के माध्यम से इसे संशोधित किया जा सकता है। उदाहरण के लिए, पासवर्ड बदलने के लिए मौजूदा पासवर्ड प्रदान करने की आवश्यकता हो सकती है, ईमेल बदलने से ईमेल के सत्यापन की आवश्यकता हो सकती है, और इसका उपयोग उस स्थिति में किया जाएगा जब उपयोगकर्ता पासवर्ड भूल जाता है।
वरीयताओं को ऐसे ACL की आवश्यकता नहीं होती है, और सैद्धांतिक रूप से उपयोगकर्ता या किसी अन्य एप्लिकेशन द्वारा इसे तब तक संशोधित किया जा सकता है जब तक उपयोगकर्ता इसकी सहमति देते हैं। यदि कोई एप्लिकेशन दुर्भावनापूर्ण रूप से या बग के कारण डेटा कम हो जाता है या इसे संशोधित करने का प्रयास करता है (तो अन्य सुरक्षा उपाय किए जाते हैं।) हालांकि, यह दांव कम है, हालांकि, यह आमतौर पर विनाशकारी होगा यदि उपयोगकर्ता नाम, पासवर्ड या ईमेल में से कोई भी संशोधित किया जा सकता है। चूँकि वे या तो उपयोगकर्ता की पहचान या सेवा को अस्वीकार करने या व्यवस्थापक के लिए समर्थन लागत आदि का कारण बन सकते हैं।
इस प्रकार, आमतौर पर डेटा को दो प्रकार की प्रणालियों में संग्रहीत किया जाता है:
- पहचान डेटा आमतौर पर एक निर्देशिका या IAM समाधान में जाएगा।
- प्राथमिकता डेटा एक डेटाबेस में समाप्त हो जाएगा।
यह कहते हुए कि, व्यवहार में, लोग इन नियमों का उल्लंघन करेंगे और एक या दूसरे (जैसे ASP.NET सदस्यता प्रदाता के पीछे SQL सर्वर) का उपयोग करेंगे।
जैसे-जैसे पहचान डेटा बड़ा होता जाता है या इसका उपयोग करने वाला संगठन बड़ा होता जाता है, विभिन्न प्रकार की समस्याएं बढ़ती जाती हैं। उदाहरण के लिए, निर्देशिका के मामले में, यह बहु-सर्वर वातावरण में सभी सर्वरों में तुरंत पासवर्ड परिवर्तन को दोहराने का प्रयास करेगा। हालांकि, उपयोगकर्ता वरीयता को केवल अंतिम स्थिरता की आवश्यकता होती है। (FYI करें: ये दोनों CAPS प्रमेय के विभिन्न अनुकूलन हैं।)
अंत में, डायरेक्टरी (esp। ऑनलाइन / क्लाउड डाइरेक्टरी) OAUTH (जैसे Facebook, Google, Microsoft Account, ADFS) जैसे प्रोटोकॉल का उपयोग करते हुए अन्य संसाधनों के लिए एक्सेस टोकन भी जारी करेगी, जबकि एक डेटाबेस को ऐसी कोई आवश्यकता नहीं है। एक डेटाबेस काफी जटिल जोड़ और क्वेरी संरचना का समर्थन करेगा, जिसे निर्देशिका की आवश्यकता नहीं है।
अधिक जानकारी के लिए, पहचान निर्देशिका बनाम डेटाबेस पर कुछ खोजों से मदद मिलेगी।
यह अंततः नीचे आता है कि आपके परिदृश्य क्या हैं और भविष्य में होने की उम्मीद है, जिसमें किसी तीसरे पक्ष के साथ एकीकरण (और वे जो उपयोग कर रहे हैं) शामिल हैं। यदि यह एक अच्छी तरह से निहित परियोजना है और आप आश्वस्त हैं कि आप उपयोगकर्ता पहचान डेटा को सुरक्षित कर सकते हैं और सही तरीके से प्रमाणित कर सकते हैं, तो आप डेटाबेस के लिए जा सकते हैं। अन्यथा, यह एक पहचान निर्देशिका की जांच के लायक हो सकता है।
यदि आप DB, IMO के लिए जाते हैं, तो एक DB बनाम दो का उपयोग करके अंततः उपयोगकर्ताओं और अनुप्रयोगों दोनों के लिए, अभिगम नियंत्रण में कमी आएगी।