Pertama-tama, Nodejs luar biasa untuk menulis proxy TCP terbalik ke database NoSQL. Anda dapat membiarkan semua perintah standar melewati tetapi mengubah/memperluas API mereka dengan keajaiban Anda sendiri, mis. membuat MongoDB berbicara HTTP atau CouchDB berbicara protokol biner melalui soket.
Saat memilih solusi NoSQL untuk menyimpan potongan permainan papan dan memantau pergerakan pemain, saya pikir Redis dan CouchDB adalah kandidat terbaik.
- CouchDB. Ini cepat, andal, dan dapat menangani banyak koneksi HTTP bersamaan. Ini mungkin pilihan terbaik karena tidak seperti Redis, ia dapat menyiarkan pesan saat dokumen berubah. API perubahan berkelanjutan
membuatnya sangat mudah bagi Anda untuk memiliki monitor aplikasi setiap pemain untuk perubahan pada papan mereka. Permintaan mungkin terlihat seperti:
curl "$HOST/dbname/_changes?filter=app/gameboard&feed=continuous&gameid=38934&heartbeat=1000
Setiap klien akan menerima objek JSON per baris sebagai respons setiap kali dokumen terkait diubah. (Dan baris baru kosong setiap 1000 md sebagai semacam keepalive.) - Merah. Ini menggunakan protokol berbasis garis sederhana (seperti MemcacheD++) untuk berbicara melalui soket dan memungkinkan Anda untuk menyimpan Daftar, Set, Hash dengan nilai arbitrer--bahkan biner-. Ini sangat cepat karena semuanya terjadi di memori tetapi disimpan ke disk secara tidak sinkron. Tetapi yang terpenting Anda harus mengevaluasinya karena sudah memiliki PubSub notifikasi dimasukkan. Perhatikan bahwa Anda harus secara eksplisit memublikasikan notifikasi pemindahan melalui saluran yang dibagikan pemain karena Redis tidak akan dipublikasikan secara otomatis saat kunci/nilai berubah.
Karena MongoDB tidak memiliki mekanisme untuk mengamati perubahan yang terjadi atau melakukan pubsub, saya tidak menganggapnya sebagai pilihan yang baik, meskipun dengan usaha ekstra Anda dapat membuatnya bekerja.
Jadi sebagai kesimpulan, Anda mungkin dapat mengganti "tumpukan LAMP besar" dengan CouchDB saja, Redis saja, atau salah satu yang ditempatkan di belakang aplikasi node untuk memfilter/memperluas API yang telah mereka sediakan menjadi sesuatu yang sesuai dengan game Anda.
Semoga berhasil!