壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 933|回复: 0

冗余数据库优化方案

[复制链接]
发表于 2012/7/10 01:15:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 xiaoerp 于 2012/7/14 01:59 编辑

我们的客户经过多年有的长达10年以上的系统运行后,主业务数据库数据量飞速增长,主服务器(DBSERVER)承担着越来越大的压力,负担着所有日常业务(单据的新增和审核、基本资料的维护等)、数据交换(总部下发、门店上传)、数据查询(简单查询、对比参考类查询)。由于各项功能之间相互影响、相互争夺资源,致使服务器响应速度慢、数据库读取和写入慢、影响到海鼎程序的运行也越来越慢。
与此同时,随着企业的不断壮大,思想不断成熟,对数据的要求已经不仅仅满足于简单的查看和核对,而把越来越多的精力放在了对数据的挖掘和再加工上,并以此来对现有业务和策略进行优化。于是,客户会更加迫切地需要建立一个能容纳众多历史数据,并且有能力和余力对数据进行挖掘和再加工的数据中心。
为了解决客户的问题,帮助客户快速成长,我们提出了冗余数据库的解决方案。
一、方案目的
此方案的目的:将主业务数据库(以下简称主业务库)的诸多功能剥离出来,在业务库上只做业务操作,包括日常业务、部分数据交换,减轻业务库压力。另外,新增冗余数据库(以下简称冗余库),负责报表查询、数据分析。
二、方案架构
基本架构如下
1、主业务库中的基本资料、单据、总部的报表,通过复制订阅技术,同步到冗余数据库。即,在业务库中的业务数据变动,都会体现在冗余库,两边数据保持一致。
2、门店上传的单据、账款日报,仍然发送到业务库,出货日报、进货日报、库存日报、库存调整日报、以及其他自定义日报,发送到冗余库。这些通过DTS交换实现。
3、如此,业务数据库专司业务操作,资源争夺的频率大大降低,速度得到提升。同时,冗余数据库拥有着业务数据库的全集,以及报表全集,不仅可以应对简单查询,更可以支持分析对比之类的数据挖掘查询。
三、方案实现
(一)复制订阅技术
1、基本模型与原理
复制订阅是MicroSoft SqlServer提供的一种异地数据同步技术。简单的模型是:
基本原理是:在设置了某个数据库为发布数据库,并且设置了其中的发布对象后,对这些发布对象的所有插入、更新和删除操作,及其内容都将被日志记录,接着,由分发服务器中的日志读取器将这些日志读取出来,提供给订阅者订阅。订阅者将这些操作按时间顺序在对应的对象中执行。如此,就实现了数据的同步。
2、应用案例
发布服务器:DBSERVER(业务服务器),数据库:HD31,发布对象:约214张表,分为21个组。分组的目的是为了更好地管理发布内容,便于进行内容调整,比如增加筛选条件等。
分发服务器:在配置好分发服务器后,SqlServer会自动生成一个分发数据库distribution,以及用来监控复制订阅运行情况的监视器,当复制订阅的某一个对象出现失败,监视器就会出现红叉示警,也可以设置邮件报警。
订阅服务器:
说明:分发服务器、订阅服务器这2种角色可以分开在2个服务器上,也可以由一个服务器来兼任。比如,可以由一台性能比较好的服务器来担任这2种角色。这里的订阅服务器也就是冗余服务器。
(二)DTS交换
DTS交换,它可以根据IP配置来实现不同的交换目的地。比如:要实现上述方案,必须将门店上传的数据进行筛选,如果是单据、账款日报、员工等基本资料,则上传到主业务库;如果是库存日报、出货日报等日报,就上传到冗余数据库。这就要求总部的DTS交换中心,能够往双IP地址发送数据,同时能够识别数据类型。
该实例中的DTS交换结构如下图所示:
1、基本原理
1)总部传送逻辑
发送动作(Hdmain.exe + 发送存储过程)将发送的内容写入总部N表,并将相应N表信息注册到hd31.netobjseq表
--交换服务扫描netobjseq 表,如果存在待发送N表信息,则到相应N表中取出数据,加工成语句,放入DTS 的队列中,并删除N表数据和netobjseq内容
--等待门店下载
--门店DTS线程到总部DTS队列中下载自己门店的数据,并放到自己的hd31数据库中执行,执行成功后,删除总部队列中对应的部分。
2)门店传送逻辑
发送动作(Hdmain.exe + 发送存储过程)将发送的内容写入门店N表,并将相应N表信息注册到hd31.netobjseq表
--交换服务扫描netobjseq 表,如果存在待发送N表信息,则到相应N表中取出数据,加工成语句,存入DTS 的队列中,并删除N表数据和netobjseq内容
--门店主动上传,首先向总部DTS申请上传,得到允许后,将语句直接放到总部的hd31数据库中执行,执行成功后,删除自己队列中对应的部分。
2、数据流
DTS依然是基于FTP数据交换机制而设计的,因此,仍然使用原来的N表(网络表,以下统一简称N表),来作为数据发送的缓存空间。并且,也是通过提取数据并生成数据更新的SQL语句来完成数据交换的。所不同的是, DTS不再使用中间文件(例如:FTP交换的文本文件和压缩包),而是直接把数据从N表中提取出来,并通过NSqlItem中的Sql语句(数据提取语句,对应字段ASelect,ADelete),把N表中要发送的数据解释成Sql语句,存放在一个队列之中(队列是指MySql数据库中的toutqueue表,MySql数据库是一个中间数据库)。针对总部而言,其提供基于Soap协议的Web服务,而针对门店而言,其提供访问总部WEB服务的接口程序。门店定时调用WEB服务访问接口来下载总部交换数据库中发送给该门店的toutqueue记录,或者把其自身交换数据库中的toutqueue记录,上传到总部。
四、应用效果
上述数据库冗余优化方案已在多家客户应用,取得了比较好的效果。仅以华润慈客隆的应用情况来看:
随着慈客隆不断发展,特别是2005年加入华润集团之后,业务量飞速增长,门店数量飙升,在给公司带来巨大利润的同时,也给系统带来了巨大的压力,特别表现在总部物流的配货出单上,每天接收门店定单进入配货池、生成配货出货单、审核配货出货单,总共需要耗费半天的时间。但如果仅仅是耗费时间长的话,客户依然??他部门(采购、财务等)每天需要执行很多业务类、分析类的查询,比如:定货参考、历年数据环比分析、商品贡献度、供应商结算、门店结算、毛利查询等等,各个线程之间相互死锁,持有的资源无法释放,更直接导致了配货出单无法成功,影响了业务的正常开展。
实施了冗余数据库优化项目后,最直观的变化是在物流部门。配货出单一般缩减到2个小时内完成,极大地提高了部门人员的工作效率。同时,其他部门诸如采购部和财务部,也非常高兴,因为再也不要忍受超长的查询时间了,原来一个分析类比的查询时间快捷多了,查询速度提升了约3倍。
在我们与客户的共同努力下,冗余数据库方案不仅完美地解决了客户火烧眉毛的问题,更成为了慈客隆一个基于历史数据进行业务分析和商业智能分析的数据仓库平台,并将在此基础上为客户创造更多的价值。



该贴已经同步到 xiaoerp的微博

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 07:32 , Processed in 0.015460 second(s), 20 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表