noSQLデータベースはWebベースのゲームに適していますか?
絶対に!一般的に、非リレーショナルデータベース(MongoDBなど)は、データをモデル化する方法がより柔軟であり、リレーショナルデータベース(SQLなど)よりもパフォーマンスが高いため、ゲームにとってはるかに優れています。選択。
従来のRDBMSを使用して発生する可能性のある問題は何ですか?
リレーショナルデータベースの使用には、2つの大きな欠点があります。
リレーショナルデータベースを使用すると、モデルのニーズに対応するデータベースではなく、データベースのニーズに合わせてデータをモデル化する必要があるため、データをモデル化する方法に柔軟性がないことが大きな欠点です。たとえば、リレーショナルデータベースを使用してゲームにアイテムを保存する方法のモデルを作成し、次のモデルを決定するとします。
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
次に、以下を実行するためにモデルを変更する方法を検討します。
- 新しいアイテムタイプを追加する
- 複数の武器タイプで武器を作成する
- 武器としても使用できるポーションアイテムを作成する
確かにこれらのすべてのアクションは実行可能ですが、実行している間はあなたが一番幸せな人になることはありません。非リレーショナルデータベースでより柔軟なモデルを設計します。
注:文書ベースのデータベースが情報を保存する方法に慣れていない場合は、続行する前にこのリンクを確認してください。以下に示すモデルは、前述の記事で示したものと同様のロジックを使用するように設計されています。
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
NoSQL対SQLデータベースのパフォーマンスに関する多くの優れた記事がありますが、独自のテストを実行できるようにアプリケーション例を提供するものは次のとおりです。MongoDB対SQL Server 2008パフォーマンスショーダウン
MongoDBを使用してユーザー間のデータの一貫性を保証するにはどうすればよいですか?
MongoDBは、単一のデータエンティティ(ドキュメント)に対する読み取り/書き込みアトミック操作をサポートしているため、MongoDBからのクエリ結果は、データベース内に保存されているものに対して常に正確である必要があります。
編集:アイテムデータベースのNoSQLの例を提供