私は現在、MMORPGゲームを作成しています。これは、同時に数千人のプレイヤーがオンラインでいる可能性があります(おそらくそうではありません。希望的な考えだけです)。最初にMySQLを使用したかったのですが、この規模では十分に高速ではないと聞きました。
どのDBMSが十分に高速ですか?SQL Serverはどの程度似ていますか(私は学校でSQL Serverを学びました)。
私は現在、MMORPGゲームを作成しています。これは、同時に数千人のプレイヤーがオンラインでいる可能性があります(おそらくそうではありません。希望的な考えだけです)。最初にMySQLを使用したかったのですが、この規模では十分に高速ではないと聞きました。
どのDBMSが十分に高速ですか?SQL Serverはどの程度似ていますか(私は学校でSQL Serverを学びました)。
回答:
これは答えるのが本当に難しい質問です。世界最速のデータベースプラットフォームを採用し、恐ろしいスキーマを設計し、その周りに安っぽいアプリケーションを作成してから、データベースプラットフォームを非難したくなるかもしれません。同時に、無料のSQL Server Expressを利用でき、適切な設計、アプリケーションロジック、および適切なスケーラビリティ(たとえば、データキャッシュによる読み取りのスケールアウト)でのアプローチにより、数千ものアプリケーションを処理するアプリケーションを作成できます。ユーザーは問題ありません。
SQL Serverは何千人ものユーザーを処理できると思いますか?もちろんです。OracleとDB2も同様にできると思いますか?もちろん。MySQL?確かではありませんが、十分な経験はありません。アクセス?おそらく賢明な選択ではありません。SQL Serverに精通している場合は、それを検討することをお勧めします。RDBMSの選択自体が成功または失敗を決定するわけではないことに注意してください。
このように言いましょう。2000年代の初めから中頃のGameSpy Arcadeを覚えていますか?それは何千ものゲームを実行し、すべてSQL Serverで実行され、一度に数万のユーザーをサポートしました(はい、そこにいくつかのSQL Serverがあり、さまざまなことをしています)。データベースの設計とシステムの使い方がすべてです。正しく行うとプロジェクトが成功し、正しく行わないとプロジェクトが失敗します。
正しい答えは、プログラミングしているプラットフォームに大きく依存します。
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に対応するのと同じ方法で)、慎重かつ賢明な決定を行ってください。
すべてのRDBMSは、構成、スケーリング、およびアプリケーションでの使用方法に応じて、規模が縮小します。
私は、1つに2つの質問があると思います。1つ目は、「どのDBMSがゲームデータを効率的に保持できるか」です。(主観的、私見)2つ目は、「そのDBMSを1000人のユーザーで実行するようにスケーリングするにはどうすればよいですか?」
多くのオンラインサービスでは、MySQLとMemcachedの組み合わせにより、優れたパフォーマンスとスケールを実現しています。ただし、その解決策も失敗する段階が来ます。しかし、それはまさにあなたが必要とするものかもしれません。
ますます多くのオンラインサービスがNoSQLソリューションを自社のアーキテクチャに組み込んでいます。CouchBaseの使用経験があり、便利だと思います。
あなたは見てとることができCUBRIDを。これは、現在韓国で非常に「ホット」なオープンソースのRDBMSです。これは、ユーザー数が多い(50k程度の)Webアプリケーションで最も速く/非常に高速に動作すると想定されています。
うまく設計されていれば、どの主要なデータベースでも負荷を処理できると思います。悲しいことに、私はすべてのデータベースの1%未満がうまく設計されていると推定します。(私は文字通り何千もの異なるデータベースからのデータをさまざまな機能を実行して扱ってきたので、現実世界にはない品質の欠如をよく理解していると思います。)
選択するデータベースのパフォーマンスチューニングに関する本をいくつか入手し、設計を開始する前によく読んでおくことを強くお勧めします。データベースのパフォーマンスを向上させるために、最初から設計する必要のあるものがたくさんあります。優れたデザインを得るには、パフォーマンスの高いクエリの記述方法とインデックスのデザイン方法を知ることが重要です。このタイプの調査と設計されたパフォーマンスは、時期尚早の最適化ではありません。デザインで既知のパフォーマンスキルテクニックを使用する理由はまったくありません。データベースは、最初からパフォーマンスを考慮して設計する必要があります。