MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como devo arquitetar meu servidor de banco de dados e API para um jogo de tabuleiro multiplayer baseado em turnos para iPhone? (pensando em nodejs, mongo, couch, etc)


Em primeiro lugar, o Nodejs é incrível para escrever proxies TCP reversos em bancos de dados NoSQL. Você pode deixar todos os comandos padrão passarem, mas alterar/estender suas APIs com sua própria mágica, por exemplo. fazendo o MongoDB falar HTTP ou o CouchDB falar um protocolo binário sobre sockets.

Quando se trata de escolher uma solução NoSQL para armazenar peças de jogos de tabuleiro e monitorar movimentos de jogadores, acho que Redis e CouchDB são os melhores candidatos.
  1. CouchDB. É rápido, confiável e pode lidar com muitas conexões HTTP simultâneas. É provavelmente a melhor opção porque, ao contrário do Redis, pode transmitir uma mensagem quando um documento é alterado. A API de alterações contínuas torna super simples para você ter o aplicativo de cada jogador monitorando as alterações em seu tabuleiro. A solicitação pode ser semelhante a:

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

    Cada cliente receberá um objeto JSON por linha na resposta sempre que um documento pertinente for alterado. (E uma nova linha em branco a cada 1000ms como uma espécie de keepalive.)

  2. Redis. Ele usa um protocolo simples baseado em linha (como MemcacheD++) para falar sobre um soquete e permite que você armazene Listas, Conjuntos, Hashes com valores arbitrários - até binários. É muito rápido porque tudo acontece na memória, mas é persistido no disco de forma assíncrona. Mas acima de tudo você deve avaliá-lo porque ele já tem PubSub notificações integradas. Observe que você terá que publicar explicitamente notificações de movimentação em um canal compartilhado pelos jogadores porque o Redis não publicará automaticamente quando uma chave/valor for alterada.

Como o MongoDB não possui um mecanismo para observar as mudanças à medida que elas acontecem ou fazer pubsub, não considero uma boa opção, embora com um esforço extra você possa fazê-lo funcionar.

Portanto, para concluir, você pode substituir "a grande pilha LAMP" apenas pelo CouchDB, apenas pelo Redis ou por qualquer um colocado atrás de um aplicativo de nó para filtrar/estender as APIs que eles já fornecem em algo que se ajuste ao seu jogo.

Boa sorte!