web-dev-qa-db-ja.com

オンラインゲーム(数千人のプレイヤー)に十分な速度のDBMSはどれですか?

私は現在MMORPGゲームを作成しています。これは同時に数千人のプレイヤーがオンラインでいる可能性があります(おそらくそうではありません。単なる希望的な考えです)。最初にMySQLを使用したかったのですが、このスケールには十分高速ではありません。

どのDBMSが十分に高速ですか? (学校でSQL Serverを学習したので)SQL Serverとどのくらい似ていますか?

8
Simon Verbeke

これは答えるのが本当に難しい質問です。世界最速のデータベースプラットフォームを採用し、恐ろしいスキーマを設計し、その周りに安っぽいアプリケーションを作成してから、データベースプラットフォームを非難したくなるかもしれません。同時に、無料のSQL Server Expressを利用でき、適切な設計、アプリケーションロジック、および適切なスケーラビリティ(たとえば、データキャッシュによる読み取りのスケールアウト)でのアプローチにより、数千ものアプリケーションを処理できるアプリケーションを作成できます。ユーザーは問題ありません。

SQL Serverは何千人ものユーザーを処理できると思いますか?もちろんです。 OracleとDB2も同様にできると思いますか?もちろん。 MySQL?確かではありませんが、十分な経験はありません。アクセス?おそらく賢明な選択ではありません。 SQL Serverに精通している場合は、それを検討することをお勧めします。RDBMSの選択自体が成功または失敗を決定するわけではないことに注意してください。

24
Aaron Bertrand

このように言いましょう。2000年代の初めから中頃のGameSpy Arcadeを覚えていますか?何千ものゲームを実行し、すべてSQL Serverで実行され、一度に数万のユーザーをサポートしました(はい、さまざまなことを行うSQL Serverがいくつかありました)。データベースの設計とシステムの使い方がすべてです。正しく実行するとプロジェクトが成功し、正しく実行しないとプロジェクトが失敗します。

12
mrdenny

正しい答えは、プログラミングしているプラ​​ットフォームに大きく依存します。

約1.5年前にStackOverflowの特定のプラットフォームについて誰かがこの質問をしたのは偶然です。

MySQL、SQL Server、Oracle、PostgreSQL、その他のRDBMSのいずれであっても、データベースインフラストラクチャを非常に創造的にする必要があります。ハードウェアと産業用DBMSのオープンチェックブックをお持ちの場合は、Oracleが最適です(実際、Oracle RACの方が望ましいでしょう)。 IISおよびMicrosoft環境を使用して開発している場合、それはSQL Serverです。予算上の懸念があり、Oracleのルックアンドフィールが必要な場合は、PostgreSQLが役立ちます。予算上の懸念と鮮明な想像力があり、ACID準拠、高速読み取り、およびさまざまなレプリケーションアーキテクチャに対応するためにストレージエンジンを好みに応じてマイクロマネージメントしたい場合、MySQLを偏見で言います。

DBMSはMMORPGでの心配が最も少ないはずです。プログラミングの問題は常に、大きな魚を揚げることを意味します。したがって、慎重に、そして賢明な判断を下してください。どのDBMSを選択しても、それに対応する必要があるためです( FaceBookがMySQLと一緒に暮らすのと同じ方法 )。

11
RolandoMySQLDBA

これは正しい質問ではありません。ゲームのパフォーマンスは、選択したアーキテクチャとテクノロジスタック全体、およびその実装方法によって異なります。 DBMSはスタックの1つのコンポーネントにすぎません。物事を非常にうまく構築しない限り、DBMSがパフォーマンスを制限する要因になる可能性は低いと思います。ドメインレイヤー、キャッシュ、およびサイトの配布とスケールアウトの方法は、はるかに重要な懸念事項のようです。

7
nvogel

すべてのRDBMSは、構成、スケーリング、およびアプリケーションでの使用方法に応じて、スケールが低下します。

質問は2つあると思います。 1つ目は、「どのDBMSがゲームデータを効率的に保持できるか」です。 (主観的、私見)2つ目は、「そのDBMSを1000人のユーザーで実行するようにスケーリングするにはどうすればよいですか?」

多くのオンラインサービスは、MySQLとMemcachedの組み合わせにより、優れたパフォーマンスとスケールを実現しています。ただし、その解決策も失敗する場合があります。しかし、それはまさにあなたが必要とするものかもしれません。

ますます多くのオンラインサービスがNoSQLソリューションを自社のアーキテクチャに組み込んでいます。私はCouchBaseの使用経験があり、便利だと思います。

5
randomx

コード、設計、およびディスク(書き込み用)によって、一般的にパフォーマンスが決まります。プラットフォームではありません。

4
gbn

[〜#〜] cubrid [〜#〜] をご覧ください。これは、現在韓国で非常に「ホット」なオープンソースのRDBMSです。ユーザー数が多いWebアプリケーション(50kなど)で最も速く/非常に高速に動作すると想定されています。

2
Bart Meinfield

うまく設計されていれば、どの主要なデータベースでも負荷を処理できると思います。悲しいことに、私はすべてのデータベースの1%未満がうまく設計されていると推定します。 (私は文字通り何千ものさまざまなデータベースからのデータをさまざまな機能を実行して扱ってきたので、現実世界には存在しない品質の欠如をよく理解していると思います。)

選択するデータベースのパフォーマンスチューニングに関する本をいくつか入手し、設計を開始する前によく読んでおくことを強くお勧めします。データベースのパフォーマンスを向上させるために、最初から設計する必要のあるものがたくさんあります。優れたデザインを得るには、パフォーマンスの高いクエリを記述してインデックスをデザインする方法を知ることが重要です。このタイプの調査と設計されたパフォーマンスは、時期尚早の最適化ではありません。デザインで既知のパフォーマンスキルテクニックを使用する理由はまったくありません。データベースは、最初からパフォーマンスを考慮して設計する必要があります。

2
HLGEM

何千人ものプレイヤーが参加するモバイルゲームがあり、永続的なIIS/.NET mysql接続プールに移動することで、負荷が大幅に低下しました。 mysql 5.1

「書き込み専用」データを別の場所に保管し、選択したデータベースの負荷を軽減することを検討してくださいCassandra=またはsyslogでさえも変更してください。memcacheのようなnosql dbで、急速に変化する非常に一時的だが再構築可能なデータを維持することを検討してください。リアクなど.

0
Anne Mouse