Jawabannya adalah ya, itu opsi yang valid tetapi tidak, itu mungkin bukan ide yang bagus .
Ada dua masalah utama dengan SQL yang NoSQL coba atasi, ketika datang ke game.
Yang pertama adalah latensi, atau lag. Di satu sisi, database SQL sangat cepat, memproses ribuan transaksi atau lebih dalam sepersepuluh detik. Dalam arti lain, mereka sangat lambat, karena memproses hanya beberapa transaksi dapat memakan waktu yang sama. Untuk sebagian besar penggunaan basis data, ini tidak masalah, tetapi permainan memiliki komponen waktu nyata sehingga ini bukan hanya tentang berapa banyak transaksi yang dapat Anda lakukan per detik, tetapi tentang waktu rata-rata yang diperlukan untuk menanggapi transaksi basis data.
Latensi ini merupakan masalah utama untuk game waktu nyata. Banyak pengembang yang membutuhkan basis data besar (biasanya untuk MMO) membangun lapisan caching yang berada di antara basis data dan server game untuk menghindari warung ini, dan kemudian membersihkan cache secara berkala. Masalah? Anda baru saja membuang alasan utama untuk menggunakan database - atomicity, konsistensi, isolasi, dan daya tahan .
Tapi masalah itu tidak berlaku untuk game web. Anda sudah mendapatkan koneksi latensi tinggi antara pemain dan gim, jadi Anda bisa mendapatkan throughput yang disediakan SQL, serta manfaat dari perangkat lunak yang matang dan terkenal.
Masalah kedua, bagaimanapun, tidak berlaku untuk Anda, dan itu ketidakcocokan impedansi objek-relasional . Game menangani objek, database menangani baris. Jika Anda beruntung suatu objek dapat dibuat menjadi baris hanya dengan mendaftar bidangnya, tetapi sebagian besar objek waktu bersifat hierarkis, dan Anda harus meratakannya dengan beberapa cara untuk membuatnya menjadi baris.
Basis data berbasis dokumen, seperti CouchDB dan MongoDB, menyelesaikan masalah ini dengan mempromosikan dokumen ke objek tingkat atas, daripada baris ("dokumen" dalam hal ini adalah sinonim untuk "objek"). Tetapi dengan melakukan ini, mereka kehilangan banyak manfaat dari database SQL. Throughput jauh lebih rendah, dan algoritma penguncian menjadi jauh lebih rumit.
Berita baiknya adalah, sudah ada banyak alat pemetaan objek-relasional (ORM) yang tersedia untuk bahasa apa pun yang Anda gunakan. Mereka memungkinkan Anda menerjemahkan antara objek dalam memori dan baris dalam database cukup transparan. Alat-alat ini umumnya tidak sesuai untuk game real-time skala besar, karena mereka dapat menyajikan aspek kinerja terburuk dari database SQL dan NoSQL. Tapi itu bagus untuk gim web - paling buruk, ketika Anda mengalami masalah kinerja, Anda dapat kembali melakukan transaksi dengan cara kuno. Masalah latensi tidak melukai Anda, dan peningkatan throughput membantu Anda.
Akhirnya, untuk memperjelas poin yang saya buat di tempat lain : Ini bukan tentang data game statis. Saya tidak berbicara tentang deskripsi item Anda atau kerusakan senjata atau sprite atau apa pun di sini. Maksud saya, data game yang benar-benar bisa berubah, seperti apa yang ada dalam inventaris pemain atau apa statistik mereka. Yang Anda butuhkan untuk data statis adalah penyimpanan data. Mungkin ternyata hal yang paling mudah untuk dilakukan adalah menggunakan database yang sama dengan data store untuk itu karena Anda memiliki ORM yang hebat; mungkin Anda hanya perlu sistem file. Ini adalah dua masalah yang terpisah, dan satu jawaban tidak perlu (dan mungkin tidak akan) cocok dengan kedua kasus tersebut.