MongoDB Atlasによるゲームデータ管理の効率化
ユースケース: 分析
業種: メディア
製品: MongoDB Atlas、 MongoDB Atlasグローバルクラスター、 MongoDB Atlas Search、 MongoDB Atlas Charts、 MongoDB Aggregation、 MongoDB Atlas Data Federation
パートナー: Unity ゲームエンジン、Amazon EC2
ソリューション概要
ゲーム業界では、プレイヤー プロファイル、在庫、ゲーム状態などのデータを管理するのが困難です。Leaftools と呼ばれるこのソリューションは、 MongoDB Atlasを使用してゲームデータストレージ を効率化および改善します。Atlas クラスターはプレイヤーのプロファイルを保持し、Atlas Charts はリアルタイムプレイヤー ダッシュボードを有効にし、Atlas Search はユーザー向けの検索インタラクションを可能にします。このソリューションにより、 グローバルなスケーラビリティ、効率的なデータ管理、ユーザー中心の設計が可能になります。
参照アーキテクチャ
次の図には、 MongoDBを使用していないゲームデータ管理システムにはどのようなものがあるかを示しています。
図 1. Atlas を使用しないリファレンス アーキテクチャ
このアプローチには、グローバル クエリ ルーター、世界全体の複数のノード間のレプリケーションサービスを構築し、さまざまなストレージオプションを統合することが含まれます。このアーキテクチャでは、別の検索エンジンと可視化ツールと、データを可視化ツールにフェデレーションするためのサーバーレス クエリ サービスが必要です。
対照的に、次の図は、 MongoDBによるゲームデータ管理のアーキテクチャを示しています。
図 2. Atlas を用いたリファレンス アーキテクチャ
MongoDB Atlasでは、 MongoDB Atlasグローバルクラスター 、 Atlas Online アーカイブ、 Atlas Search 、 Atlas Charts 、 Atlas Data Federation を使用して、データをホストし、可視化を生成し、単一のプラットフォームで検索を実行できます。
データモデルアプローチ
次の図は、このソリューションで使用されるデータモデルを示しています。
図 3。データモデル アプローチの図
Recording は、スコア、移動、統計など、イベントからのプレイヤーのゲームプレイを表します。各レコードは、拡張参照パターンを使用して、PlayerとEvent データ型のサブセットを保存します。この設計により、選択的なフィールド埋め込みが可能になるため、クエリのパフォーマンスが向上します。さらに、将来的にデータを追加および変更するための柔軟性を提供します。
PUGB のような数億のプレイヤーを持つ大規模なオンライン イベントでは、最適なエクスペリエンスを確保し、法的要件を満たすために、データローカリティが重要です。これらのニーズをサポートするために、Players コレクションと Recordings コレクションはロケーション ISO コードに基づいてシャーディングされています。Atlas グローバルクラスターは、ISO 国と下位分類コードを特定のクラウドリージョン内のシャードのゾーンに関連付けます。これはクエリと書き込みリクエストをルーティングするために使用され、最高のパフォーマンスを確保します。
ソリューションのビルド
このソリューションを構築する方法の詳細については、Githubリポジトリ を参照してください。
機能と統合
このソリューションは、次のアーキテクチャ機能を提供します。
Atlas グローバルクラスターは、プレイヤーの地理的位置に関係なく、中断されないゲーム行を保証します。データの精度のために、プレイヤー情報は ISO 国コードに基づいて保存されます。
Atlas オンラインアーカイブ は、ストレージを最適化するために 90 日以上経過したゲーム データを自動的にオフロードします。これは、コストを増加させパフォーマンスに影響可能性のある大量のデータを生成するため、特に数百万のユーザーとゲーム実行に有用です。さらに、このソリューションは Atlas Data Federation を使用するため、最新データと履歴データの両方にアクセスできます。
ユーザーエクスペリエンスのハイライト
このソリューションは、次のユーザーの強調表示を提供します。
Atlas Charts でサポートされているプレイヤー ダッシュボードは、ゲーム内の結果と進行状況に関するリアルタイムアップデートを保証します。Atlas Charts のフィルタリングと埋め込み機能を使用すると、プレイヤーとイベントのダッシュボードを再利用できます。
Atlas Search は、オートコンプリートやファジー一致などの機能を提供しており、ユーザーが Web UIで自分の名前を検索できるようにしています。
アーキテクチャ
このソリューションのアーキテクチャには、次のコンポーネントが含まれています。
ゲーム クライアント: Unity3D、 .NET、 C#を使用して開発
ゲーム サーバー: ASP .NET Web API、 .NET、 C#、およびMongoDB .NET/ C#ドライバーで構築
Webサイト: .NETとC#を使用して Blazor サーバー アプリケーションとして作成
手順
Githubリポジトリの README には、次の手順のより詳細なバージョンが含まれています。
キーポイント
グローバルクラスターはスケーリングを促進します: グローバルクラスター、セカンダリからの読み取り、プライマリへの書き込みを使用して水平方向に増やすし、サイド効果やレイテンシのないグローバルオーディエンスに対応します。
MongoDB のドキュメントモデルは柔軟性とパフォーマンスを向上させます。ドキュメントモデルを活用して、実行された単一のゲームのすべてのデータを単一のドキュメントに保存しますが、パフォーマンスを向上させるには実行時にサブセットをシリアル化します。
プレイヤーの場所に基づいてデータをシャーディングする: ISO コードに基づいてデータを保存することで、Atlas グローバルクラスターはパフォーマンスの向上とスケーラビリティを容易にし、サービスを中断することなくシャードとゾーンの追加を可能にします。
著者
Sigfrido Narvaez, MongoDB
ドミニク・フライ、MongoDB
Hubert Nguyen、MongoDB