Chapter 36
Gaming Database Design
Gaming Database Design
Games have unique DB patterns: millions of concurrent players, extremely high-frequency updates, real-time leaderboards, and virtual currency requiring financial-grade precision.
Key Characteristics
- High-frequency writes → Redis cache + async persistence
- Leaderboards → Redis Sorted Set (not MySQL ORDER BY)
- Flexible item attributes → JSON columns
- Massive event logs → partitioned tables + ClickHouse archival
Leaderboard Pattern
// Real-time rank via Redis
rdb.ZAdd(ctx, "lb:pvp:server:1", &redis.Z{Score: float64(score), Member: playerID})
rank, _ := rdb.ZRevRank(ctx, "lb:pvp:server:1", playerID).Result()
// Snapshot to MySQL hourly; final snapshot at season end for rewards
Virtual Currency
Same rules as financial systems: DECIMAL columns, no direct balance updates, every change logged in a ledger table with before/after balances.