MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana saya harus merancang server DB &API saya untuk permainan papan iPhone multipemain berbasis giliran? (berpikir tentang nodejs, mongo, sofa, dll)

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.

  1. 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.)

  2. 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!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Perbedaan antara MongoFactoryBean dan SimpleMongoDbFactory

  2. Sistem pemungutan suara dengan Backbone.js

  3. Menjalankan JS di MongoDB saat memasukkan dari PHP

  4. Pengujian integrasi dengan Testcontainers + Quarkus + MongoDB

  5. Cara membuat Pengguna &menambahkan Peran di MongoDB