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点后,这个数据库前端功能就已经比较强劲了。

游戏数据库服务器 数据缓存 增量更新相关推荐

  1. 无盘服务器磁盘缓存,云更新无盘服务器磁盘缓存器

    云更新无盘服务器磁盘缓存器 内容精选 换一换 Linux操作系统下,用户由于误操作卸载弹性云服务器上的Tools,会对非PVOPS系统的磁盘和网卡产生影响,导致系统无法发现数据盘.此时,用户可通过新建 ...

  2. MySql数据库实现数据存在则更新,不存在则插入

    1.存在则更新(不影响其他字段),不存在则插入 insert into 表名(字段1,字段2) VALUES(值1,值2) ON DUPLICATE KEY UPDATE username=值3 如上 ...

  3. oracle数据库的数据日增量怎么统计

    在Oracle 10g开始awr自动负载仓库引入了dba_hist_seg_stat视图,该视图记录了快照时间内segment-level段级的历史统计信息:DBA_HIST_SEG_STAT dis ...

  4. Django项目--静态首页的数据缓存(设置、获取、更新)

    0 前言 将处理计算的结果先临时保存起来,下次使用的时候可以先直接使用,如果没有这个备份的数据,重新进行计算处理. 将缓存数据保存在内存中 (本项目中保存在redis中) cache注意事项: 1)如 ...

  5. clickhouse初学以及利用ck实现BI系统的增量更新

    文章目录 概述 适用场景 库引擎(部分) 1.Atomic 2.Lazy 3.Mysql.SQLite.PostergreSQL等一系列 数据类型(部分) 表引擎-合并树系列 ReplacingMer ...

  6. SQL server数据缓存依赖

    为什么80%的码农都做不了架构师?>>>    SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/ ...

  7. mysql rrd_将RRD数据库中数据导入MYSQL中

    一.RRD数据库及RRDTOOL简介 意为Round Robin Database.设计理念为按照round-robin的方式进行存储,在一个周期之后(可自己定义),新的数据会覆盖掉原来的数据.所以R ...

  8. Redis:缓存问题之数据不一致(更新数据库时 主动更新)

    Redis:缓存问题之数据不一致(更新数据库时 主动更新) 关键词 数据源不一样(缓存和db操作非原子性) 1.延时双删 -> 2.TTL -> 3.缓存删除失败记录到日志中,利用脚本提取 ...

  9. sql server跨服务器修改数据,SQL Server跨数据库服务器查询和跨表更新的详细操作...

    SQL Server数据库跨数据库服务器查询和跨表更新的相关知识是本文我们主要要介绍的内容,接下来我们就通过一个实例来介绍这一过程.实例是这样的:想实现的功能很简单, 在我的本地一个表用来保存省的信息 ...

  10. ce能修改服务器数据吗,ce修改游戏服务器数据库

    ce修改游戏服务器数据库 内容精选 换一换 数据安全中心与周边服务的依赖关系如图1所示.对象存储服务(Object Storage Service,简称OBS)是一款稳定.安全.高效.易用的云存储服务 ...

最新文章

  1. 用LaTeX优雅地书写伪代码:Algorithm2e简明指南
  2. python工资管理系统课程设计_高校教师绩效工资管理系统设计开发,源码下载
  3. 异常数据4种剔除方法_数据分析系列 22/32 | 9种常用的数据分析方法
  4. gwt-2.8.2下载_GWT EJB3 Maven JBoss 5.1集成教程
  5. 实例1:python(续)
  6. 玩转Linux系统用户管理
  7. 安装配置rabbitmq
  8. 面试思考,入职初期怎么做
  9. 使用 IntraWeb (25) - 基本控件之 TIWRegion
  10. 基于ifix组态软件研究控制按钮权限
  11. 旧手机别扔,手把手教你DIY一台Linux服务器
  12. 数据库安全性存取控制机制
  13. qt删除键值_Qt QMap键值对基本用法(键值对)
  14. 个人简历网页设计项目(入门)
  15. 有关信息抽取的文章列表(1)
  16. php+mysql+apache集成安装包
  17. Java游戏编程初步
  18. nginx架构(修改版)
  19. 程序员的5个级别,看看你到几级?
  20. linux内核配置nfs,【参赛手记】开启Digilent提供的Linux内核的NFS支持

热门文章

  1. python里的非_python中或与非
  2. 2022年第十二届APMCM亚太地区数学建模竞赛1月加赛E题翻译以及思路
  3. 2022全新Java学习路线图动力节点(四)Javaweb前端与后端
  4. 微信签名错误解决步骤
  5. 工控硬件芯片级电路板维修方法
  6. 【LeetCode-769. medium】最多能完成排序的块
  7. linux 如何解压z01文件
  8. The project seems to require yarn but it‘s not installed解决办法
  9. Lua-面试考题附答案解析(一)
  10. docker中报错Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirro