2010-12-10 7 views
5

के लिए नोएसक्ल विकल्प मैं सोच रहा था कि एक सामान्य एमएमओआरपीजी के लिए या किसी rdbms के संयोजन के साथ एक nosql विकल्प के किस प्रकार के लाभ हो सकते हैं। विशेष रूप से, मैं उत्सुक हूं कि कैसे डेटा अखंडता को nosql के अंतर्गत संरक्षित किया जाता है।एमएमओआरपीजी

परिदृश्य 1:: चलो एक ही समय में कहते हैं कि खिलाड़ी ए और बी हमले खिलाड़ी सी चलो

मैं कुछ उदाहरण हैं, जहां मैं कैसे सर्वर तर्क काम करेगा के रूप में एक तरह से उलझन में हूँ दे देंगे।

लेन-देन { attacker.health = newAttackerHealth

defender.health = newDefenderHealth

शुरू: एक player_stats.kill_count जो भी खिलाड़ी को मारता खिलाड़ी सी आम तौर पर के लिए अद्यतन किया जाता है, एक निम्नलिखित तरीके से इस AttackPlayerRequest संभाल सकता है

अगर defender.Health == 0 { attacker.stats.kills + = 1 } }

परिदृश्य 2: खिलाड़ी एक से एक एनपीसी विक्रेता को एक आइटम एलएलएस, और जल्दी ही एक ही आइटम को अपनी सूची से जमीन पर छोड़ने का प्रयास करता है। (भले ही आप यूआई को अस्वीकार कर रहे हों, फिर भी वे निश्चित रूप से तारों को तारों पर रख सकते हैं)।

यह सूची स्पष्ट रूप से प्रत्येक प्लेयर-प्लेयर प्लेयर-वर्ल्ड इंटरैक्शन के बारे में बताती है और प्रभाव डालती है। सूचना का एक आखिरी टुकड़ा यह है कि सर्वर थ्रेड किया गया है क्योंकि हम अन्य खिलाड़ियों को खेल में सरल चीजों को करने में सक्षम होने से रोकने के लिए विशेष रूप से लंबा अनुरोध नहीं चाहते हैं।

मुझे लगता है कि मेरा बड़ा सवाल यहां है, क्या मैं नोस्क्ल के बारे में कुछ गलत समझ रहा हूं जिसमें यह एक छोटी सी समस्या है? यदि नहीं, तो क्या यह हल करने के लिए nosql विकल्पों का डोमेन है? एक सामान्य एमएमओ के तहत, सर्वर प्रदर्शन को बढ़ाने के लिए nosql विकल्पों को इंजेक्ट कर सकता है?

+1

आपको बेहतर उत्तर मिल सकता है: http://gamedev.stackexchange.com/ क्योंकि आपका प्रश्न गेम विकास से संबंधित है। – HoLyVieR

+0

अधिकांश नोएसक्यूएल सिस्टम लेनदेन का समर्थन नहीं करते हैं। क्या आपको उनकी ज़रूरत है? – TTT

+0

मुझे नहीं लगता कि नोएसक्यूएल सिस्टम हैं जिनमें डेटा अखंडता के लिए सुविधाएं हैं। यह कुछ ऐसा है जो आवेदन में किया जाना चाहिए। नोएसक्यूएल समूह कितना अद्भुत है एक बहुत ही विविध समूह है, इसलिए शायद इस सामान्य नियम का अपवाद हो। – TTT

उत्तर

2

मुझे लगता है कि एमएमओ सर्वर स्मृति में सूचीबद्ध कई चीजें करेंगे। मुझे नहीं लगता कि वे डेटाबेस में उन सभी को फ्लश करते हैं। मुझे लगता है कि नए गियर प्राप्त करने या अपने गियर लेआउट को बदलने जैसे अधिक कठिन कार्यक्रमों को बचाया जाएगा।

यह बहुत अधिक डेटा है, लेकिन लगभग हर एक मुकाबला बातचीत के रूप में नहीं।

0

मेरी समझ के लिए, nosql तकनीक ऐसी चीज है जिसका उपयोग आप बैच नौकरी संदर्भ में करेंगे, न कि वास्तविक समय के संदर्भ में। वास्तव में, ओपन सोर्स एच-बेस कार्यान्वयन हैडूप वितरित फ़ाइल सिस्टम (एचडीएफएस) के शीर्ष पर बैठता है, जिसका मुख्य रूप से केवल पढ़ने-योग्य स्थितियों के लिए उपयोग किया जाता है।

विचार यह है कि आप 'डिस्क पर' रख रहे पूरे डेटा सेट (वास्तव में एक वितरित फ़ाइल सिस्टम पर) रखकर एक रिकॉर्ड खोजना चाहते हैं। पेटस्केल डेटासेट के लिए चीजों को स्मृति में रखना अक्षम है, इसलिए आप डेटा की 'तलाश' करने में सक्षम होने के लिए भारी मात्रा में डिस्क पढ़ने का उपयोग करते हैं। वितरित प्रकृति सुनिश्चित करता है (या सुविधा) कि यह समय पर फैशन में होता है।

सिद्धांत यह है कि आप एक बहुत बड़े डेटाबेस से डेटा खींचने, नेटवर्क पर भेजने और फिर इसे स्थानीय नोड पर संसाधित करने के बजाय, वितरित डेटा में प्रसंस्करण लाते हैं। पिग (http://pig.apache.org/) और हाइव (http://hive.apache.org/) एचडीएफएस के शीर्ष पर इंटरफेस हैं, जो एसक्यूएल जैसी क्वेरी के लिए अनुमति देते हैं, लेकिन पृष्ठभूमि में, वे मैप्रिडस का उपयोग करते हैं नौकरियों। बातचीत धीमी है, लेकिन यह बात नहीं है। मुद्दा यह है कि विशाल डेटा सेट को संसाधित किया जा सकता है।

गेमिंग के लिए, यह स्पष्ट रूप से जाने का तरीका नहीं है।तो आप उम्मीद करेंगे कि वितरित फ़ाइल सिस्टम से डेटा प्राप्त किया जाएगा, सर्वर पर कैश किया जाएगा, और सत्र के दौरान उपयोग किया जाएगा, जब गेम समाप्त हो जाएगा, तो सभी डेटा डेटा सेट पर वापस किए जाएंगे। (कम से कम, मैं कल्पना करता हूं कि यह जाएगा)।

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

+0

आप वास्तव में बैच प्रोसेसिंग के लिए हैडोप और एचबेस का उपयोग करते हैं लेकिन नोएसक्यूएल एक विविध समूह है। उदाहरण के लिए मोंगो डीबी एक ओएलटीपी प्रणाली है लेकिन लेनदेन के बिना, ओएलपी। यहां NoSQL डीबी के लिए उपयोग मामलों की एक सूची: http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html – TTT

4

यह सब इस बात पर निर्भर करता है कि आपका गेम कैसा चल रहा है।

NoSQL

Farmville फेसबुक पर NoSQL उपयोग करता है। फार्मविले 1 विशाल सर्वर की तरह काम करता है कि हर कोई चालू है। मान लें कि फार्मविले अपने डेटाबेस क्लस्टर में 3 कंप्यूटर का उपयोग करता है। सैन डिएगो में कंप्यूटर 1। न्यूयॉर्क में कंप्यूटर 2। मास्को में कंप्यूटर 3। मैं सैन डिएगो से फेसबुक पर लॉगिन करता हूं इसलिए मैं डेटाबेस से कनेक्ट हूं। मैं ऊपर उठता हूं और लॉग आउट करता हूं। आखिर में कंप्यूटर 1 कंप्यूटर 2 और 3 को बताएगा कि मैंने कैसे स्तर बनाया है, लेकिन रूस में किसी व्यक्ति को मेरे खाते में उन बदलावों को देखने से एक घंटे तक हो सकता है।

नोएसक्यूएल स्केलिंग क्लस्टर में एक और कंप्यूटर जोड़ने और उस कंप्यूटर का उपयोग करने के लिए उस क्षेत्र में वेबसाइट को कहने के समान सरल है।

एसक्यूएल

वहाँ एसक्यूएल कार्य कर रही के कई तरीके हैं, लेकिन मैं इसे NoSQL

के समान बनाने के लिए एक तरह से समझा जाएगा

प्रत्येक डाटा सेंटर का अपना एसक्यूएल के साथ 10 खेल सर्वर, प्रत्येक होगा डाटाबेस + 1 सब मास्टर डेटाबेस। उप मास्टर डेटाबेस ने सभी 10 सर्वरों के बीच जानकारी साझा की ताकि यदि आप सर्वर 1 में लॉगिन करते हैं और चरित्र जॉन डो बनाते हैं, तो लॉगआउट करते हैं, तो सर्वर 10 में आपका चरित्र होगा यदि आप उस सर्वर पर लॉग इन करते हैं।

उप मास्टर फिर अपने मुख्यालय में मास्टर सर्वर के साथ अपनी जानकारी साझा करता है। मास्टर सर्वर तब सभी अन्य डेटा केंद्रों पर जॉन डो को हर दूसरे उप-मास्टर में साझा करेगा, और वे उप स्वामी अपने गेम सर्वर अपडेट करेंगे। यह कॉन्फ़िगरेशन आपको सैन फ्रांसिस्को में सर्वर वीड में लॉगिन करने की अनुमति देगा, मॉस्को में सर्वर वोडका पर अपना चरित्र, लॉगआउट, लॉगिन, और अभी भी अपना चरित्र देखें।

वर्ल्ड वार्कक्राफ्ट की तरह खेल एसक्यूएल का उपयोग करते हैं लेकिन डेटाबेस के केवल कुछ हिस्सों को साझा किया जाता है। यह प्रत्येक कंप्यूटर पर डेटाबेस आकार कम करने और हार्डवेयर आवश्यकताओं को कम करने की अनुमति देता है।

वास्तविक जीवन की स्थिति में प्रत्येक उप मास्टर के पास बैकअप सब मास्टर होगा, और आपके मास्टर सर्वर के पास कुछ बैकअप सर्वर होंगे, जब एक सर्वर आपके पूरे नेटवर्क को बंद कर देगा।

1

एमएमओआरपीजी जो विलंबता के बारे में चिंतित हैं आमतौर पर एक सर्वर पर चलते हैं, और रैम में ऑब्जेक्ट मॉडल जानकारी को छोड़कर सबकुछ स्टोर करते हैं। युद्ध वातावरण के साथ कुछ भी विलंबता के बारे में चिंतित हैं।

एचडीडी का उपयोग करने वाली कोई भी चीज, चाहे वह आरडीबीएमएस या नोएसक्यूएल हो, युद्ध वातावरण में एक बुरा विचार है। ऑब्जेक्ट अनुकूलन, स्थिति, आंदोलन वेक्टर, अभिविन्यास वेक्टर, स्वास्थ्य, शक्ति इत्यादि को अद्यतन और साझा करना ... एचएचडी का उपयोग करने वाले किसी भी तंत्र के माध्यम से एक सर्वर पर 10,000 उपयोगकर्ताओं के बीच डेटा केवल मूर्खतापूर्ण है यदि आप विलंबता के बारे में चिंतित हैं। यहां तक ​​कि यदि आपके पास एक साधारण क्षेत्र में लड़ रहे 2 लोग हैं, तो विलंबता अभी भी एक मुद्दा है और आपको एक सर्वर पर चलना चाहिए और सबकुछ स्मृति में रखना चाहिए।जो कुछ भी प्रस्तुत किया जाएगा वह आपके पीसी पर या आपके पीसी की याद में भी होना चाहिए।

MMORPGs कि विलंबता कई सर्वरों पर चला सकते हैं और किसी भी डेटाबेस आप चाहते हैं के बारे में चिंतित नहीं हैं (NoSQL, MySQL, आदि ...)

आप Farmville या neopets की तरह एक खेल बना रहे हैं, तो हाँ, NoSQL या MySQL मान्य विकल्प बन जाते हैं।

संबंधित मुद्दे