Zastanawiam się, jakie korzyści może mieć opcja nosql zamiast w połączeniu z rdbms dla typowego MMORPG. W szczególności jestem ciekawy, jak integralność danych jest zachowana pod nosql.Opcja NoSql dla gier MMORPG
Podam kilka przykładów, gdzie jestem trochę zdezorientowany, jak logika serwer będzie działać:
Scenariusz 1: Powiedzmy, że gracz A i B Gracz C ataku w tym samym czasie. Player_stats.kill_count jest aktualizowana na którykolwiek gracz zabija gracza C. Normalnie, można obsługiwać ten AttackPlayerRequest w następujący sposób:
rozpocząć transakcji { attacker.health = newAttackerHealth
defender.health = newDefenderHealth
jeśli defender.Health == 0 { attacker.stats.kills + = 1 } }
Scenariusz 2: Gracz se Wysyła element do dostawcy NPC i szybko próbuje upuścić ten sam przedmiot ze swojego ekwipunku na ziemię. (Nawet jeśli interfejs użytkownika uniemożliwia to, może po prostu umieścić zdarzenia na drucie).
Ta lista oczywiście ma wpływ na każdą interakcję gracza-gracza. Ostatnią informacją jest to, że serwer jest wątkowany, ponieważ nie chcemy żadnych szczególnie długich żądań, aby zablokować innym graczom możliwość robienia prostych rzeczy w grze.
Domyślam się, że moje wielkie pytanie brzmi: czy nie rozumiem czegoś związanego z nosqlem, w którym jest to banalny problem? Jeśli nie, to czy to wykracza poza domenę tego, jakie opcje nosql mają rozwiązać? Pod typową MMO, gdzie można wprowadzać opcje nosql, aby zwiększyć wydajność serwera?
Możesz uzyskać lepszą odpowiedź na: http://gamedev.stackexchange.com/, ponieważ twoje pytanie jest związane z tworzeniem gier. – HoLyVieR
Większość systemów NoSQL nie obsługuje transakcji. Czy ich potrzebujesz? – TTT
Nie sądzę, że istnieją systemy NoSQL, które mają funkcje integralności danych. To jest coś, co należy zrobić w aplikacji. Grupa NoSQL jest bardzo zróżnicowaną grupą, więc być może istnieje wyjątek od tej ogólnej zasady. – TTT