エムゲーム・ジャパン ゲーム ミィア ブログ サークル マイエム Login

兵どもの夢の跡

ブログチャンネル
yuki002さん
 
 ブログトップ   マイブログ   ランダムブログ    
ブログ型ブログ型タイトル一覧タイトル一覧
オークションが停止?[ブログ]  
詳細/おすすめ(2391/0) | ソーシャルブックマーク(0)  2009/07/18 00:35

問題の公式広報はこれです。

http://lunatia.mgame.jp/news/information/detail.html?news=4084

 

この障害に関し、私なりの分析を公開します。

 

まずこの表現から予測できる事を書き出してみます。

 

--- 引用 ---

修正作業を行った後もオークションポイントがマイナス値で表示されてしまったり、
出品または落札したアイテムがアイテムの受け取りが行えないといった問題が
継続的に発生している

------------

 

ポイントがマイナス表示される直接の理由は計算ミスと思われがちですが、実はそうではありません。

システムで計算を行う場合、まずデータが特定のメモリにロードされます。

この特定のメモリ範囲を【変数】と呼びます。

単純に 15 + 15 など2項目の計算を行う場合、やり方はともかく、片側の数値がCPUのレジスタという

計算用の箱に入ります。 場合によっては2つの数値がそれぞれレジスタに入る場合もあります。

そして加算命令が実行され、結果がレジスタに戻ります。

この段階では計算ミスはありません。

なぜなら、それはハードウェアで行った計算で、メモリ⇔レジスタ の間でエラーが発生する事が無いからです。

もしそこでエラーが発生するのなら、

計算だけでなくすべての処理でエラーが出てシステム自体が成り立たなくなるからです。

また、何かの障害でメモリの内容やレジスタの内容が変化してしまう可能性もありますが、

それ自体がハードウェアの信頼性そのもので、通常は有り得ない事なのです。

つまり計算自体は正常に行われている筈なのです。

これは計算を行う前の数値がすでに異常であると考えられます。

という事は、メモリやCPUではなく、間違いなくソフトウェアによる管理ミスである事を意味します。

 

 

クライアント側ではアイテムのグラフィックなど表示の装飾を扱ったりしますが、

サーバ側では純粋に数字(文字)のやり取りが行われます。

ユーザーの数値(文字)入力に対して、それを加工してユーザーに返すのがサーバの仕事なのです。

これはサーバは【データフローマシン】である事を意味します。

そしてオークションなどではデータベース(以降DBと略す)で管理を行います。

つまりオークションはサーバのDB機能で実現されていると言えます。

 

では そのDB機能について考察を加えます。

サーバ要の汎用DBはいろいろあります。

Windows系サーバでのデータベースは SQLserver が有名でしょう。

UNIX 系サーバなら Olacle を筆頭ですし Linux などでは Postgre が有名ですし他にもあります。

これらDBを扱うにあたってDB専用の制御言語があるのです。

それは一般的にはSQLと呼ばれています。

最近では一般性が高くなってきてはいますが、SQLにはデータベース特有の表現(方言)があります。

またそのデータベースの使い手(スペシャリスト)もいて、得意とするDBがあるのです。

 

ルナティアがどんなDBを使っているかわかりません。

コスト面からは Postgre が有利なのですが Olacle かもしれません。

ですが どんなDBを使っているかは問題ではないのです。

要はその使い方に問題があるから抽出すべき数値を間違えるのです。

 

1.ルナティアオリジナルのDBだった場合

  もし そうであったら、完全にシステムの致命的欠陥です。

  SQL解釈そのものにバグがあり、SQLが有効に機能しないのです。

  通常は  そのゲームのためだけにDBを作る事など有り得ません。

  ですから、これが原因とは思えません。

 

2.SQLの記述ミス

  DBが何であれ、SQLがDBで使われるのは間違いありません。

  特定DBのスペシャリストが得意とするDBを扱うのなら些細なバグで事なきを得ます。

  ですがDBを知っているからといって不得手なDBを扱う場合、勘違いを起こす事は良くあります。

  この手のミスが発生しすると場合によっては見つけ難いバグになる場合があります。

  そして、異なる結果を抽出する事になります。

  特にテーブル設計では致命的な障害となり、再構成が不可能な場合さえあります。

  分析するに、この手のエラーではないかとも思えます。

 

3.ローカライズの問題

  ルナティアは韓国で開発されています。

  そしてそれを日本語版としてローカライズします。

  データベース側から見ると、扱う文字コードが問題になるのです。

  この問題は以前にも「ソフトウェア考」で取り上げた事もあると思いますが、

  DB設計時にクリティカルポイントをそのままにしている可能性があるという事です。

  データベースで情報を抽出する場合、抽出条件となるキーを指定します。

  このキーをキャラクター名にしてしまうと、DBでは解釈できない文字コードになる場合があります。

  それを避けるため、キーはなるべく数値を使用します。

  これはIDと呼ばれシステム内でユニークなものなのです。 つまり同じIDは存在しないのです。

  IDで検索を行えば文字コードによる不具合を避ける事ができるのです。

  このクリティカルポイントを整理しないと【アイテムの受け取りが行えない】という現象になります。

  これはギルドデータについても同じだと思われます。

 

 

という事で、私は2つの原因が絡み合ってこのような現象を引き起こすと考えています。

これを修正するためには 実はシステム全体を再構成する必要があるのです。

その証拠が、たぶん以下ではないかと思っています。

 

----- 引用 -----

スクリーンショットを保存してからお問い合わせの際に添付してください。

上記の情報が記入されていない場合におきましては、十分な復旧が困難な場合がございますので
ご報告の際には出来るだけ詳細な内容をご明記くださいますよう、よろしくお願い致します。

---------------

 

現実にDBテーブルを再構成すると場合によっては旧データが失われてしまう事があります。

構成が変わるため、項目を新たに追加する場合もあれば、項目が不要になる場合もあります。

再構成を行うにあたり、旧データでは障害が大きく 修正するのはユーザー申告で…と思えます。

そのために、証拠としてのSSを求めているのではないかと思います。

 

 

 

私の出した結論:

 

多分ですが、DBテーブルの基本的設計ミスによるSQLの不備が原因であると思います。

もしそれが事実であるなら、バグの根は深く、かなり深刻な状況と言わざるおえません。

これは大規模アップデートに匹敵する作業量だと思いますので、

小手先だけの修正は限界ではないかと思っています。

 

個人的な見解ですが、本来サーバで行う処理をクライアントで行うようなシステムですから、

DBに関しても同じ事が言えそうな気がします。

さすがにDBはクライアントからは操作できませんが、その設計思想は同じであると思えるのです。

ルナティアは瀕死の状態かもしれません。

 

 

 

感想:

「貧弱!」 この一言に尽きます。

何のためのβテストであったのか、そのまま儲け(回収)に走ったのでは?

ここに書かれた事が事実であったなら、それは悪いシステムの見本であると言えそうですね。

それを知りつつ運営した者達の責任は…。でしょうか。

 

 

この記事のURL /  カテゴリ /  コメント(4)  / おすすめ  / 通報
   某腐れサイトにて
   10.危険なサイト