2ntブログ

データベースとネットゲーム

さっきメールを久しぶりに確認してたら、オラクルがツイッターで何か発言だか共有だかをしましたってお知らせメールがツイッターから来ていたのを見て、思ったので。

オラクルというのは、データベースを作っている世界で一番大きくて有名な企業です。
大ヒットしたデータベース製品の名前も、そのままオラクルですw
ソニーが大ヒットした自社製品の製品名がソニーだったので、それをそのまま社名にしてしまったのと同じなのでしょうかね?

さて、ネットゲームとデータベースというのは、一見すると関係がそんなに無いように見えます。
しかしながら、多くのコンピュータを使ったシステムと同じく、ネットゲームもデータベースの性能がそのままゲームのパフォーマンスに大きく関わってきます。
プレイヤーとサーバ間のパフォーマンスは通信回線の速度や品質に大きく左右されますが、サーバの処理スピードはゲームのプログラムの優秀さより、むしろデータベースの処理能力の高さの方が影響するのです。
なぜなら、ネットゲームというのは大量のデータの新規作成・変更・保存・読み出しなどが処理の大半を占めるからです。

例えば、MMOやFPSなど画面の仮想世界・MAP上でキャラクターがリアルタイムに動けるようなゲームの場合、自分・味方・敵・NPCなどのキャラクターの現在地の座標は、目まぐるしく変わります。
サーバのゲームプログラムは、それぞれのキャラクターの現在地の座標をデータベースから読み出して、移動先の座標を計算で割り出し、また移動先が壁とか移動不可能な場所ではないかの確認、途中に障害物が無いかの確認、あるいはそれがプレイヤーであれば、チートなどによって不正に要求された移動(ワープや障害物を越える、めちゃくちゃ速い移動速度など)ではないかを確認した後で、問題が無ければ新しい座標に書き換えて、それをデータベースに保存します。
この作業を、接続しているプレイヤー+ゲーム内に存在する全ての動くキャラクターに対して行うのです。
現在のコンピュータのCPUの計算処理速度というのは、非常に速いので、よほど効率の悪いクソプログラムでもない限りは、キャラクターが1000体居ようが1万体居ようが、移動計算処理は一瞬で終わります。
それよりむしろ、データベースからの読み出しや書き込みの方が、時間が掛かるのです。
なぜなら、HDDへのアクセスはCPUの計算処理と比較すると、圧倒的に「遅い」からです。

データベースは大量のデータを管理できる事、安全にデータを保管できる事なども重要ですが、今のコンピュータシステムで求められる性能の一番は、「素早い読み書き」なのです。
従って今のデータベースは、プログラムからの要求に応じて、その都度HDDからデータを読み出したり書き込んだりはしません。
これはWindowsなどのOSも同じような仕組みを採用していますが、HDDから読み出したデータはしらばく「キャッシュ」と呼ばれるメモリ上に置いておき、長時間使われなかったものを、処理が少ない時間にHDDへ保存するのです。
こうすることで、HDDから読み書きするより高速でプログラムにデータを渡したり、あるいは受け取ったりできるようになります。

データベースは、プログラムが動いているサーバとは別に単体で、データベース専用のサーバを設置するのが普通です。
特にネットゲームのように大量のデータの読み書きが頻繁に行われるようなシステムでは、処理の分散やデータの信頼性を守るためなどの理由で、複数台のデータベースサーバを並列運用します。

処理能力をハードウェア的に向上させる場合は、移動や戦闘の処理などをするプログラムサーバだと主にCPUを高速なものに替えたり、あるいは数を増やしたりしますが、データベースサーバの場合はメモリを増やした方が効果が大きい場合が多いです。
それは先にも述べた「キャッシュ」という仕組みによりるものです。
「キャッシュ」に使える空きメモリの容量が大きいほど、大量のデータを素早くプログラムサーバとやり取りできるようになるからです。

オラクルは当初はデータベースのソフトウェアしか作っていませんでしたが、コンピュータシステムの発展により、より大量のデータをより高速に読み書きできる能力が求められるようになったので、今ではハードウェアを含めたシステムを製品として出しています。
オラクルはUNIXサーバの大手で、日本でもバブル時代によくテレビのCMで見かけた「Sun」という企業を買収しました。
これはオラクルデータベースのソフトウェアに最適化されたサーバとセットで売るためです。
現在、Sunは完全にオラクルに吸収され、JavaなどにSunの名前が残っている程度で、オラクルデータベース専用のサーバを作る一部門になってしまいましたw

ちなみにマイクロソフトもサーバ用のデータベースソフトを作っていて、それなりに有名です。
「SQL Server」という製品ですね。
個人や小規模の法人向けには、マイクロソフトの「Office」シリーズの1つである「Access」という製品もあります。

このように、コンピュータシステムの中核は、いまや「データベース」なのです。
データベースの技術を持たないと、大企業としては生き残れないのです。
これが日本の富士通やNECが苦戦している理由です。

インターネットの世界でも、急成長して大企業となったのはGoogleという検索サイトです。
「検索」はそもそもデータベース用語であり、大量のデータの中から目的のものを見つける、抽出するという意味です。
つまりGoogleも、インターネットのサイトの検索というデータベース技術により大企業となったわけです。
Googleなどインターネット検索サイトの技術のすごいところは、他のデータベースシステムと違って、あいまいな条件でも素早く目的に合致しそうな候補を大量に表示してくれる事です。

例えば普通のデータベースというのは、「佐藤」という名前の社員を検索とか、そういうはっきりした条件でしか検索できませんが、Googleなどのインターネット検索は、「日本で多い苗字」とか「なんか普通っぽい苗字」とか、そんな条件でも「佐藤」が大量に出てきます。
まぁ「田中」とか「斉藤」とかも出てくるでしょうけどw
一般的なデータベースでは、こんなあいまいでふわっとした条件では、検索は困難ですw

こうした他社が持っていない技術や用途に特化したものを、昇華させた事がインターネット検索サイト企業が急成長し、なおかつ生き残れた理由でしょう。

ただネットゲームの世界では、このようなあいまいな条件の検索技術は必要ありません。
なぜなら、プログラムが欲するデータは非常に限定的で、候補がいくつも挙がるようなものではないからです。
「ID番号○○○番のキャラクターの現在のX座標・Y座標のデータ」というように。
ネットゲームではそういった検索よりもデータの素早い読み出しの方が重要です。
また素早い書き込みも重要です。

最近はあまり聞かなくなりましたが、昔はネットゲームではよく「巻き戻り」という言葉が出ました。
これはシステムの障害などで、サーバがダウンしたりした時などに、復帰後に数時間前の状態に戻って再開される様を言います。
なぜこんな事が起きるのかと言えば、先にも述べた通りデータベースというのは基本的に「キャッシュ」上でデータの操作を行っており、リアルタイムにHDDに書き込んだりしていないからです。
従ってシステムがダウンした場合は、データの信頼性を保つために「キャッシュ」上のデータは破棄されるからです。
またネットゲームの場合は、全てのデータが同じ時間の状態でないと整合性が取れなくなってしまいます。
従って「最後に一斉に保存された」時点のデータで再開せざるをえないからです。
Aさんは戦闘中だったので、Aさんのステータスデータは「キャッシュ」上にあったため、最新のものは無くなってしまいましたが、Bさんは戦闘しておらず町で休んでいたので最新のステータスデータがHDD上に保管されていました では困りますよね?
だから戦闘中だろうが休んでいようが、何をしていようが全員のプレイヤー、あるいは全ての敵やNPCの状態のデータも含めて、同じ時間の状態がHDDに保管されているデータでないと使えないわけです。

こういった理由から、昔のネットゲームは定期的にメンテナンスをしたり、あるいは不具合の修正やアップデートなどがある場合は、その作業が行われる時間はゲームをする事はできませんでした。

ただ最近のゲームはブラウザやスマホゲームが主流になったというのもありますが、こういったゲームができない時間はほぼありません。
私はここ半年間ずーっとグラブルというスマホゲー原作のブラゲ版をやってますが、定期メンテナンスはもちろん、不具合の修正やアップデートでサーバに長時間接続できなくなった事象に出会った事がありません。
紙芝居形式のこれらのゲームは、MMOやFPSなどのようにリアルタイムに変化するデータの量が圧倒的に少ないというのもあるでしょうが、それでも戦闘中に突然ダメージ計算式が変わったりしたら困りますw
しかしそうならないような仕組みが備わっているし、データベースの性能も向上し、整合性が取れなくなる事態がほとんど無いようになったからこそ、できるようになったのでしょう。
グラブルの場合は、不具合の修正やアップデートがあっても、ブラウザの更新を求められる、強制的にさせられるだけで、ゲームからログアウトして一定時間再接続できないなんて事はありません。

紙芝居形式じゃない、昔ながらのMMOやFPSゲームでも、週に1度のメンテナンスという長時間接続できない事は今でもあるようですが、それも少なくなってきているように思います。
なにせ私が一番最初にやったネットゲームである「ウルティマ・オンライン」など、毎日メンテナンスがありましたからw
MMO全盛期の頃の大人気作品の「ラグナロック・オンライン」でもサーバがダウンしたり、それによる影響で巻き戻りが発生し、数時間や下手するとその日1日分の稼ぎがパーになって、阿鼻叫喚というのを何度も目にしましたしねw

データベース技術の進歩は、本当にすごいものだなぁと感じたという話でしたw

コメントの投稿

非公開コメント

カウンタ
プロフィール

ウホッ!いい男

Author:ウホッ!いい男
異世界転生を待ち続ける中高年のおっさん

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR