इसका उत्तर हां है, यह एक वैध विकल्प है लेकिन नहीं, यह शायद एक महान विचार नहीं है ।
SQL के साथ दो प्रमुख समस्याएं हैं जो NoSQL को संबोधित करने की कोशिश करता है, जब यह गेम की बात आती है।
पहला विलंबता, या अंतराल है। एक मायने में, एसक्यूएल डेटाबेस तेजी से धधक रहे हैं, एक सेकंड के दसवें हिस्से में हजारों लेनदेन या अधिक प्रसंस्करण करते हैं। एक अन्य अर्थ में, वे अविश्वसनीय रूप से धीमे हैं, क्योंकि बस कुछ ही लेन-देन को संसाधित करने में उतना ही समय लगता है। अधिकांश डेटाबेस उपयोगों के लिए, यह कोई मायने नहीं रखता है, लेकिन गेम में एक वास्तविक समय घटक होता है, इसलिए यह सिर्फ यह नहीं है कि आप प्रति सेकंड कितने लेनदेन कर सकते हैं, लेकिन डेटाबेस लेनदेन का जवाब देने में औसत समय लगता है।
यह विलंबता वास्तविक समय के खेल के लिए एक बड़ी समस्या है। कई डेवलपर्स जिन्हें बड़े डेटाबेस (आमतौर पर MMOs के लिए) की आवश्यकता होती है, इन स्टालों से बचने के लिए डेटाबेस और गेम सर्वर के बीच बैठते हैं और फिर समय-समय पर कैश फ्लश करते हैं। समस्या? आपने केवल डेटाबेस का उपयोग करने के मुख्य कारणों को बाहर फेंक दिया - परमाणुता, संगति, अलगाव और स्थायित्व ।
लेकिन यह समस्या वेब गेम पर लागू नहीं होती है। आप पहले से ही खिलाड़ी और खेल के बीच एक उच्च-विलंबता कनेक्शन प्राप्त कर चुके हैं, इसलिए आपको थ्रूपुट एसक्यूएल प्रदान करता है, साथ ही परिपक्व, प्रसिद्ध सॉफ्टवेयर के लाभ भी मिल सकते हैं।
हालाँकि, दूसरी समस्या, आप पर लागू होती है, और वह है वस्तु-संबंधपरक प्रतिबाधा बेमेल । खेल वस्तुओं से निपटते हैं, डेटाबेस पंक्तियों से निपटते हैं। यदि आप भाग्यशाली हैं कि एक वस्तु को केवल उसके खेतों को सूचीबद्ध करके एक पंक्ति में बनाया जा सकता है, लेकिन ज्यादातर समय वस्तुएं पदानुक्रमित होती हैं, और आप उन्हें किसी तरह से बाहर निकालने के लिए उन्हें पंक्तियों में ले आते हैं।
दस्तावेज़-आधारित डेटाबेस, जैसे CouchDB और MongoDB, इस समस्या को हल करके शीर्ष-स्तरीय ऑब्जेक्ट पर दस्तावेज़ को बढ़ावा देते हैं, बजाय पंक्ति ("दस्तावेज़" इस मामले में "ऑब्जेक्ट" का एक पर्याय है)। लेकिन ऐसा करने से, वे SQL डेटाबेस के कई लाभ खो देते हैं। थ्रूपुट बहुत कम है, और लॉकिंग एल्गोरिदम अधिक जटिल हो जाते हैं।
अच्छी खबर यह है कि जो भी भाषा आप उपयोग कर रहे हैं उसके लिए पहले से ही बहुत सारे ऑब्जेक्ट-रिलेशनल मैपिंग (ओआरएम) टूल उपलब्ध हैं। वे आपको डेटाबेस में मेमोरी और पंक्तियों के बीच काफी पारदर्शी तरीके से अनुवाद करने देते हैं। ये उपकरण आमतौर पर बड़े पैमाने पर वास्तविक समय के खेल के लिए उपयुक्त नहीं हैं, क्योंकि वे SQL और NoSQL डेटाबेस के सबसे खराब प्रदर्शन पहलुओं को प्रस्तुत कर सकते हैं। लेकिन यह एक वेब गेम के लिए ठीक है - कम से कम, जब आप प्रदर्शन समस्याओं में भाग लेते हैं, तो आप पुराने तरीके से लेनदेन करने पर वापस जा सकते हैं। विलंबता समस्या आपको चोट नहीं पहुँचाती है, और बढ़ी हुई थ्रूपुट आपको मदद करती है।
अंत में, एक बिंदु पर विस्तार करने के लिए मैंने कहीं और बनाया है : यह स्थैतिक गेम डेटा के बारे में नहीं है। मैं आपके आइटम विवरण या आपके हथियार क्षति या स्प्राइट या यहां कुछ भी के बारे में बात नहीं कर रहा हूं। मेरा मतलब है कि असली, पारस्परिक खेल डेटा, जैसे खिलाड़ी की सूची में या उनके आँकड़े क्या हैं। स्थैतिक डेटा के लिए आपको एक डेटा स्टोर की आवश्यकता होती है। शायद यह पता चला है कि करने के लिए सबसे आसान काम उसी डेटाबेस का उपयोग करना है, जिसके लिए डेटा स्टोर है क्योंकि आपके पास एक महान ओआरएम है; शायद आपको सिर्फ फाइल सिस्टम की जरूरत होगी। यह दो अलग-अलग समस्याएं हैं, और दोनों मामलों में एक उत्तर की आवश्यकता नहीं है (और शायद नहीं)।