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

टर्न आधारित मल्टीप्लेयर आईफोन बोर्ड गेम के लिए मुझे अपने डीबी और एपीआई सर्वर को कैसे आर्किटेक्ट करना चाहिए? (नोडज, मोंगो, सोफे, आदि के बारे में सोच)

सबसे पहले, Nodejs NoSQL डेटाबेस में रिवर्स टीसीपी प्रॉक्सी लिखने के लिए बहुत बढ़िया है। आप सभी मानक आदेशों को पारित कर सकते हैं लेकिन अपने एपीआई को अपने जादू से बदल/विस्तारित कर सकते हैं, उदा। MongoDB को HTTP बोलना या CouchDB को सॉकेट पर बाइनरी प्रोटोकॉल बोलना।

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

  1. काउच डीबी। यह तेज़, विश्वसनीय है, और कई समवर्ती HTTP कनेक्शनों को संभाल सकता है। यह शायद सबसे अच्छा विकल्प है क्योंकि रेडिस के विपरीत यह एक संदेश प्रसारित कर सकता है जब कोई दस्तावेज़ बदलता है। सतत परिवर्तन API आपके लिए प्रत्येक खिलाड़ी के बोर्ड में परिवर्तन के लिए उसके ऐप मॉनीटर को रखना बहुत आसान बना देता है। अनुरोध ऐसा दिखाई दे सकता है:

    curl "$HOST/dbname/_changes?filter=app/gameboard&feed=continuous&gameid=38934&heartbeat=1000

    किसी भी समय प्रासंगिक दस्तावेज़ बदलने पर प्रत्येक क्लाइंट को प्रतिक्रिया में प्रति पंक्ति एक JSON ऑब्जेक्ट प्राप्त होगा। (और प्रत्येक 1000ms पर एक प्रकार की रखवाली के रूप में एक रिक्त न्यूलाइन।)

  2. रेडिस। यह सॉकेट पर बात करने के लिए एक साधारण लाइन-आधारित प्रोटोकॉल (जैसे MemcacheD ++) का उपयोग करता है और आपको सूचियों, सेट, हैश को मनमाने ढंग से - यहां तक ​​​​कि बाइनरी - मानों को स्टोर करने की अनुमति देता है। यह बहुत तेज़ है क्योंकि सब कुछ स्मृति में होता है लेकिन डिस्क पर अतुल्यकालिक रूप से बना रहता है। लेकिन सबसे अधिक आपको इसका मूल्यांकन करना चाहिए क्योंकि इसमें पहले से ही PubSub है। नोटिफ़िकेशन बेक किए गए हैं। ध्यान दें कि आपको खिलाड़ियों द्वारा साझा किए जाने वाले चैनल पर मूव नोटिफिकेशन स्पष्ट रूप से प्रकाशित करना होगा क्योंकि जब कोई कुंजी/मान बदलता है तो Redis स्वचालित रूप से प्रकाशित नहीं होगा।

चूंकि MongoDB में परिवर्तनों को देखने या पबसुब करने के लिए कोई तंत्र नहीं है, इसलिए मैं इसे एक अच्छा विकल्प नहीं मानता, हालांकि अतिरिक्त प्रयास से आप इसे काम कर सकते हैं।

तो निष्कर्ष निकालने के लिए, आप "बड़े लैंप स्टैक" को अकेले कॉच डीबी, अकेले रेडिस, या किसी एक नोड ऐप के पीछे रखे गए एपीआई को फ़िल्टर/विस्तारित करने में सक्षम हो सकते हैं जो वे पहले से ही आपके गेम में फिट बैठते हैं।

शुभकामनाएँ!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं कंसोल में MongoDB लॉग संदेशों को कैसे अक्षम कर सकता हूं?

  2. MongoDB:लिंक के बिना यादृच्छिक तत्व कैसे वापस करें? (मोंगोडीबी, सी#)

  3. Nodejs / Express - मेरा ऐप लॉन्च करना:Express.createServer () पदावनत है

  4. पिछले अनुक्रम संख्या या टाइमस्टैम्प का उपयोग करके चलाते समय किनेसिस से पढ़ें खाली रिकॉर्ड दे रहा है

  5. MongoDB:विभिन्न फाइलों में परिभाषित विभिन्न संग्रहों के लिए उप-दस्तावेज़ के रूप में एक स्कीमा का उपयोग कैसे करें