ASP.NET Web Game构架设计2--数据库设计

首先来看一下数据库设计。

游戏的数据库设计是项目基础设计中很重要的一个环节,下面将说明以下几个 要点:

u 为什么选用SqlServer

u 基本原则

u 表关系的设置

u 数据的冗余设计

u 什么时候使用存储过程

u 什么时候使用EntityFramework什么时候使用ADO.NET

1.为什么先用SQL Server

首先,不要对SQL Server的性能表示怀疑。作为WebGame应用来讲,它的吞吐 能力,承载能力完全够用。

第二,如果服务代码是使用C#来编写的,那么SQL Server2005/2008能得到最 好的C#/Visual Studio兼容性。最重要的是C#中很多组件都是为SQL Server设计 的,并且做了很多优化,例如:EntityFramework,SQL CLR等。

第三,SQL Server中支持SQL CLR功能,即可以使用C#/VB.NET来编写自定义函 数,存储过程等,对于熟悉C#的开发人员来讲是一个福音,不仅仅是代码编写规 则熟悉,而且可以使用一部分.NET类库来实现想要的功能,比如说基本.NET类型 ,数学运算,WCF等功能。

第四,可能很多人都觉得使用SQL CLR是因为T-SQL用的不精,其实不然,SQL CLR实际上是利用C#写好DLL文件,然后被SQL Server调用,本质上利用了.NET来 提高SQL Server的性能,在某些情况下SQL CLR的效率要高于T-SQL。

2.基本原则

在设计游戏数据库时千万别怕表多,在一个常规的网页游戏中,数据表的数量 应该大于150。因为一个游戏项目,细分起来,是由少则10几个,多则几十个子系 统组织起来的,每个系统都有若干张表来辅助存储。

另外,游戏系统的数据库可以按状态分为:配置数据存储表(如基本数值配置 ),状态数据存储表(如计时),以及数据极不稳定的用来表示某个物件所属的 中间关系数据表(如某个用户招募了某一个军官)。总之,要事无巨细,将90%的 数据以数据库的形式存储起来。这么作的原因在于,游戏中很多的数据都是敏感 数据,如金币,某个物件的数量等,如果将过多的数据存储于内存中,一旦服务 掉电,丢失的数据将无法挽回,客服的电话会被打爆的。

当然,如果将大多数数据存储在数据库,反复读写所带来速度问题,也是不可 以忽略的,解决方法如下:

u 客户端在加载的时候,就把常用的只读配置数据存储到客户端。

u 客户端要修改数据时,先修改客户端的数据,然后立即显示出来,最后再 异步调用服务器的接口,去修改数据。

u 如果客户端一定要等待服务器的处理结果,那么就直接利用异步方式调用 服务器接口,但是一定要给用户提示,防止误操作的产生。

u 服务器一定要将常用的数值计算的操作数和结果储存在内存中,以提高响 应速度,例如:游戏中常常用到Pow函数,那就在内存中建立一个Pow的函数值表 ,每次调用时,就直接从表中取出来。

时间: 2024-09-22 01:28:07

ASP.NET Web Game构架设计2--数据库设计的相关文章

ASP.NET Web API标准的“管道式”设计

  ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHandler的处理.在另一端,目标HttpController被激活,Action方法被执行,响应消息随之被生成.响应消息逆向流入此管道,同样会经过逐个HttpMessageHandler的处理.这是一个独立于寄宿环境的抽象管道,如何实现对请求的监听与接收,以及将接收的请求传入消息处理管道进行处理并

数据表设计-一个数据库设计的问题,群组人员的维系问题

问题描述 一个数据库设计的问题,群组人员的维系问题 想要实现和qq群一样的功能,数据库的表该怎么设计,之前有想过通过一个表将用户和群联系起来,这个表放用户id和群组id,但是一想一个用户多个群,一个群那么多用户,这个数据量会非常大.想了好久没想明白该怎么做,有没有大神能给点思路指导指导,谢谢了 解决方案 对用户群表添加用户从表,以群id+用户id作为联合主键 从表中可以添加用户在群中的个性化信息 对用户从表中群id与用户id添加索引,提高查询效率 实际场景中,用户群与用户不会发生笛卡儿乘积那样的

ASP.NET Web Game构架设计3--业务逻辑服务器之计时器

业务逻辑服务器里主要包括以下四个模块 u 计时服务器 u 资源服务器 u 其他逻辑服务 u 对外的WCF接口模块/Socket接口模块 1.计时服务器 计时服务器的作用是给需要长耗时的功能提供一个延时管理模块,比较典型的 应用如"种菜"的计时,武将升级的计时,科技升级的计时,建筑升级的计时等 .计时服务器主要由四个元素组成: u 用于保存计时队列的数据表 u 添加计时的函数接口 u 删除计时的函数接口 u 用于加速的函数接口 u 定时机制 u 可以动态扩展的计时过期处理程序 用于保存计

ASP.NET Web Matrix开发工具简介

ASP.NET Web Matrix是微软最新推出的ASP.NET编程工具,该工具功能全面, 使用也比较轻便.灵活.我们现在来看看使用怎样这个工具设计结合数据的网页 . 一.建立数据库 ASP.NET Web Matrix现在支持微软的SQL Server,也支持自带的一个简单桌 面数据库MSDE,这个简单数据库和SQL Server的个人版有点类似,可以免费下载 .为了说明这个数据库的使用,我们首先到微软网站下载这个免费的数据库工具 . 在没有安装以上数据库的情况下,ASP.NET Web M

如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的.比如有的浏览器只能发送GET和POST请求,客户端发送的PUT请求也不一定能够被服务器理解.除了客户端和服务器对请求采用的HTTP方法的制约外,像代理(Proxy).网关(Gateway)等这些中间部件都具有针对HTTP方法的限制.[本文已经同步到<How ASP.NET We

ASP.NET Web API中的Controller

虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要求它实现IHttpController接口即可,所以我们将其统称为HttpController.既然HttpController指的是所有实现了IHttpController接口的类型,我们自然得先来了解一下这个接口的定义.如下面的代码片断所示,在IHttpController接口中仅仅定义了唯一的

ASP.NET Web API 简介

本周早些时候,我写过一篇关于 ASP. NET MVC 4 测试版的博文.ASP. NET MVC 4 是一个重大的更新,它带来了一堆出色的新功能.我最兴奋的改进之一是为创建"Web ApI"提供了支持.今天的博文是我将要谈论的这种新功能的系列文章中的第一篇. Web ApI 近几年见证了 Web ApI的兴起--服务是通过一般的 HTTP公开了,而不是通过更正式的服务合同 (如SOAP或 WS *).公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中

MCDBA 数据库设计学习BLOG

设计|数据|数据库|数据库设计 MCDBA 数据库设计学习BLOG  2004-4-14 规划存储管理 1 有且只能有一个主数据文件2 数据和事务日志永远不能在同一个文件中3 两个数据库之间不能共享一个文件组4 当估算数据库大小时,应该使用表和索引.5 无限文件增长只受操作系统和物理磁盘容量的限制.6 文件组,就是把一组文件象单个文件一样的处理,这些文件的组称为文件组,  通过它实现了一个数据库存放在多个磁盘可能,通过练习理解了文件组的概念. 练习:USE masterGO Create dat

[收藏]数据库设计中的反规范技术探讨

规范|设计|数据|数据库|数据库设计   数据库设计中的反规范技术探讨   注:这是很久以前在一个论坛看到的文章,觉得写的不错:本着与众多业内人士交流.传播思想的目的展示在此,原论坛的名称已经不记得了,当时亦是转载.你可以任意转载此文,但由此引起的任何道德.法律纠纷与http:blog.csdn.net/aceplus无关,且http:blog.csdn.net/aceplus保证没有将此文用作任何商业和非法用途:如果您是本文的原作者,认为http:blog.csdn.net/aceplus转载