নোএসকিউএল - এটি কি ওয়েব ভিত্তিক গেমের জন্য একটি বৈধ বিকল্প? [বন্ধ]


20

একটি সুযোগ এবং একঘেয়েমি থেকে, একটি বন্ধু এবং আমি একটি ওয়েব ভিত্তিক গেমটি করার সিদ্ধান্ত নিয়েছিলাম। এটি আমি প্রথম 'গেম' তৈরি করব, যেহেতু সাধারণত আমি জাঙ্গোতে ওয়েব অ্যাপ্লিকেশনগুলি প্রোগ্রাম করি।

আমি গেমের জন্য একই কাঠামোটি ব্যবহার করার সিদ্ধান্ত নিয়েছি, তবে আমি ডেটা স্টোরেজ সম্পর্কে পুরোপুরি নিশ্চিত নই, যেহেতু আমি ভবিষ্যতের প্রয়োজনীয়তা এবং ডিবি সম্পর্কিত সমস্যাগুলি আগে থেকেই দেখতে পারি না। ইদানীং, নোএসকিউএল আন্দোলন জোরদার হচ্ছে এবং আমি সেই অঞ্চলটি ঘুরে দেখতে চাই।

অতএব আমার নিম্নলিখিত প্রশ্নগুলি রয়েছে:

  • কোনও নুএসকিউএল ডেটাস্টোরেজ (দস্তাবেজ-ভিত্তিক, যেমন মঙ্গোডিবি) কোনও ওয়েব-ভিত্তিক গেমের জন্য উপযুক্ত হবে?
  • প্রচলিত আরডিবিএমএস, যেমন মাইএসকিউএল ব্যবহার করে কী কী সমস্যা দেখা দিতে পারে?
  • গেমপ্লে চলাকালীন বা সময়োপযোগী ইভেন্টগুলিতে ক্রোন জবসের মতো মোংগোডিবি ব্যবহারকারীর মধ্যে ডেটা ধারাবাহিকতা কীভাবে বীম করবেন?

গেমের ওভারভিউ: খেলোয়াড় দানবদের সাথে লড়াই করে এবং আইটেমগুলি অর্জন করে এবং এ জাতীয় অ্যাডভেঞ্চার গেম।

  • কিছু ডেটা সমস্ত খেলোয়াড় জুড়ে স্থির থাকে: আইটেম, অস্ত্র, দমন, মানচিত্র ইত্যাদি across
  • খেলোয়াড়ের সাথে বাঁধা কিছু ডেটা: ইনভেন্টরি, মেট্রিক্স (পরিসংখ্যান), অগ্রগতি ইত্যাদি
  • একজন খেলোয়াড়ের অন্য খেলোয়াড়ের পরিসংখ্যান এবং স্থিতি সম্পর্কে জানা থাকতে পারে
  • নির্ধারিত কাজগুলি নির্দিষ্ট সময়ের ব্যবধানে পরিচালিত হবে


1
কিছু নোএসকিউএল ডাটাবেসের সাথে একটি সমস্যা হ'ল তারা ইভেন্টের লগের মতো বিশাল ডেটাসেটগুলিতে দ্রুত "ডিজাইন" সময় অনির্দেশিত প্রশ্নগুলি করতে পারে না: গেমদেব.স্ট্যাকেক্সেঞ্জঞ্জ / / 4465/450 দয়া করে মনে রাখবেন যে নো এসকিউএল ডাটাবেসগুলির একই প্রয়োজন কোয়েরি ইঞ্জেকশনের বিরুদ্ধে কৌশলগুলি সাধারণ ডাটাবেসের চেয়ে স্বাভাবিক।
হেন্ডরিক ব্রুমারম্যান

1
@ এনএনএনবি: আপনার পয়েন্টটি পুনঃস্থাপনের একটি দুর্দান্ত উপায় হ'ল "সম্পর্কের ডেটার জন্য একটি রিলেশনাল ডাটাবেস ব্যবহার করুন এবং অবজেক্ট / ডকুমেন্ট ডেটার জন্য কোনও অবজেক্ট / ডকুমেন্ট ডাটাবেস ব্যবহার করুন"। দুর্ভাগ্যক্রমে আমি ভাবি না যে বেশিরভাগ লোকের মডেলিং নিয়ে চিন্তাভাবনা করা বা প্রচুর সময় ব্যয় করা হয়, যা তারা পছন্দগুলি পছন্দ না করেই খারাপ ডিজাইনের দিকে পরিচালিত করে।

2
আপনার প্রশ্নের জবাবে "নোএসকিউএল কি ওয়েব ভিত্তিক গেমগুলির জন্য একটি কার্যকর বিকল্প?" আমি বিশ্বাস করি উত্তরটি হ্যাঁ। নোএসকিউএল ডাটাবেসগুলি ওয়েব-ভিত্তিক গেমগুলির জন্য আগে ব্যবহৃত হয়েছিল (যেমন ফার্মওয়িল) এবং প্রচুর নমনীয়তা সরবরাহ করে। এই প্রশ্নের বিতর্ক করার মূল বিষয়টি মনে হয় "এটি আরও ভাল (NoSQL বা SQL)?"। প্রতিটি সিস্টেমে উপকারিতা এবং কনস রয়েছে, তবে উভয়ই পুরোপুরি বৈধ বিকল্প। আপনি যদি অন্যরকম একটি সিস্টেমের সুবিধাগুলির বিশদ তালিকার সন্ধান করে থাকেন তবে আপনি প্রোগ্রামার্স স্ট্যাকএক্সচেঞ্জকে একটি ভিস্ট দিতে পারেন। :)
এরি প্যাট্রিক

উত্তর:


21

কোনও এনএসকিউএল ডাটাবেস কি কোনও ওয়েব-ভিত্তিক গেমের জন্য উপযুক্ত?

কাফনের কাপড়! সাধারণভাবে বলতে গেলে, অ-সম্পর্কযুক্ত ডাটাবেসগুলি (যেমন মঙ্গোডিবি) গেমসের জন্য অনেক বেশি ভাল, কারণ তারা কীভাবে ডেটা মডেল করে তার ক্ষেত্রে আরও নমনীয়, এবং রিলেশনাল ডাটাবেসগুলির (যেমন এসকিউএল) থেকে আরও পারফরম্যান্স হওয়ার কারণে - তাদের "উইন-উইন" করে তোলে পছন্দ।

প্রচলিত আরডিবিএমএস ব্যবহার করে কী কী সমস্যা দেখা দিতে পারে?

রিলেশনাল ডাটাবেস ব্যবহারের ক্ষেত্রে দুটি বড় ত্রুটি রয়েছে:

  • আপনি ডেটা মডেল করার পথে নমনীয়তার অভাব
  • কর্মক্ষমতা

আপনি যেভাবে ডেটা মডেল করেন তাতে নমনীয়তার অভাব হ'ল একটি বড় অসুবিধা, কারণ একটি রিলেশনাল ডাটাবেস ব্যবহার করা আপনাকে ডেটাবেজের প্রয়োজনীয়তার সাথে মানিয়ে নেওয়ার পরিবর্তে ডেটাবেজের প্রয়োজনীয়তার সাথে মানিয়ে নেওয়ার জন্য ডেটা মডেল করতে বাধ্য করে। উদাহরণস্বরূপ, আপনি কীভাবে একটি সম্পর্কিত ডেটাবেস ব্যবহার করে কোনও খেলায় আইটেম সংরক্ষণ করবেন এবং আপনি নিম্নলিখিত মডেলটির বিষয়ে সিদ্ধান্ত নিচ্ছেন তার জন্য আপনি মডেলটি তৈরি করছেন তা বিবেচনা করুন:

weapon_type_id | weapon_type
1 | sharp

weapon_id | weapon| weapon_type_id | damage
1 | Short Sword | 1 | 5

potion_type_id | potion_type
1 | HP
2 | Mana

potion_id | potion| potion_type_id | modifier
1 | Healing Elixer | 1| 5
2 | Mana Drainer | 2| -5

নিম্নলিখিতগুলি পূরণের জন্য আপনাকে কীভাবে মডেলটি পরিবর্তন করতে হবে তা বিবেচনা করুন:

  • একটি নতুন আইটেম টাইপ যোগ করুন
  • একাধিক অস্ত্রের ধরণের সাহায্যে একটি অস্ত্র তৈরি করুন
  • একটি দমন আইটেম তৈরি করুন যা অস্ত্র হিসাবেও ব্যবহৃত হতে পারে

অবশ্যই এই সমস্ত ক্রিয়া করণীয়, তবে আপনি যখন এটি করছেন তখন আপনি সবচেয়ে সুখী ব্যক্তি হবেন না এবং আপনি সম্ভবত অবাক হবেন, "আমি যা করতে চাই তার জন্য আরও ভাল সমাধান কি এখানে আছে ?," যখন আপনি পারতেন অ-সম্পর্কযুক্ত ডাটাবেসে আরও অনেক নমনীয় মডেলটি ডিজাইন করুন।

দ্রষ্টব্য: ডকুমেন্ট-ভিত্তিক ডাটাবেসগুলি কীভাবে তথ্য সংরক্ষণ করে তা সম্পর্কে আপনি যদি অপরিচিত হন তবে দয়া করে চালিয়ে যাওয়ার আগে এই লিঙ্কটি দেখুন check নীচের উপস্থাপিত মডেলটি পূর্বোক্ত নিবন্ধে যা উপস্থাপন করা হয়েছে তার অনুরূপ যুক্তি ব্যবহার করার জন্য ডিজাইন করা হয়েছে।

db.itemTypes

name: Weapon
types: Sharp

name: Potion
types: HP, Mana

db.items

name: Short Sword
weapon
    type: Sharp (db.itemTypes reference)
    damage: 5

name: Healing Elixer
potion
    type:  HP (db.itemTypes reference)
    modifier: 5

name: Mana Drainer
potion
    type:  Mana (db.itemTypes reference)
    modifier: -5  

name:  Healing Potion Sword
potion
    type: HP (db.itemTypes reference)
    modifier: 10
weapon
    type: Sharp (db.itemTypes reference)
    damage: 15

এসকিউএল বনাম এসএসকিউল ডাটাবেসগুলির পারফরম্যান্সে প্রচুর ভাল নিবন্ধ রয়েছে, তবে এখানে এমন একটি যা প্রয়োগের উদাহরণ দেয় যাতে আপনি নিজের পরীক্ষা চালাতে পারেন: মংগোডিবি বনাম এসকিউএল সার্ভার ২০০৮ পারফরম্যান্স শোডাউন

মঙ্গোডিবি ব্যবহারকারীর মধ্যে আমি কীভাবে ডেটা ধারাবাহিকতার বীমা করতে পারি?

মঙ্গোডিবি একক তথ্য সত্তা (নথি) এ পারমাণবিক ক্রিয়াকলাপগুলি পড়তে / লেখায় সমর্থন করে, তাই মঙ্গোডিবি থেকে কোয়েরির ফলাফলগুলি সর্বদা ডাটাবেসের মধ্যে যা সঞ্চয় থাকে তার সাথে সঠিক হওয়া উচিত।

সম্পাদনা করুন: আইটেম ডাটাবেসের নোএসকিউএল উদাহরণ সরবরাহ করেছেন


উদাহরণস্বরূপ আপনি sql ব্যবহার করে লিখেছেন, আপনি কিভাবে, একটি উচ্চ স্তরে, এটি এনএসকিএল ব্যবহার করে মডেল করবেন?
প্রাণ

4
-1, আপনার উত্তরটি কেবল স্থির ডেটা দেখায়। গেম ডেটাবেসের জন্য এসকিউএল বনাম নোএসকিউএল সম্পর্কিত পুরো বিতর্কটিতে অত্যন্ত গতিশীল ডেটা জড়িত। করণীয় হ'ল সর্বোত্তম কাজটি এমন কোনও নোএসকিউএল লেনদেন দেখাতে হবে যা দুটি খেলোয়াড়ের মধ্যে কোনও কিছুর সাথে লেনদেন করে - খুব সাধারণ ঘটনা এবং একটি বেশিরভাগ গেমই তারা কোন ধরণের চয়ন না করেই ভুল পেয়ে যায়।

3
@ অরি: আরও অনেক স্থিতিশীল তথ্য রয়েছে, তবে কেউ এটিকে লেখার জন্য থ্রুপুট সম্পর্কে চিন্তা করে না, কারণ কেউ এটি লিখে না - কোনও লিখন, কোনও লেনদেন, কোনও এসিডি, কোনও সত্যিকারের ডাটাবেস প্রশ্ন, এমনকি যদি আপনি এটি সংরক্ষণ করে নাও থাকেন একটি. এই প্রশ্নের উত্তর দেওয়া এখন সহজ - কেবল এটি স্মৃতিতে রাখুন। অবশ্যই "আমরা কীভাবে স্ট্যাটিক ডেটা দ্রুত লোড করতে পারি?" একটি আকর্ষণীয় প্রশ্ন, তবে আমি এটি এসকিউএল বনাম নোএসকিউএল এর প্রশ্নের সাথে মোটেই সম্পর্কিত বলে মনে করি না। - মাল্টি-ডকুমেন্ট অপারেশন হিসাবে, এর অর্থ আপনার ডেটাবেজে একটি দস্তাবেজ যেমন সমস্ত খেলোয়াড় থাকবে?

2
@ অরি: দয়া করে নোএসকিউএল, যা একটি ধারণা এবং মঙ্গোডিবি, যা একটি নির্দিষ্ট ডাটাবেসকে বিভ্রান্ত করবেন না। আমার শেষ কাজটিতে আমরা একটি নোএসকিউএল ডাটাবেসে দুটি গেম প্রেরণ করেছি এবং স্বল্প-স্বল্পতার সাথে দুর্দান্ত সম্মতি পেয়েছি । তবে আমাদের নোএসকিউএল ডাটাবেসটি ক্ষেত্র-স্তরীয় লকিংয়ের সাথে মাল্টি-ডকুমেন্ট লেনদেনকে সমর্থন করে। নুএসকিউএল এসকিউএল এর মতো কোনও একক "জিনিস" নয়, এটি কেবলমাত্র এসকিউএল ব্যবহার না করে (এবং সাধারণত রিলেশনাল স্কিমগুলি ব্যবহার করে না) কোনও ডেটাবেসকে বোঝায়।

5
কেবল আমার 0 .02, তবে "পারফর্মেন্ট নয়" আরডিবিএমএসের কোনও অপূর্ণতা নয়। এটি কোনও আরডিবিএমএসে অপ্রয়োজনীয় ডেটা সংরক্ষণ করার একটি অপূর্ণতা, আপনার আরডিবিএমএস টিউন না করা, আপনার এসকিউএল কী করছে তা বুঝতে না পেরে, সূচিবদ্ধকরণ ইত্যাদি etc. ইত্যাদি etc. আপনার যদি সম্পর্কযুক্ত ডেটা থাকে তবে আপনি দেখতে পাবেন যে আরডিবিএমএস অবিশ্বাস্যরূপে অনুকূলিত are
রবি

19

কয়েকটি শব্দ এসকিউএল ডাটাবেসকে ডিফেন্ড করে।

1 - আপনার যদি এসকিউএল ডাটাবেস থাকে তবে আপনি কেবলমাত্র প্রাথমিক কী দ্বারা আপনার ডেটা নিয়ে কাজ করতে পারবেন। এমএমওতে বেশিরভাগ ক্যোরিয়াসগুলি পিকে দিয়ে যায় তবে আপনার যখন স্তরের> 30 টি ব্যবহারকারীর সন্ধান করা প্রয়োজন আপনি নোএসকিউএল বিশ্বে কী করবেন?

2 - আপনার যদি এসকিউএল ভাষা থাকে তবে আপনি ভাঙা ডেটা মেরামত করতে "হটফিক্স" তৈরি করতে পারেন। উদাহরণস্বরূপ: "আপডেট করুন প্লেয়ার_টাইটস সেট ফ্ল্যাগ = 0 যেখানে আইটেম_ টাইপ_আইডি = 100"। আপনি কীভাবে এটি নোএসকিউএল ঠিক করতে পারবেন? আমি মনে করি আপনাকে এমন একটি স্ক্রিপ্ট তৈরি করতে হবে যা আপনার সমস্ত ডেটা পার্স করবে ...

3 - এসকিউএল ডাটাবেসগুলি আপনি ভাবতে পারেন তেমন ধীর হয় না। আমার কলেজগুলি ওয়েব ভিত্তিক এমএমও গেম তৈরি করে, যা মাইএসকিউএলে প্রতি সেকেন্ডে 5000 লেনদেন করে। এটা কি আপনার পক্ষে যথেষ্ট নয়? যদি তা না হয় তবে আপনি আপনার ডেটাবেস স্কেল করতে শারডিং ব্যবহার করতে পারেন।

4 - এসকিউএলের একটি বিদেশী কী বাধা এবং এই জাতীয় ভাল জিনিস রয়েছে যা আপনাকে আপনার কোডে বাগগুলি খুঁজে পেতে সহায়তা করবে।

নোএসকিউএল রূপালী বুলেট নয়। এটি কেবল দু'পক্ষের সমস্যা সমাধান করে এবং অনেকগুলি নতুন সমস্যা নিয়ে আসে। সুতরাং আমার পরামর্শ - NoSQL চয়ন করার আগে দু'বার ভাবেন।


1
নোএসকিউএল এড়াতে এই সমস্ত দুর্দান্ত কারণ যা আপনার কাছে আসলে এটির প্রয়োজন নেই। বিশেষত # 3। ইতিমধ্যে আপনার মিলিয়ন মিলিয়ন ব্যবহারকারী না থাকলে (এবং কোনও কিছুকে তীক্ষ্ণ করতে অস্বীকার করবেন), আপনি সম্ভবত মাইএসকিউএল সহ অনেক বেশি উত্পাদনশীল হবেন।
ojrac

5
১. আপনি ব্যবহার করতে পারেন: "xb for db.user.find ({" স্তর ": {" $ gt ": 30}})" "2. প্রযুক্তিগতভাবে, আপনি যা লিখেছেন তা একটি স্ক্রিপ্টও তাই আমি আছি আপনার বক্তব্য কি পুরোপুরি নিশ্চিত নন। ৩. এসকিউএল ব্যবহার করে এমএমও করা খুব সম্ভব, এবং প্রকৃতপক্ষে প্রযুক্তিটি ব্যবহার করে অনেক এমএমও তৈরি করা হয়েছে। নোএসকিউএল প্রযুক্তি মোটামুটি নতুন এবং এর কার্য সম্পাদন এবং নমনীয়তার জন্য ইতিমধ্যে আমাজন, গুগল এবং ফেসবুকের মতো পরিষেবাগুলি গ্রহণ করেছে। ৪. নোএসকিউএল-এ আপনাকে নিজের সীমাবদ্ধতা লিখতে হবে, তবে এটি কেবল যুক্ত নমনীয়তার ব্যয়।
এরি প্যাট্রিক

2
আমি আপনার দু'বার ভাবনার বক্তব্যের সাথে একমত আংশিকভাবে কি আমি এই প্রশ্নের সঙ্গে :) এখানে করছি এর
প্রাণ

10
এসকিউএল কোনও স্লিভ বুলেট নয়। নোএসকিউএল রূপালী বুলেট নয়। যে কোনও প্রযুক্তি ব্যবহারের আগে দু'বার ভাবুন।
স্টোনমেটাল

5
3 সংক্রান্ত, সমস্যা এত যে SQL নয় ধীর কিন্তু SQL এর যে laggy । সাধারণভাবে বলতে গেলে, এসকিউএল ডেটাবেসগুলি বিলম্বিত ব্যয়ে দুর্দান্ত থ্রুপুট পান। একটি ওয়েব-ভিত্তিক গেমের জন্য, সম্ভবত আপনি এটি চান! রিয়েল-টাইম নেটওয়ার্ক গেমের জন্য, সম্ভবত এটি নয় এবং এসকিউএল ব্যবহারকারী বেশিরভাগ "ওয়াও-জাতীয়" এমএমওগুলি এর সামনে একটি ক্যাচিং স্তর ব্যবহার করে যা এসকিউএলের বেশিরভাগ সুবিধা সরিয়ে দেয়, এজন্য নোএসকিউএল একটি বড় পদক্ষেপ তাদের।

18

উত্তর হ্যাঁ, এটি একটি বৈধ বিকল্প তবে না, এটি সম্ভবত দুর্দান্ত ধারণা নয়

এসকিউএল নিয়ে দুটি বড় সমস্যা রয়েছে যা নোএসকিউএল যখন গেমসের কথা আসে তখন সেগুলি সমাধান করার চেষ্টা করে।

প্রথমটি হ'ল বিলম্ব, বা পিছিয়ে। এক অর্থে, এসকিউএল ডাটাবেসগুলি নির্মমভাবে দ্রুত হয়, কয়েক সেকেন্ডের দশমীতে হাজার হাজার লেনদেন প্রক্রিয়াজাত করে। অন্য অর্থে, তারা অবিশ্বাস্যরূপে ধীরে ধীরে, কারণ মাত্র কয়েকটি লেনদেনের প্রক্রিয়াজাতকরণ একই সময়ে সময় নিতে পারে। বেশিরভাগ ডাটাবেসের ব্যবহারের জন্য, এটি কোনও ব্যাপার নয়, তবে গেমগুলির একটি রিয়েল-টাইম উপাদান থাকে সুতরাং এটি প্রতি সেকেন্ডে আপনি কতগুলি লেনদেন করতে পারবেন তা নয়, তবে ডেটাবেস লেনদেনের প্রতিক্রিয়া জানাতে গড় সময় লাগে about

এই বিলম্বিতা রিয়েল-টাইম গেমগুলির জন্য একটি বড় সমস্যা। অনেকগুলি বিকাশকারী যাদের বড় ডেটাবেসগুলির প্রয়োজন হয় (সাধারণত এমএমওগুলির জন্য) একটি স্ট্রিং এড়ানোর জন্য ডেটাবেস এবং গেম সার্ভারের মধ্যে বসে একটি ক্যাচিং স্তর তৈরি করে এবং পর্যায়ক্রমে ক্যাশে ফ্লাশ করে। সমস্যাটি? পারমাণবিকতা, ধারাবাহিকতা, বিচ্ছিন্নতা এবং স্থায়িত্ব - আপনি একটি ডাটাবেস ব্যবহারের মূল কারণগুলি কেবল ছড়িয়ে দিয়েছেন ।

কিন্তু সমস্যাটি ওয়েব গেমগুলিতে প্রযোজ্য না। আপনি ইতিমধ্যে প্লেয়ার এবং গেমের মধ্যে একটি উচ্চ-ল্যাটেন্সি সংযোগ পেয়েছেন, যাতে আপনি পাশাপাশি থ্রুপুট এসকিউএল সরবরাহ করতে পারেন, পাশাপাশি পরিপক্ক, সুপরিচিত সফ্টওয়্যারটির সুবিধাও পেতে পারেন।

তবে দ্বিতীয় সমস্যাটি আপনার ক্ষেত্রে প্রযোজ্য এবং এটি অবজেক্ট-রিলেশনাল ইম্পিডেন্স মেলে না । গেমস বস্তুগুলির সাথে ডিল করে, ডাটাবেসগুলি সারিগুলির সাথে ডিল করে। আপনি যদি ভাগ্যবান হন তবে কেবল কোনও ক্ষেত্রগুলি তালিকাভুক্ত করে কোনও বস্তুকে একটি সারিতে তৈরি করা যেতে পারে, তবে বেশিরভাগ সময় অবজেক্টগুলি শ্রেণিবদ্ধ হয় এবং সারিগুলিতে নামার জন্য আপনাকে সেগুলি সমতল করতে হবে।

কাউচডিবি এবং মঙ্গোডিবি-র মতো নথিভিত্তিক ডাটাবেসগুলি নথিকে সারি (এই ক্ষেত্রে "দস্তাবেজ" "" বস্তুর "প্রতিশব্দ") না করে শীর্ষ স্তরের বস্তুতে নথিকে প্রচার করে এই সমস্যার সমাধান করে। তবে এটি করে তারা এসকিউএল ডাটাবেসের অনেক সুবিধা হারাবে। থ্রুপুটটি অনেক কম, এবং লকিং অ্যালগরিদমগুলি আরও জটিল হয়ে ওঠে।

সুসংবাদটি হ'ল, আপনি যে কোনও ভাষা ব্যবহার করছেন তার জন্য ইতিমধ্যে প্রচুর অবজেক্ট-রিলেশনাল ম্যাপিং (ওআরএম) সরঞ্জাম উপলব্ধ। তারা আপনাকে মেমরির বস্তু এবং ডাটাবেসে সারিগুলির মধ্যে স্বচ্ছতার সাথে অনুবাদ করতে দেয় between এই সরঞ্জামগুলি সাধারণত বড় আকারের রিয়েল-টাইম গেমগুলির জন্য উপযুক্ত নয় কারণ তারা এসকিউএল এবং নোএসকিউএল ডাটাবেসের সবচেয়ে খারাপ পারফরম্যান্স দিক উপস্থাপন করতে পারে। তবে এটি একটি ওয়েব গেমের জন্য দুর্দান্ত - সবচেয়ে খারাপ, যখন আপনি পারফরম্যান্স সমস্যার মধ্যে চলে আসেন, তখন আপনি পুরানো কায়দায় লেনদেন করতে ফিরে যেতে পারেন। বিলম্বিত সমস্যাটি আপনাকে ক্ষতি করে না, এবং বর্ধিত থ্রুপুট আপনাকে সহায়তা করে।

পরিশেষে, আমি অন্যত্র যে বিন্দুটি বেলবোর করেছি : এটি স্থির গেমের ডেটা সম্পর্কিত নয়। আমি আপনার আইটেমের বিবরণ বা আপনার অস্ত্রের ক্ষতি বা স্প্রাইটস বা এখানে যে কোনও কিছু নিয়ে কথা বলছি না। আমার অর্থ আসল, পরিবর্তনীয় গেমের ডেটা, যেমন কোনও প্লেয়ারের ইনভেন্টরিতে কী থাকে বা তাদের পরিসংখ্যানগুলি কী। স্ট্যাটিক ডেটার জন্য আপনার যা যা প্রয়োজন তা হ'ল একটি ডেটা স্টোর। হতে পারে যে সর্বাপেক্ষা সহজ কাজ এটির জন্য ডেটা স্টোরের মতো একই ডাটাবেস ব্যবহার করা কারণ আপনার দুর্দান্ত ওআরএম রয়েছে; হয়তো আপনার কেবল ফাইল সিস্টেমের দরকার হবে। এটি দুটি পৃথক সমস্যা এবং একটি উত্তর উভয় ক্ষেত্রেই ফিট করে না (এবং সম্ভবত এটি হবে না)।


1
+1 উভয় বিকল্পের তুলনা করার জন্য ধন্যবাদ। তদ্ব্যতীত, আপনি স্ট্যাটিক ডেটা ডাটাবেসে থাকা উচিত নয় তা বলে একটি ভাল বক্তব্য রেখেছেন।
প্রাণ

1
+1 তবে আমি মনে করি যে আপনি কোনও এসকিউএল এর প্রধান বিষয়গুলির (ভাল, প্রো বা দৃষ্টিভঙ্গির উপর নির্ভর করে) উল্লেখ করতে অবহেলা করেছেন, এটি হ'ল এটি স্কিমা-কম, যা অত্যন্ত গতিশীল ডেটা সঞ্চয় করার অনুমতি দেয়। আমি আসলে আমার বর্তমান প্রজেক্টের পোস্টগ্র্রেএসকিউএল হিসাবে স্টাফগুলির জন্য যে দুটি রিলেশনাল মডেলটিতে সুন্দরভাবে ফিট করে, এবং আধা-স্থির স্টাফের জন্য মঙ্গো উভয়ের মিশ্রণ ব্যবহার করব। (উদাহরণস্বরূপ এমন লগ যা পুনরায় খেলতে সক্ষম হতে পারে, যেখানে আপেক্ষিকভাবে আমার কাছে অন্য একটি টেবিলের মধ্যে একটি পিকে সঞ্চয়কারী কলাম, বা জেনেরিক কলামের নাম যেমন প্যারাম
প্যারাম

1
@ ডেভি ৮৮: নোএসকিউএল অগত্যা স্কিমা-কম নয় এবং একটি "অত্যন্ত গতিশীল" ডাটাবেস থাকা আসলে কোনও যোগ নয় not যদি আপনার সমস্ত কিছু ডেটা স্যুপ থাকে তবে আপনি ইনডেক্সিং করতে পারবেন না, আপনি ফিল্ড-লেভেল লকিং করতে পারবেন না, এমনকি সাধারণ প্রশ্নগুলি কী কী উপস্থিত না থাকলে কী ঘটবে সে সম্পর্কে প্রশ্নে ভরপুর হয়ে যায়।

@ ব্যবহারকারী 4৪৪, আপনি যে জিনিসগুলি উল্লেখ করেছেন সেগুলি কী সম্পাদন করে?
মেয়াদউত্তীর্ণ

5
  • কোনও নুএসকিউএল ডেটাস্টোরেজ (দস্তাবেজ-ভিত্তিক, যেমন মঙ্গোডিবি) কোনও ওয়েব-ভিত্তিক গেমের জন্য উপযুক্ত হবে?

আমি কাউচডিবিতে একবার নজর দেওয়ার পরামর্শ দেব

এর ইন্টারফেসটি জাভাস্ক্রিপ্ট-ভিত্তিক, সুতরাং এটি HTML5 / জাভাস্ক্রিপ্ট ভিত্তিক গেমগুলির সাথে মিশ্রিত করবে pretty

এটি 'অফ-লাইন' (ডিবি-র একটি স্থানীয় অনুলিপি তৈরি করা) এবং তারপরে সার্ভারের সাথে নিজেকে পরে সিঙ্ক্রোনাইজ করতে সক্ষম হয় (উদাহরণস্বরূপ আপনি এটি উদাহরণস্বরূপ ডানজানগুলির জন্য ব্যবহার করতে পারেন)

  • প্রচলিত আরডিবিএমএস, যেমন মাইএসকিউএল ব্যবহার করে কী কী সমস্যা দেখা দিতে পারে?

মূল সমস্যাটি হ'ল নো-এসকিএল ডাটাবেসগুলি রিলেশনাল ডাটাবেসগুলি থেকে বেশ আলাদাভাবে পরিচালনা করে। মানসিক পরিবর্তন করা কঠিন হতে পারে।

উদাহরণস্বরূপ, পালঙ্কে কীভাবে " প্রশ্নগুলি " করা হয় তা একবার দেখুন । সবকিছু জাভাস্ক্রিপ্টে সম্পন্ন হয়েছে।

  • গেমপ্লে চলাকালীন বা সময়োপযোগী ইভেন্টগুলিতে ক্রোন জবসের মতো মোংগোডিবি ব্যবহারকারীর মধ্যে ডেটা ধারাবাহিকতা কীভাবে বীম করবেন?

'সিঙ্ক্রোনাইজিং' ডাটাবেস প্রক্রিয়াটিকে কাউচডিবির লিংগোতে প্রতিলিপি বলা হয় । আপনি শব্দটি ধারাবাহিকতাও দেখতে পাবেন । বেশ কয়েকটি অন্তর্নির্মিত পরিষেবা রয়েছে যা প্রতিলিপি এবং ধারাবাহিকতার সাথে মোকাবিলা করে। উদাহরণস্বরূপ, বর্ধিত প্রতিরূপ প্রক্রিয়া দেখুন।


হ্যাঁ, আমি কাউচডবি সম্পর্কেও শুনেছি, বাস্তবে, এমনকি মঙ্গোদবের ওয়েবসাইটেও তারা সাধারণত এটির তুলনা করে। আমি মনে করি আমার কাউচডিবি বনাম মংডোব নিয়ে গবেষণা করা দরকার।
প্রাণ

2

আপনার গেমটিতে যা আছে তার উপর নির্ভর করে আপনি উভয়টিই ব্যবহার করে শেষ করতে পারেন এবং আপনার গেমের মডেলগুলির মাধ্যমে এগুলি সংযুক্ত করছেন। উদাহরণস্বরূপ প্লেয়ার আরডিবিতে থাকতে পারে (লগইন তথ্য) তবে প্লেয়ারের ইনভেন্টরি / ভেরিয়েবল স্টোরেজটি নোএসকিউএল যেতে পারে, সুতরাং আপনার প্লেয়ার মডিউলটি login()আরডিবি ব্যবহার করতে এবং fetchInventory()প্রাথমিক কী দ্বারা নোএসকিউএল ব্যবহার করতে পারে ।

উদাহরণস্বরূপ মানচিত্রগুলি নোএসকিউএলে সংরক্ষণ করা ভাল (উদাহরণস্বরূপ বিভিন্ন পদার্থের স্থানাঙ্ক => অ্যারে) আরডিবিতে কোন অঞ্চল রয়েছে সেগুলি সংরক্ষণ করার বিষয়টি আমি কল্পনাও করি না (সিরিয়ালযুক্ত স্ট্রিং বাদে যা আপনাকে আরও কিছু সিপিইউ পড়ার জন্য পুরোপুরি আনসিরিয়ালাইজড করতে হবে? এবং র‌্যাম নষ্ট!) ভাল আপনি এখনও আরডিবিতে অঞ্চলগুলি সংরক্ষণ করতে পারেন উদাহরণস্বরূপ "নগর এক্স" এর মধ্যে নিম্নলিখিত কর্ডিনেটস / ব্লক রয়েছে ([৩,৪], [৮,7] ...)

আপনি এবং সম্ভবত দুটোই ব্যবহার করতে পারেন এবং ম্যাক্যাশের মতো অস্থির স্টোরেজ যা আপনার প্রয়োজন হতে পারে বা কিছু অস্থায়ী ডেটা দেখে নিন (নিশ্চিতভাবে হার্ড-ডিস্ক ব্যবহারের চেয়ে দ্রুত হবে! এবং আপনাকে অনেকগুলি সিপিইউ সাশ্রয় করেছে তবে নিশ্চিত র‌্যাম নয়)

তাই শেষ পর্যন্ত>

এটি আপনার খেলায় কী থাকতে চায় তার উপর নির্ভর করে! cheerz


কোন বৈশিষ্ট্যগুলি আপনি নোএসকিউএল বা অধ্যবসায় স্তরটিতে ভাবতে চাইছেন তেমন আপনাকে টানবেন বলে মনে করেন?
মেয়াদউত্তীর্ণ

1
আপনার গেমটি জিপিএস ভিত্তিক যদি একটি সমন্বিত সিস্টেম হতে পারে তবে এমন কিছু যা উন্নত অনুসন্ধানের প্রয়োজন হতে পারে। মূলত আপনি যদি মাইএসকিউএল নিয়ে ভাল থাকেন তবে এটির সাথে লেগে থাকুন, এটিকেও নোএসকিএল হিসাবে ব্যবহার করা সম্ভব
রোনান দেঝেরো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.