游戏数据库服务器 数据缓存 增量更新
2016-09-17 15:31
225 查看
http://www.cppblog.com/PeakGao/archive/2006/06/10/8379.html
PeakGao
别读成痞子高
游戏数据库的思考
上个周末看了下MySQL,安装了一个试了下,重点看了c测试程序已经mysql.h中的API,发现好简单,目前公司的游戏计划也是用mysql,但是要设计好一个给游戏使用的数据库模块,也不是简单的处理一下api就能了事的,游戏数据库由于存取特别频繁,在我看来,他的设计主要解决下面几个问题:
1、数据缓存的功能
想想那么平凡的数据存取,完全依赖数据库的直接操作,这个性能是可想而知的,所以应该建立起游戏服务器和数据库之间的一个桥梁(暂且命名为数据库前端),游戏服务器只跟数据库前端交互,数据库前端自己具有数据持久化的策略,不依赖于游戏服务器的操作。数据库前端在第一次取出原始数据后(如一个角色登录时的数据),将进行本地缓存,下次存取数据都是在本地进行,并不需要更新到数据库中,至于何时更新到数据库可以有数据库前端自行决定(当然也不排除游戏服务器发出持久化的通知)。
2、增量更新的功能
其实好多数据的提交中,有很大一部分的数据是没有改变的,如果在从前端提交数据到数据库的时候采取相应的增量更新的办法,应该对性能会有所提升,尤其是在几个游戏服务器操作同一个数据库的时候,因为异步的原因,增量更新能够保证数据的正确性。
3、抛包策略
游戏服务器有很多数据实在太过频繁,但是有些类型的数据的重要性一般,所以中途丢失一些也问题不大,在服务器数据交换比较频繁的时候完全可以抛弃一些,加快存取速度(不过有了前端后是不是可以忽略这点)。
4、数据分流功能
主要体现在游戏服务器的一些不同类型的数据存取可以通过不同的几个异步队列进行处理,这样即使由于数据库的某些操作延时,也只影响到操作所在队列,不会影响其他队列。
5、灵活的多前端,多数据库等支持
实现游戏服务器,数据库前端,游戏数据库之间的多对多关系,便于灵活的运用。
写完后个人感觉达到第1,2点后,这个数据库前端功能就已经比较强劲了。
PeakGao
别读成痞子高
游戏数据库的思考
上个周末看了下MySQL,安装了一个试了下,重点看了c测试程序已经mysql.h中的API,发现好简单,目前公司的游戏计划也是用mysql,但是要设计好一个给游戏使用的数据库模块,也不是简单的处理一下api就能了事的,游戏数据库由于存取特别频繁,在我看来,他的设计主要解决下面几个问题:
1、数据缓存的功能
想想那么平凡的数据存取,完全依赖数据库的直接操作,这个性能是可想而知的,所以应该建立起游戏服务器和数据库之间的一个桥梁(暂且命名为数据库前端),游戏服务器只跟数据库前端交互,数据库前端自己具有数据持久化的策略,不依赖于游戏服务器的操作。数据库前端在第一次取出原始数据后(如一个角色登录时的数据),将进行本地缓存,下次存取数据都是在本地进行,并不需要更新到数据库中,至于何时更新到数据库可以有数据库前端自行决定(当然也不排除游戏服务器发出持久化的通知)。
2、增量更新的功能
其实好多数据的提交中,有很大一部分的数据是没有改变的,如果在从前端提交数据到数据库的时候采取相应的增量更新的办法,应该对性能会有所提升,尤其是在几个游戏服务器操作同一个数据库的时候,因为异步的原因,增量更新能够保证数据的正确性。
3、抛包策略
游戏服务器有很多数据实在太过频繁,但是有些类型的数据的重要性一般,所以中途丢失一些也问题不大,在服务器数据交换比较频繁的时候完全可以抛弃一些,加快存取速度(不过有了前端后是不是可以忽略这点)。
4、数据分流功能
主要体现在游戏服务器的一些不同类型的数据存取可以通过不同的几个异步队列进行处理,这样即使由于数据库的某些操作延时,也只影响到操作所在队列,不会影响其他队列。
5、灵活的多前端,多数据库等支持
实现游戏服务器,数据库前端,游戏数据库之间的多对多关系,便于灵活的运用。
写完后个人感觉达到第1,2点后,这个数据库前端功能就已经比较强劲了。
相关文章推荐
- 用于Web主机的SQL服务器数据库发布工具包更新
- 跨数据库服务器查询和跨表更新
- 游戏服务器中的数据库异步操作技术和游戏数据的保存机制
- 探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(2)
- 探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(1)
- 如何保证开发过程中对数据库结构的更新顺利地迁移到产品服务器上。
- 跨数据库服务器查询和跨表更新
- 网吧游戏更新服务器--------各种网卡参数设置
- 游戏服务器中的数据库异步操作技术和游戏数据的保存机制
- 探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(4)
- 跨数据库服务器查询和跨表更新 [转]
- 数据库增量同步(二台SQL Server服务器的数据库之间增量传输数据)(jaime原创)
- web策略类游戏开发(三) 多线程下数据库并发更新的处理
- 单服务器架构下的多线程下数据库并发更新的处理方案
- 跨数据库服务器查询和跨表更新
- 由数据库的锁机制想到的——使用读写锁实现应用服务器数据缓存
- asp.net+C# 服务器安装篇--无法更新数据库 *.MDF,因为数据库是只读的解决方法
- 基于MYSQL的 网络游戏 多线程 数据库 服务器 设计与实现
- update关联其他表批量更新数据-跨数据库-跨服务器Update时关联表条件更新
- 游戏服务器之文件数据库