Estoy trabajando en un juego multijugador en tiempo real que requerirá una base de datos (para funciones como perfiles de jugadores, amigos, desbloqueos, noticias, etc.). Es un juego estándar para PC (no basado en navegador) y utilizará un servidor cliente. arquitectura. Soy nuevo en el uso de bases de datos, y he investigado durante los últimos días cuando me topé con el acalorado debate: RDBMS vs NoSQL. Actualmente me estoy inclinando hacia NoSQL pero después de leer sobre los usos de cada uno (RDBMS y NoSQL), estoy tentado a usar ambos. Sé que puede parecer extraño, pero déjame explicarte mi situación:
Mi equipo tiene un paquete de alojamiento web compartido que ofrece almacenamiento ilimitado de mySQL y ancho de banda, la única advertencia es que solo podemos tener 25 conexiones abiertas al mismo tiempo (regla de alojamiento compartido). Tengo la intención de usar esto para mi sitio web (un uso típico sin duda) para publicar actualizaciones de noticias, funciones de soporte de la comunidad (como comentarios, subir fan art, etc.) y similares. Eso está bien y bien, ¡pero! Aquí es donde las cosas se ponen interesantes ... Quiero mostrar esta misma información que está publicada en mi sitio web, en el juego. Esto significa usar mySQL tanto para mi sitio web como para mi juego. Además de las publicaciones de noticias y similares, planeo usarlo en el juego para cosas como el chat y una lista de servidores. Me preocupa sobre todo esa regla de 25 conexiones.
Lo que me lleva a hacer la Pregunta # 1: ¿Funcionará y hay una mejor alternativa?
Ahora, además de esto, he leído sobre qué tan bien funciona NoSQL y es adecuado para juegos en tiempo real (podría estar equivocado, he atravesado una gran guerra de llamas RDBMS vs NoSQL para llegar aquí y probablemente estoy quemado). Básicamente, me gustaría usar MongoDB para todos mis datos de objetos de juego.
And again, it will be helpful if I provide some context: I have found a host (MongoLab) which offers a 240MB MongoDB package for free, which I intend on using until it's necessary to upgrade. Given 240MB, I've calculated that I will be able to store roughly 60,000 players (if each player is roughly 4KB and we ignore other things that might be stored). The storage space, and having to pay for more in the future (should our game be successful) is not a problem. The only reason I currently intend on using MongoDB for all of my game object data is because of how often this game object data will be accessed (such as whenever a player is killed, picks up an item, fires a gun, etc.) I also like the straight forward schema-free documents (which make it easier to map game object data). I should note that, at one time, there will only ever be one server writing to a player's profile in the database (the server the player is in).
Tengo la intención de usar el mismo MongoDB en mi sitio web, para mostrar la información del perfil del jugador (no me preocupa la consistencia completa, está bien algún retraso por las actualizaciones en el juego). Lo que me lleva a mi segunda pregunta, Pregunta # 2: ¿Es una buena idea o hay algo mejor que debería hacer?
El juego tendrá una experiencia de inicio similar a esta:
- El cliente inicia sesión (MongoDB)
- El cliente está en la página de inicio del juego con salas de chat (MySQL)
- El cliente va a la lista de servidores (MySQL)
El cliente se conecta a un servidor y juega en él
El servidor comunica actualizaciones para todos los jugadores (MongoDB)
Así es como me imaginaba que funcionaría. ¿Le parece bien o tiene sugerencias sobre cómo se puede mejorar este plan?