sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo debo diseñar mi servidor de base de datos y API para un juego de mesa de iPhone multijugador basado en turnos? (pensando en nodejs, mongo, sofá, etc.)

En primer lugar, Nodejs es increíble para escribir proxies TCP inversos en bases de datos NoSQL. Puede dejar pasar todos los comandos estándar, pero alterar/ampliar sus API con su propia magia, p. haciendo que MongoDB hable HTTP o CouchDB hable un protocolo binario sobre sockets.

Cuando se trata de elegir una solución NoSQL para almacenar piezas de juegos de mesa y monitorear los movimientos de los jugadores, creo que Redis y CouchDB son los mejores candidatos.

  1. CouchDB. Es rápido, confiable y puede manejar muchas conexiones HTTP simultáneas. Probablemente sea la mejor opción porque, a diferencia de Redis, puede transmitir un mensaje cuando cambia un documento. La API de cambios continuos hace que sea muy simple para ti tener la aplicación de cada jugador monitoreando los cambios en su tablero. La solicitud podría tener este aspecto:

    curl "$HOST/dbname/_changes?filter=app/gameboard&feed=continuous&gameid=38934&heartbeat=1000

    Cada cliente recibirá un objeto JSON por línea en la respuesta cada vez que se cambie un documento pertinente. (Y una nueva línea en blanco cada 1000 ms como una especie de keepalive).

  2. Redis. Utiliza un protocolo simple basado en línea (como MemcacheD ++) para hablar a través de un socket y le permite almacenar listas, conjuntos, hashes con valores arbitrarios, incluso binarios. Es muy rápido porque todo sucede en la memoria, pero se conserva en el disco de forma asíncrona. Pero sobre todo deberías evaluarlo porque ya tiene PubSub notificaciones incorporadas. Tenga en cuenta que tendrá que publicar explícitamente las notificaciones de movimiento en un canal que comparten los jugadores porque Redis no publicará automáticamente cuando cambie una clave/valor.

Dado que MongoDB no tiene un mecanismo para observar los cambios a medida que ocurren o hacer pubsub, no lo considero una buena opción, aunque con un esfuerzo adicional podría hacerlo funcionar.

Entonces, para concluir, es posible que pueda reemplazar "la gran pila LAMP" con CouchDB solo, Redis solo o uno colocado detrás de una aplicación de nodo para filtrar/ampliar las API que ya proporcionan en algo que se adapte a su juego.

¡Mucha suerte!