web-dev-qa-db-fra.com

Quels DBMS sont assez rapides pour un jeu en ligne (quelques milliers de joueurs)?

Je fais actuellement un fichier MMORPG Jeu, qui pourrait avoir quelques milliers de joueurs en même temps (probablement pas; juste envie de penser). D'abord, nous voulions utiliser mysql, mais j'ai entendu parler Ce n'est pas assez rapide pour cette échelle.

Quel SGBD est assez rapide? Combien comme SQL Server est-il (comme j'ai appris SQL Server à l'école)?

8
Simon Verbeke

C'est une question très difficile à répondre. Vous pouvez prendre la plate-forme de base de données la plus rapide dans le monde, concevoir un schéma horrible, écrire une application de merde autour d'elle, puis être tenté de blâmer la plate-forme de base de données. Dans le même temps, vous pouvez prendre le SQL Server Express gratuit et, avec la bonne conception, la logique d'application et une approche à l'évolutivité sensible (par exemple, la mise à l'origine de la mise en cache de données, etc.), vous pouvez écrire une application qui gère les 1000 secondes de Utilisateurs pas de problème.

Est-ce que je crois que SQL Server peut gérer 1000 d'utilisateurs? Absolument. Est-ce que je crois que Oracle et DB2 peuvent le faire aussi bien? Certainement. Mysql? Pas sûr, pas assez d'expérience là-bas. Accéder? Probablement pas un choix sage du tout. Si vous connaissez SQL Server, alors je suggère que c'est l'itinéraire que vous envisagez, gardez à l'esprit que votre choix de SGBDM ne dictera pas le succès ou l'échec.

24
Aaron Bertrand

Permettez-moi de le mettre de cette façon, souvenez-vous de Jeux Arcade du début des années 2000? Il a couru des milliers de jeux et fonctionnait tous sur SQL Server et a appuyé des dizaines de milliers d'utilisateurs à la fois (oui, nous avons eu plusieurs serveurs SQL à une autre chose). Il s'agit de la conception de la base de données et de la manière dont vous utilisez le système. Faites si correctement et votre projet réussira, faites-le mal et votre projet échouera mal.

12
mrdenny

La bonne réponse dépend beaucoup de la plate-forme que vous programmez.

( Il arrive que quelqu'un ait posé cette question pour une plate-forme spécifique à Stackoverflow il y a environ 1,5 ans.

Que ce soit MySQL, SQL Server, Oracle, PostgreSQL ou d'autres SGBDM, vous devez être très créatif avec l'infrastructure de la base de données. Si vous avez un chéquier ouvert pour le matériel et un SGBD de force industrielle, Oracle est pour vous (si, le fait, Oracle RAC serait plus souhaitable). Si vous développez en utilisant IIS et un environnement Microsoft, il s'agit de SQL Server tout le chemin. Si vous avez des préoccupations budgétaires et que vous souhaitez une apparence d'oracle et une impression, PostgreSQL à la rescousse. Si Vous avez des préoccupations budgétaires, une imagination vivante et souhaitez micromanage le moteur de stockage à votre goût pour accueillir la conformité aux acides, des lectures à grande vitesse et une variété d'architectures de réplication, je dirais préjudiciellement MySQL.

Le SGBD devrait être le moindre de vos soucis avec MMORPG. Les problèmes de programmation sont toujours présents des poissons plus gros à frire. Donc, rendez votre décision prudemment et judicieusement, car quel que soit le SGBM de votre choix, vous devez vivre avec elle ( (( de la même manière que Facebook doit vivre avec MySQL == ).

11
RolandoMySQLDBA

Ce n'est pas la bonne question. La performance de votre jeu dépendra de l'architecture complète et de la pile de technologies que vous choisissez et sur la manière dont elle est mise en œuvre. Le SGBD n'est qu'un composant de la pile. Je suppose que je suppose que le SGBD est peu probable qu'il s'agisse d'un facteur limitant sur la performance, à moins que vous n'entraîne très mal les choses. Votre couche de domaine, la mise en cache et la manière dont vous distribuez et évitez le site semble probablement des préoccupations beaucoup plus importantes.

7
nvogel

Toute RDBMS tombera avec une échelle en fonction de la configuration, de la mise à l'échelle et de la manière dont l'application l'utilise.

Moi pense que vous avez deux questions en une. Le premier, "quel SGBD est capable de persister les données de jeu de manière efficace." (subjectif, iMho) le second, "Comment puis-je faire échelle que le SGBD fonctionne avec 1000 d'utilisateurs?"

De nombreux services en ligne ont trouvé la combinaison de MySQL et memcached pour fournir d'excellentes performances et échelles. Cependant, il vient un point où cette solution tombe aussi. Cependant, cela pourrait être exactement ce dont vous avez besoin.

De plus en plus de services en ligne sont en sandwiching dans une solution NOSQL dans leur architecture. J'ai une certaine expérience avec CouchBase et le trouve utile.

5
randomx

Code, conception et vos disques (pour écrit) déterminent les performances en général. Pas la plate-forme.

4
gbn

Vous pourriez jeter un coup d'œil à CUBRID . C'est un SGDBR open source qui est très "chaud" en Corée du Sud en ce moment. C'est supposé travailler le mieux/très rapide pour les applications Web avec un nombre élevé d'utilisateurs (ils disent 50k ou quelque chose comme ça).

2
Bart Meinfield

Je pense que l'une des principales bases de données peut gérer la charge si elle est bien conçue. Malheureusement, j'es estimer que moins de 1% de toutes les bases de données sont bien conçues. (J'ai personnellement traité avec des données de différentes milliers de bases de données différentes effectuant une grande variété de fonctions, alors je pense que j'ai une bonne idée du manque de qualité qui existe dans le monde réel.)

Je suggère fortement que vous obtenez des livres sur le réglage de la performance pour la base de données que vous le choisissez et les lisez de manière thorughly avant de commencer à concevoir. Il y a beaucoup de choses qui aideront votre base de données à fonctionner mieux qui devrait être conçue à partir du début. Il suffit de savoir comment écrire des requêtes réalisées et des indices de conception est essentiel pour obtenir un bon design. Ce type d'étude et performance conçue n'est pas une optimisation prématurée. Il n'y a aucune raison d'utiliser des techniques connues de tuer des performances dans la conception. Les bases de données doivent être conçues pour la performance du début.

2
HLGEM

Nous avons des jeux mobiles avec 1000 joueurs et nous avons vu une grande chute de charge en allant à des pools de connexion IIS/.NET MySQL persistants. mysql 5.1

Pensez à garder les données "Écrivez uniquement" des données ailleurs pour réduire la charge sur tout ce que vous choisissez Cassandra ou syslog Même. Pensez à garder des données rapidement changeantes, très transitoires mais reconstruisbles dans un NOSQL DB comme Memcache, riak, etc.

0
Anne Mouse