|
一般来说游戏服务端都会把逻辑和数据操作分开, 单独设计一个数据服务端程序.
那么这个数据段需不需要缓存设计呢. 如果有缓存, 那么就需要把多个数据操作拼合成一个操作. 比如说玩家连续使用了多个物品, 产生了若干操作命令.
在真实执行数据操作的时候是一个个执行肯定不划算, 就需要一个操作就执行所有更新.
但这种设计跟数据库表设计紧密相关. 典型的如物品. 在数据表中存储物品数据可能有两种情况:
1, 每个玩家的所有物品数据(比如背包, 仓库)只占用一行记录. 多个物品数据保存在一个长的字段中.
2, 每个物品占用一行记录, 玩家的物品在数据表中占用若干行, 这种设计便于外部接口比如网页等对物品数据直接操作.
如果是第1种设计, 那更新数据的时候比较容易, 直接更新一行记录就行.
如果是第2种设计, 就有点麻烦, 可以先把该玩家所有的物品记录全部delete,再进行一次批量insert. 但这样做的话delete,insert操作频繁, 在高峰时段可能造成瓶颈. 另外还有数据id增长过快, 数据日志膨胀过快等缺点.
除此之外, 还有什么好办法吗? |
|