MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как трябва да проектирам своя DB &API сървър за походова мултиплейър настолна игра за iPhone? (мисля за nodejs, mongo, couch и т.н.)

На първо място, Nodejs е страхотен за писане на обратни TCP прокси към NoSQL бази данни. Можете да позволите на всички стандартни команди да преминат, но да промените/разширите техните API с ваша собствена магия, напр. карайки MongoDB да говори HTTP или CouchDB да говори двоичен протокол през сокети.

Що се отнася до избора на NoSQL решение за съхраняване на фигури от настолна игра и наблюдение на ходовете на играчите, мисля, че Redis и CouchDB са най-добрите кандидати.

  1. CouchDB. Той е бърз, надежден и може да обработва много едновременни HTTP връзки. Вероятно е най-добрият вариант, защото за разлика от Redis може да излъчи съобщение, когато документ се промени. API за непрекъснати промени прави супер лесно за вас да имате монитор за приложения на всеки играч за промени в дъската им. Заявката може да изглежда така:

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

    Всеки клиент ще получи JSON обект на ред в отговора всеки път, когато се промени подходящ документ. (И празен нов ред на всеки 1000 ms като вид поддържане на активността.)

  2. Redis. Той използва прост протокол, базиран на линии (като MemcacheD++), за да общува през сокет и ви позволява да съхранявате списъци, набори, хешове с произволни – дори двоични – стойности. Много е бързо, защото всичко се случва в паметта, но се запазва на диска асинхронно. Но най-вече трябва да го оцените, защото вече има PubSub записани известия. Имайте предвид, че ще трябва изрично да публикувате известия за преместване в канал, който играчите споделят, защото Redis няма да публикува автоматично, когато ключ/стойност се промени.

Тъй като MongoDB няма механизъм за наблюдение на промените, докато се случват, или за правене на pubsub, не го смятам за добър вариант, въпреки че с допълнителни усилия бихте могли да го накарате да работи.

И така, в заключение, може да успеете да замените „големия LAMP стек“ само с CouchDB, само с Redis или с някое, поставено зад приложение за възел за филтриране/разширяване на API, които те вече предоставят, в нещо, което пасва на вашата игра.

Успех!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Symfony2 + Трябва да използвате регулярния израз в mongodb ODM на доктрината, за да проверите проверката без значение на малки и големи букви

  2. Вземете целия масив по един от неговите низове. Масивът е в друг масив. Mongodb/Javascript

  3. Получих дублирани данни при многократно абониране

  4. Как да контролирате размера на дневниците в mongodb?

  5. MongoDB - Проектира само съответстващия елемент в масив