オンラインゲーム(数千人のプレイヤー)に十分な速度のDBMSはどれですか?[閉まっている]


8

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

どのDBMSが十分に高速ですか?SQL Serverはどの程度似ていますか(私は学校でSQL Serverを学びました)。


参考までに、World Of WarcraftはOracleベースです。
フィロ2012

どのDBMSを選択する場合でも、ライセンスを考慮することを忘れないでください。おそらく、無料版は小さな負荷に対しては問題ありませんが、スケールアップまたはスケールアウトする必要がある場合、深刻なステッカーショックが発生する可能性があります。
datagod 2012

回答:


24

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

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


まあ、私はちょうどガイドラインが必要でした。小さなインディーゲームが数千人の同時ユーザーにすぐに届くというわけではありません。ありがとう!
Simon Verbeke

3
すぐに一度に数千人のユーザーにヒットする計画はないかもしれませんが、最初から正しく計画しないと、大規模な停止を行うか、少なくとも大幅な速度低下が発生する状況に陥ります。しばらくの間、問題の修正に取り組んでいます。
mrdenny

そう、そしてここに、facebookが「巨大になることは決してないだろう」という議論に基づいた最初の設計決定に対する熱意を説明しているタイムリーな記事があります:gigaom.com/cloud/… ... Rolandoの答え
アーロンバートランド

@アーロン:いいもの。MMORPGを取り巻くソフトウェアインフラストラクチャはデータベースにとらわれず、それ自体が動作するため、+ 1が答えになります!!!
RolandoMySQLDBA

12

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


特に私がそれを使用していたので、GameSpyに関するその情報を知ってうれしいです。いつもSQLの部分を知りませんでした。
StanleyJohns、2011

1
忘れないでください。当時の最新バージョンはSQL 2000で、10億を超える行テーブルがあります。高負荷下でシステムをオンラインに保つためのかなり良い担当者がいました。
mrdenny、2011

11

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

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に対応するのと同じ方法で)慎重かつ賢明な決定を行ってください。


2
これは、今日そのFacebook記事で目にした3番目の参照です。それはかなり良い記事です。
mrdenny

2
+1。MySQLは通常見過ごされがちですが、非常に強力なRDBMSです。
StanleyJohns、2011

7

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


5

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

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

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

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


4

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


2

あなたは見てとることができCUBRIDを。これは、現在韓国で非常に「ホット」なオープンソースのRDBMSです。これは、ユーザー数が多い(50k程度の)Webアプリケーションで最も速く/非常に高速に動作すると想定されています。


実際、CUBRIDはリレーショナルDBMSだけでなく、オブジェクト機能も提供します。オブジェクトの一部は、ゲーム開発者が必要とする正確に何です。CUBRIDでは、ユーザー定義型を簡単に作成できます。例えば。テーブルには、次のような別のテーブルと同じデータ型の列を含めることができます。CREATE TABLE a(id INTEGER AUTO_INCREMENT PRIMARY KEY、name VARCHAR(255)); CREATE TABLE b(id INTEGER AUTO_INCREMENT PRIMARY KEY、custom_column a); このタイプの機能は、ゲーム開発者にとって非常に価値があります。韓国で人気のオンラインゲームはCUBRIDに基づいています。
瞳の

2

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

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


0

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

Cassandraまたはsyslogを選択した場合でも、DBへの負荷を軽減するために、「書き込み専用」データをどこかに保持することを検討してください。memcacheやriakなどのnosql dbで、急速に変化する、一時的で再構築可能なデータを維持することを検討してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.