JOIN US!オンラインゲーム大特集!

オンラインゲームを支えるデータ管理


0005017.jpg

 コンピュータ・ネットワークの普及・発展と軌を一にして広まったオンラインゲームであるが、その独自性からゲーム運営企業には他のシステムと異なる工夫が求められる。ここではゲーム特有のデータ管理手法を紹介する。

 オンラインゲームの課題は大量アクセスの迅速な処理であるが、同じく大量アクセスを処理しなければならないポータルサイトと比べると大きな相違がある。それはゲームではメモリ上の処理の割合が高いことである。

 ウェブサイトでは別のページにアクセスする度にウェブページの読み込み処理が発生する。これに対してゲームでは開始時にプレーヤーのデータをデータベースからロードし、そのデータをゲーム中は使い回す形が一般的である。但し、最近主流のソーシャルゲームではプレーヤーの関係が重要になり、他のプレーヤーのデータを読み込む場合も多くなる。仲間になる、相手にプレゼントを贈る、相手の農園に虫を入れるなどである。

 プレーヤーはゲーム中にアイテム購入やレベルアップなどで状態が更新される。この場合もデータは更新された形でメモリに持ち続けている。更新されたデータは最終的にはデータベースに保存されるが、更新時にデータをデータベースに逐一保存するか、まとめてゲーム終了時に保存するかは作り方である。メモリ上の情報は障害時には消えてしまうために更新の度に小まめに保存する仕組みの方が安全である。

 それ故にゲームではデータの書き込み処理は一定程度発生するが、留意点はメモリ上の処理に比べてデータベースへの入出力処理は圧倒的に遅いことである。データを保存してからゲームを進める仕組みにしたならば、保存処理がボトルネックになり、プレーヤーを満足させるレスポンスが得られなくなる。この対策として書き込み処理を非同期にして、書き込みの結果を待たずにゲームを進める実装にする例がある。

 また、書き込み処理を速くするようにデータの持ち方も工夫する。データベースの性能が低い時代は、そもそもデータベースを利用せずにバイナリファイルに保存するケースがあった。また、データベースを使用する場合でもバイナリデータとして、BLOB(Binary Large Object)項目に格納することもあった。その後はデータベースの性能向上に伴い、通常のデータベースの使われ方も増えてきた。

 今後はKVSやオンメモリ・データベースの利用が注目される。KVS (Key-Value Store)はデータとデータを識別するキーをペアにして保管するデータ管理システムである。伝統的なデータベースに比べるとシンプルであるが、プレーヤーのデータはプレーヤーに紐付けられて使用するものと決まっているゲームと親和性がある。

 オンメモリ・データベース(インメモリ・データベース)はデータを半導体メモリに保存することで、処理速度を飛躍的に向上するデータベースである。オンメモリ・データベースでは、データをハードディスクドライブに保存する従来型データベースで発生していたディスク入出力が不要になる。

 オンメモリ・データベースはパフォーマンス面では従来型データベースを圧倒するが、データの永続性の点で従来型データベースを代替するには至っていない。それでもメモリ処理の割合が高いオンラインゲームには適している。
(文=林田力)


林田力(はやしだ・りき)
ライター。漫画・ドラマ・不動産・裁判・住民運動・市民運動などジャンルを問わず活動中。著書に『東急不動産だまし売り裁判 こうして勝った』(ロゴス社)。
http://www.hayariki.net/
http://hayariki.zero-yen.com/