मेरे अनुभव में जो संग्रहीत डेटा पर काफी निर्भर करता है। दोनों तरीकों के फ़ायदे और नुकसान हैं। अगर यह एक MMORPG है वेबगेम फिर कहें कि आपके पास एक PC है जिसमें एक बेल्ट है। और पीसी लड़ाई के दौरान त्वरित पहुंच के लिए उस बेल्ट में औषधि डाल सकता है। इसलिए हम उस औषधि के आईडी को सहेजना चाहते हैं, जो चरित्र के बेल्ट में जमा हो जाती है।
सबसे आम अनुरोध होगा "सभी औषधि प्राप्त करें जो चरित्र एक्स के पास है"। और यह दोनों ही मामलों में काफी तेजी से चलेगा।
इन औषधि-आईडी को एक अलग तालिका के रूप में संग्रहीत करने के लाभ:
- आप एक विशिष्ट औषधि-आईडी की खोज करने में सक्षम हैं और यह बहुत तेज़ है। इन-गेम-उदाहरण:व्यवस्थापकों ने गेम से कुछ पोशन हटा दिया है और इसलिए आपको सभी के बेल्ट अपडेट करने की आवश्यकता है
- आपको कुछ अच्छे आंकड़े मिल सकते हैं। इन-गेम-उदाहरण:सभी खिलाड़ियों में सबसे अधिक उपयोग की जाने वाली औषधि की तलाश करें
- डेटाबेस डेटा अखंडता को बनाए रखेगा। इन-गेम-उदाहरण:आप कभी भी ऐसी स्थिति का सामना नहीं करेंगे जब आप पोशन का उपयोग करेंगे और गेम कहता है "ओह, उस आईडी वाला पोशन मौजूद नहीं है"
- यह निरंतरता के लिए अच्छा है। इन-गेम-उदाहरण:आपने बेल्ट से एक औषधि ली और उसे बैकपैक में डाल दिया। खेल दो सरल स्पष्ट SQL कथनों के साथ लेनदेन को कॉल करके इसे कार्यान्वित कर सकता है।
- आप जॉइन कर सकते हैं। इन-गेम-उदाहरण:हमें बेल्ट में उनके नाम, वजन और छवियों के साथ औषधि की एक सूची प्राप्त करने की आवश्यकता है जो अलग तालिका में संग्रहीत हैं।
- आप पूरे बेल्ट को अपडेट किए बिना किसी एक आइटम को अपडेट कर सकते हैं। इन-गेम-फोर्स्ड-उदाहरण:आपके बेल्ट में एक लाख औषधि है और आपने एक पी ली है।
एक json के रूप में संग्रहीत करने के लाभ:
- यदि यह एक ब्राउज़र गेम है जो क्लाइंट साइड पर जावास्क्रिप्ट का उपयोग करता है, तो आपको सेलेक्ट-क्वेरी करने और फिर json में कनवर्ट करने के बजाय एक साधारण अनुरोध के साथ Belt json ऑब्जेक्ट मिलता है
- आइटम के क्रम को बनाए रखना बहुत आसान है, क्योंकि json arrays पहले से ही ऑर्डर किए गए हैं। टेबल-एप्रोच के साथ आपको "ऑर्डर" नामक अतिरिक्त कॉलम की आवश्यकता होगी और इसे हर बार अपडेट करें और जांचें कि क्या दो आइटमों में एक ही ऑर्डर आदि नहीं है।
- आप क्लाइंट साइड पर बेल्ट में पुनर्व्यवस्था का एक गुच्छा कर सकते हैं, फिर "लागू करें" पर क्लिक करें - बूम, एक क्वेरी के साथ आप पूरे बेल्ट को अपडेट कर सकते हैं। जबकि तालिका-दृष्टिकोण के साथ आपको उसके लिए कम से कम दो प्रश्नों की आवश्यकता होगी (DELETE + INSERT)
- इसके अलावा, लोकप्रिय DBMS में प्लगइन्स हैं। जो डेटाबेस में json फंक्शन को सपोर्ट करता है
निचली पंक्ति:वे प्रमुख नहीं हैं फायदे हैं न कि महत्वपूर्ण समस्या। वे सभी हल करने योग्य हैं और आवेदन के उचित डिजाइन के साथ दोनों समाधान ठीक काम करेंगे। डेटा को कैसे स्टोर किया जाए, यह तय करने से पहले, अपने आप से पूछें कि इन डेटा के लिए सबसे आम उपयोग-मामले क्या हैं और बाद में समाधान चुनें।