一人称視点、全員がプレイする 1 つの世界 (eve online など)、サンドボックス ゲームの機能を備えた MMO が作成されたとします。キャップ定理の観点から、そのニーズに最も適したデータベースはどれですか? CA、AP、CP、そしてその理由は?
1 に答える
CAP理論のすべてのテナントはMMOで回避する必要があります。DBはすべての面倒な作業を行うわけではありません。サーバーアプリケーションも同様に重要ですが、それ以上に重要ではありません。
ビデオゲームは、DBが提供できるよりも速い応答時間を必要とします。可能な限りボトルネックを解消するためのITインフラストラクチャとアーキテクチャの作業がすべてのレベルで実施されているわけではありませんが、スムーズなMMOエクスペリエンスを実現するのはDBだけではありません。
MMOサーバープロセスでのほとんどの作業は、最初にメモリにコミットされ、後でDBにスプールアウトされる可能性があります。アプリケーションの起動時にすばやくアクセスするために必要なすべてのものをキャッシュするだけの場合は、DBの応答時間が200ミリ秒である必要はありません。このキャッシュを行わないと、DBの速度や攻撃性に関係なく、クライアントへの応答時間が200ミリ秒になりません。正しいデータ構造を持つメモリは、より高速です。
これらすべてのキャッシングにより、CAP保証のほとんどは意味がなくなり、重要性が低くなります。
... CAPは、最新のクラウドコンピューティングシステムの非常に弾力性のある第1層で実行されるサービスの一貫性を妨げるためによく使用されます。これらのサービスは通常、ステートレスであるか、ソフトステート(キャッシュされたデータ)のみを維持する必要があり、内部層サービスに一時的にアクセスできない場合でも応答する必要があります...
これはMMOの要件と一致しません。MMOサーバープロセスはステートレスではなく、単にソフトステート(キャッシュされたデータ)を含んでいません。ほぼ瞬時の応答時間の保証を提供するDBの能力の欠如を補うために、彼らは積極的に大量の世界のデータを事前にキャッシュします。
MMOがこれらのそれぞれを回避する方法の例(基本的にはキャッシング):
C
一貫性-データの局所性を使用して、これを簡単に回避できます。MMOの世界のほとんどのものは、他には何の影響も及ぼしません。銀河の半分離れた場所にいる誰かが何をしているのか、ましてや彼らが遭遇している暴徒や彼らが略奪しているものを知る必要はありません。したがって、それを提供するためにDBは必要ありません。したがって、データは、複数のDB間の整合性が重要ではない方法でパーティション化できます。一貫性を保つために必要なもの(ほとんど-ほとんどの場合、キャラクター/インベントリ/メール/銀行/オークションハウス)はメモリに常駐する可能性があるため、一貫性が高いか、他の2つのCAP軸のいずれかで苦しむ可能性があります。A
可用性-積極的でアルゴリズムを侵害するキャッシングを使用すると、これを簡単に回避できます。一部のデータは重要です。その場合は、データをキャッシュします。他のデータはそれほど重要ではありません。その場合、常にデータが利用可能である必要はありません(たとえば、一貫性で述べたもので、可用性の失効に苦しむ可能性があります)。P
artition Tolerance-キャッシュすることで、データの一部にアクセスできなくなることを簡単に回避できます。メモリは常に利用可能であり、重要なものでいっぱいになります。常にアクセスできることが重要ではないものは、プレーヤーの痛みのしきい値が低くなり、アクセスが失われる可能性があります(たとえば、一貫性で言及されているもの)。
したがって、これらのうち、C
永続性が最も価値があります。可用性とパーティションの許容度は、非常にアグレッシブでアルゴリズムに侵襲的なキャッシングですでに回避されているからです。それでも、一貫性は一部のデータに対してのみ重要です。