Sto lavorando a un gioco di carte collezionabili multiplayer. Il lato server è node.js + websocket.io. Sto ora valutando quale database implementare.
Sono rimasto molto affascinato da MongoDB, principalmente per il fatto che posso scambiare JSON tra DB e la mia applicazione e anche perché posso descrivere l'intero stato di gioco in un documento mongodb. Dovrebbe anche leggere e scrivere più velocemente.
Tuttavia, ho notato che MongoDB non è eccezionale in termini di prestazioni quando si tratta di aggiornare i record esistenti.
Nel mio gioco questa è una caratteristica fondamentale, dato che lo stato del gioco cambierà sempre (con il turno di ogni giocatore).
Una delle soluzioni che stavo pensando è in realtà l'estrazione del documento di stato attuale del gioco, l'esecuzione di tutti i calcoli necessari e la semplice creazione di un nuovo documento in MongoDB per lo stesso gioco. In effetti, non aggiorno un record esistente, ma creo una nuova istanza di stato che selezionerò in seguito. E questo si ripete in poi.
Mi chiedo quanto sia giustificato tale approccio e quale sia il modo migliore di implementarlo? In qualche modo dovrò trovare il documento più recente nel filtro di raccolta da gameID e quindi utilizzare in qualche modo un timestamp del documento. C'è una funzionalità incorporata in MongoDB che potrebbe aiutarmi, qualsiasi suggerimento su cosa esplorare è molto apprezzato!