大家好,这里有一个关于广告系统的数据库架构优化的问题,请指点一下 20CSDN]

发布时间:2016-12-7 5:49:28 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"大家好,这里有一个关于广告系统的数据库架构优化的问题,请指点一下 20CSDN]",主要涉及到大家好,这里有一个关于广告系统的数据库架构优化的问题,请指点一下 20CSDN]方面的内容,对于大家好,这里有一个关于广告系统的数据库架构优化的问题,请指点一下 20CSDN]感兴趣的同学可以参考一下。

现在公司使用的是一台sql2000高配置的数据库做广告数据(Impression, click..)的存储,同时这台server又充当广告配置数据的选取(Delivery Ads),所以负载比较高,尤其是在网络流量上,因为一个广告显示先要到这个server上按照条件(Campaign, Creative, Location..)条件选取合适的广告,然后从数据库中选取好Creative返回到Web Server,然后在通过HTTP Request返回到用户的浏览器。 现在想分离一下负载,按照实际的情况,暂时无法购买一台专门做广告选取的服务器(其实不用要求配置太高,主要是内存&CPU),设想了一下,是否可以在每一个web Server上安装Sql Server 2005 Express,通过看过了对硬件的要求和Limited,基本上符合要求(数据库最大支持4G - 存放广告配置数据足够了,内存最大支持2G,并且是免费的),这样原来广告选取的操作就直接可以在Web Server 上自身完成了,另外,许多的数据可以缓存在Sql Server 2005 Express 里面。这样有两个好处:1)降低了网络流量,减轻了广告数据存储服务器的负担,这个服务器只需要负责保存数据就行了(就是快速的Insert into.....),另外一个优点。提高了抵抗Failure的能力,应为每个Web Server 上都有广告配置数据,只要Web Server 不down,广告依旧可以显示。 我现在想探讨的问题是: 1)如果安装Sql Server2005 Express 在每个Web Server 上,可以修改oledb的连接,使用native driver 或者named pipe。性能如何?是否稳定? 2)就数据存储数据库而言,如何提高数据插入的速度,一直想使用I-Ram,把数据文件直接建立在上面,但是I-Ram最大只支持4G,需要考虑数据增长的一定的时候有数据从I-Ram迁移到磁盘上的问题,如何快速的换出是一个问题。 以上阐述的只是技术宏观的描述,还有比较多的细节问题,现在网站的负载在千万级没有问题,希望修改后能够支持上亿级别的访问。 另外一直也在寻找一个性能比较高,尤其是在数据写入方面。因为sqlserver 在数据写入的时候必须要写日志(即使Recovery mode : 简单模式),是不是有必要也把日志放在iram上呢。当前数据库的日志是在一个Raid0上。据我了解现在许多广告数据库都使用mysql,我想主要的原因其中之一是它有一个可以支持非事务的数据写入Engine。但是现在mysql刚刚才对stored procedure有支持,如果要移至,修改的成本太高。 请各位给出你们的意见。多谢!!

首先按照楼主的思路来说。 1)如果安装Sql Server2005 Express 在每个Web Server 上,可以修改oledb的连接,使用 native driver 或者named pipe。性能如何?是否稳定? 在这里要首先明确一下。native driver指的是和oledb、odbc等类似的数据驱动概念。连接SQL2005当然用native driver最好了。而named pipe是和tcp/ip等同级的数据库通讯协议。在局域网中,连接较稳定的情况named pipe的吞吐量性能更好,而tcp/ip更节约网络占用。建议使用named pipe。 2)就数据存储数据库而言,如何提高数据插入的速度,一直想使用I-Ram,把数据文件直接建立在上面,但是I-Ram最大只支持4G,需要考虑数据增长的一定的时候有数据从I-Ram迁移到磁盘上的问题,如何快速的换出是一个问题。 如果真使用I-Ram这样的快速存储设备,做好将数据文件和日志文件都放在上面。这里就有一个I/O平衡的问题,最好准备多个I-Ram设备,然后将数据和日志文件分成多个(一个文件最大4G),分别放在多个I-Ram上,这样能最大限度的避免I/O争用。 说完楼主的这两个问题。我倒是有个问题。看你的这种布局,好像是多个web Server?那么在这些web Server上的SQL2005 Express的数据是否需要同步?还是各存各的,互不影响? 还有,楼主需要注意的是SQL2005Express的内存占用后,不会主动释放,直到其他进程和其竞争,才会释放内存。这样可能会与你的web服务进程造成内存竞争。楼主要注意对SQL2005Express内存占用的上限进行限制。 说到日志问题。只要是成熟的数据库产品都会有redo信息,这一点是很难改变的。至于许多广告数据库都使用mysql,感觉还是免费的原因更大些。

非常感谢回复。 对,没错,数据库之间需要数据同步,我现在使用linked server做同步,不过觉得不太好,尤其是在同步远程的服务器的数据,时间非常长,经常还生成许多的锁,性能不行,在局域网里还凑活。现在正在寻找好的方案。估计需要自己写同步程序了。 关于IRam,虽然性能不错,但是接口又是一个问题,因为使用的是SATA,所以主板上只有两个,受到了限制。 另外想请问有没有比较成熟的广告数据库的案例?

如果需要同步,你的linked server方案健壮性可能就不太好了。 没做过广告数据库的设计,但是所有的设计都要依赖于你的实际环境。 你可以考虑一下你的web Server构建情况。你的多web Server肯定使用了群集吧?你的群集是基于web Server服务的,还是基于操作系统的?如果是基于操作系统的,你可以考虑安装群集方式的SQL Server 2000(SQL2005 Express应该没戏)。这样可以保证广告数据库的健壮性既省却了同步的麻烦,又能减少主数据库服务器的负担。但是前提要求你的群集是基于操作系统的。 另外关于IRam,如果最多只能使用两个,可以考虑将Transaction Log放在上面。因为Undo和Redo信息写的频度是即时的,而数据文件的写入一般是在check point发生时,所以将Transaction Log放在IRam上最划算。

多谢回复 现在所有的Web是在一个LB(Fundry ServerIron)下工作的,Web Server的健壮是足够了。当然就如你所说的现在数据库还没有做到cluster。不过另外一台已经配置好了。由于业务方面的原因,现在还无法上线运行(原来认为广告系统没有什么,深入了解了后发现里面的内容多着呢,而且比较复杂)很想了解一下同行在这方面的看法,但是搞数据库的不少,但是搞广告数据库的不多。国外的一些信息也看过,但是涉及到技术的东西就没有了,可能没有找对地方。 留个联系方式吧:我的msn:[email protected] or [email protected] 如果愿意探讨,随时欢迎(基本上全天在线)

上一篇:今天突然发现SQL Server 2005 不兼容SQL6.5的版本。 0CSDN]
下一篇:安装sql2000和sql05的问题 20wolfking7]

相关文章

相关评论