基于wcf的通信数据etl服务的设计与实现

基于wcf的通信数据etl服务的设计与实现

ID:34148385

大小:4.60 MB

页数:73页

时间:2019-03-03

上传者:U-24835
基于wcf的通信数据etl服务的设计与实现_第1页
基于wcf的通信数据etl服务的设计与实现_第2页
基于wcf的通信数据etl服务的设计与实现_第3页
基于wcf的通信数据etl服务的设计与实现_第4页
基于wcf的通信数据etl服务的设计与实现_第5页
资源描述:

《基于wcf的通信数据etl服务的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

硕士学位论文基于WCF的通信数据ETL服务的设计与实现TheDesignandImplementationofCommunicationDataETLServicebasedonWCF学号:21109236完成日期:2Q!垒生垒月2墨目大连理工大学DalianUniversityofTechnology 大连理工大学学位论文独创性声明作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外,本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。若有不实之处,本人愿意承担相关法律责任。学位论文题目:建立丝盟堑垒丝毖鳖塑红生避金堑业氢坦作者签名:∑蠡么日期:也!竺午—L月上日 大连理工大学硕士学位论文摘要网络优化是在对移动通信数据处理分析的基础上,对现有的网络设备进行调整,使之能够更好的服务广大手机用户的重要工作。各大网络设备与服务的提供商都需要一个数据分析平台对基站所产生的日志文件进行分析,找到网络中需要调整的方向或者目前网络中存在的问题。通过对网络优化中常用的移动通信数据的研究和对网络优化工作人员需求的调查,发现现有的网络优化工作仍然采用手动的方式,网络优化人员日常工作有相当一部分时间在处理各种各样的日志文件。数据处理程序不完善,很多的常用分析功能都需要人工完成,费时费力,而且重复性工作很多。根据网络优化工作人员的具体需求,总结在移动通信领域的数据处理需求,最终设计了基于WCF的通信数据ETL服务。系统使用WCF寄宿Windows服务的方式向外开放调用接口,方便外界引用数据服务,调用系统功能。系统使用基于表结构描述的数据存储方式,并对数据进行横向切分,使用SQLServer数据库很好的对大量不同格式的移动通信数据进行了表示和存储。在细致分析需求的基础上,将数据导入过程细化,分为文件列取、下载、解析、保存四个步骤,细致检测数据导入过程,检测任务异常。系统允许开发人员通过编写插件的方式进行二次开发,在不修改系统的情况下对系统进行直接扩展,增加数据处理功能。为了方便数据读取,满足数据透明性,在查询条件的限制和功能灵活性的平衡上做了一定的尝试,在考虑系统扩展性,预留计算扩展接口的情况下,提供两种不同的数据读取方式,并基于这两种数据读取方式,提供了面向移动通信领域的常用网络数据计算。系统设计和实现的过程中,充分考虑了客户端的需求,通过流水线,多线程和延迟加载等方式对系统的效率进行了优化,保证服务系统的响应时间和应答效率,提高数据处理效率。目前,在经过大连移动公司现场测试之后,通信数据ETL服务已经提交爱立信公司内部使用,作为网络数据处理的基础支持项目,协助网络优化工程师对网络数据进行分析,得到了相关工作人员的充分肯定,具有实际应用价值。关键词:网络优化;ETL;WCF;数据服务;大数据; 基于WCF的通信数据ETL服务的设计与实现TheDesignandImplementationofmobilenetworkdataETLservicebasedonWCFAbstractBasedondeanalysisofmobilenetworkdata,networkoptimizationisimportanttoworkontheexistingnetworkequipmenttobeadjustedSOthatitcanservethemobilephoneusersbetter.Thenetworkequipmentandserviceprovidersneedadataanalysisplatformtoanalysisdailylogfilesgeneratedbythebasestation,tofindthedirectionthenetworkneedstobeadjustedtoandtheexistingproblemsofthenetwork.TheresearchoncommonlyusedmobiledatainnetworkoptimizationandneedsofstaffsworkingonnetworkoptimizationfoundthatthenetworkoptimizationworkiSstilldonemanually.andconsiderablepartofthedailyworkofnetworkoptimizationstaffsiSspendindealingwithawidevarietyoflogfiles.Dataprocessingprogramisnotperfect.alotofcommonanalysisfunctionsaredonemanually,whichcostalotoftimeandrepetitiveWOrk.Basedonthedemandofnetworkoptimizationstaffs,summarizesthedataprocessingrequirementsinthemobilecommunicationfield,thedesignofthecommunicationdatabasedonETLWCFservicecomes.111esystemopenoutwardthecallinterfacebyusingWCFwithwindowsserviceasitshost.whichwillbeconvenientforclienttoreferdataservicesandcallthesystemfunctions.Byusingthedatastoragebasedontableschemaandhorizontalsegmentation,numerouscommunicationdataindifferentformatscouldberepresentedandstoredinSQLServerdatabase.Onthebasisofdetailedanalysisondemand,dataimportprogressisdividedintofourprocedure:listprocedure,downloadprocedure,parseprocedureandsaveprocedurethroughwhichtheimportprocesswillbedetailedtestedandtheexceptionsbedetected.Developersareallowedtowriteplug-insforsecondarydevelopmentapproach,increasethedataprocessingfunctions,extendthesystemdirectlywithoutmodifyingit.Inordertofacilitatedatareading,meetthedatatransparency,someattemptismadeontherestrictionsofqueryandtheflexibilityofsearchfunction.Inthecaseofsystemscalabilityconsiderationsandreservecomputingexpansioninterface,twodifferentdatareadmodeareprovided,basedonwhichprovidesomecommoncomputingfunctionsformobilenetworkdata.Inthedesignandimplementationofthesystem,fullyconsideringtheneedsoftheclient,theefficiencyofthesystemisoptimizedthroughpipeline,multithreading,delayloadingandSOonsothattheresponseefficiencyisensuredandthedataprocessingefficiencyisimproved.Sofar,aftertestthesysteminDalianChinaMobile,mobilenetworkdataETLservicehasbeensubmittedtoEricssonforinternaluseasthenetworkdataprocessingsupportproject,II— 大连理工大学硕士学位论文assistnetworkoptimizationengineerstoanalyzenetworkdataandhasbeenfullyaffirmedbytherelevantstaffs,haspracticalvalue.KeyWords:Networkoptimization;ETL;WCF;DataService;BigData;..111.. 基于WCF的通信数据ETL服务的设计与实现目录摘要⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一IAbstract...⋯.....⋯.....⋯.....⋯⋯⋯⋯.⋯.⋯⋯..⋯⋯..⋯⋯⋯..⋯⋯..⋯⋯⋯⋯..⋯⋯⋯..⋯⋯⋯..⋯⋯....II1绪论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯~11.1课题研究的背景⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2国内外研究现状⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.21.2.1网络优化的数据来源⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..21.2.2常见移动网络数据处理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一21.3本文的主要研究内容和作者的主要工作⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.42相关技术介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52.1ETL⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一52.2WCF..⋯⋯.⋯.⋯⋯..⋯⋯..⋯⋯⋯..⋯⋯⋯..⋯⋯⋯..⋯..⋯⋯⋯⋯⋯..⋯⋯⋯.....⋯..⋯⋯⋯..⋯72-3流水线技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.92.4多线程技术与线程池⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯102.5C拌反射与插件化编程⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯1l3系统需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..133.1移动网络通信数据特点⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯133.2系统设计原则⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯143.3具体需求分类⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯153.4系统环境分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯164系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..174.1系统整体架构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯174.2数据库总体设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯174.2.1数据表命名规则⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯184.2.2基于表结构描述的数据存储方式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯184.2.3基于横向切表的大数据存储方式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯204.2.4数据导入任务管理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯224.2.5模板化数据读取⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯234.2.6数据库其他部分⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯254.3ETL服务设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯254.3.1数据导入业务逻辑分析和数据管理模块的设计⋯⋯⋯⋯⋯⋯⋯⋯254.3.2数据透明性与数据读取模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯28 大连理工大学硕士学位论文4.3.3数据计算模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯305系统功能实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯~325.1WCF技术在项目中的使用⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一325.2基于泛型编程实现的线程池⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯345.3数据管理模块的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯365.3.1数据导入流水线与任务监控⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯365.3.2周期任务计时策略⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯385.3.3基于插件的功能扩充接口⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯395.3.4数据管理界面⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯445.4数据读取模块的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯475.5数据计算模块的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯505.5.1异步计算与结果返回⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯505.5.2内存效率优化与延迟加载⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯526系统测试与部署⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..546.1系统测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯546.1.1单元测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯546.1.2功能测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯576.2系统部署与运行⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯58结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..60参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..6l攻读硕士学位期间发表学术论文情况⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一64致谢⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一65大连理工大学学位论文版权使用授权书⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一66 大连理工大学硕士学位论文l绪论1.1课题研究的背景手机的通信技术规格从1G,以模拟技术为基础的蜂窝无线电话系统,经过无法直接传送如电子邮件、软件等信息,只具有通话和一些如时间日期等传送的2G和支持高速数据传输的蜂窝移动通讯技术(也就是3G),到如今刚刚开始使用第四代,即4G标准。2014年3月6日消息,据工信部统计数据,一月底中国移动通讯用户达12.35亿,较上月增长0.5%,同比增长10.8%。中国是人口大国,手机用户数量巨大,需要大量的基站等设备进行服务。而作为发展中国家的中国,基础设施薄弱,如何对移动通信网络进行优化,使用有限的硬件资源达到更好的通信效果,提高用户体验,一直是移动通讯行业的重大课题之一。网络优化工作是指对正式投入运行的网络进行数据采集、数据分析,找出影响网络运行质量的原因并且通过参数调整和某些技术手段,使网络达到最佳运行状态,使现有网络资源获得最佳效益,同时也对网络今后的维护及规划建议提出合理建测11。网络优化通过对基站进行性能数据采集,设备硬件检查和工程参数分析等手段,定位影响网络性能的原因,最终通过修改设备参数配置,调整网络结构等技术手段,以最佳的方式利用网络资源,在一定的成本控制之下,建设一个覆盖范围和容量指标尽可能大的无线通信网络,提供给用户良好的网络服务【21。按照在移动系统中从开通到正常运行的过程中所起的作用,网络优化可以分为两种不同的类型:工程型优化和维护型优化【31。前者在基站建立或扩容升级时进行,后者是在系统运行过程中,根据所覆盖区域具体情况变化做出的调整。由此可见维护型优化需要按周期进行,消耗的人力物力也更高。网络优化的依据主要是设备的日志文件。在实际应用中使用的设备,由于使用不同的技术,应用在不同环境下,规格能效都不尽相同,设备产生的日志文件千差万别。在日常的网络优化工作中,工程师经常需要应对不同型号的设备所产生的不同格式,不同内容的大量日志文件。这些文件中的数据,经过适当的提取和处理,将成为网络优化的重要依据。本课题来源于与爱立信公司合作的实际项目。爱立信公司作为移动通信领域的设备和服务供应商,需要一套系统对于大量繁杂的日志处理分析进行高效自动化处理,以减少对于人工经验的依赖,缓解缺乏高级技术工人的问题。 基于WCF的通信数据ETL服务的设计与实现1.2国内外研究现状1.2.1网络优化的数据来源目前,数据网络评估优化的流程主要包括5步,分别为数据采集,分析评估,问题定位,优化调整和效果验证【41。其中网络优化的数据来源主要包括OMC话务统计、DT(路测)、CQT(呼叫质量测试)和MR(钡g量报告)等【51。OMC话务统计是了解网络性能指标的重要途径,可以了解各小区的话务量,呼叫成功率,掉话率,拥塞率,切换成功率等重要的指标,了解TCH,SDCCH等信道的占用和信令承载情况,明确无线基站的话务分布,并据此分析出网络结构异常,话务量不均等问题【61。OMC通常只反应上行无线信号的情况,下行信号通过DT进行测量。DT(DrivingTest)也称路测,指在实际使用环境中,借助相关仪表或测试终端,沿特定路线移动并进行信号测量【71。路测的数据能够定性、定量、定位的检测出无线信道中下行信号中的覆盖、切换和服务质量等状况,从而检测网络的运行现状与规划是否存在差异,同时也可确定网络中是否存在干扰、盲区、小区孤岛以及高掉话率和高切换率地段【81。CQT(CallQualityTest),即呼叫质量拨打测试,一般由测试人员到指点地点使用测试专用的手机或笔记本电脑,进行一定数量的连接,测试无线网络信号的各项指标。CQT主要测试忙时话务量较多区域的电平、切换、掉话以及通过质量。由于CQT是对单个测试地点进行多次测量,故又称为“点测”。MR(MeasurementReport)即测量报告。用户终端在业务信道上向基站每480ms发送一次数据,MR测量报告来源于其中上传的数据【91。MR是用户反映的其实际所处无线环境测量报告,通过MR的优化工作来提升网络质量,可以有效定位弱覆盖、过覆盖、干扰等无线环境问题,对用户感知有较大提升【10】。1.2.2常见移动网络数据处理移动网络数据的应用场景很多,经常用来进行信号覆盖、干扰、接入、切换、掉话、话务平衡和信令的相关分析【11】。一个网络性能好坏的最基本的指标就是信号覆盖是否满足接入和通话要求。可以依据路测得到的数据来判断和分析前、反向链路的覆盖性能。对于影响网络覆盖指标,目前己知的主要原因有两点,其一是网络规划不合理,即在有些区域出现无覆盖和覆盖较差的情况,其次是基站的位置不合理,天线的方向角、下倾角不合理。在这里可以应用相关性算法,对大量的采样数据数据进行分析,得出覆盖率与某个具体原因的相关性大小,从而给优化人员以提示指导作用。 大连理工大学硕士学位论文移动通信网络是一个干扰受限系统,过强的干扰会使误码率大大增加,话音质量变差,严重时直接导致掉话。网络的频率规划和功率分配不合理,信号覆盖区内存在发射功率较强的直放站、微波站、寻呼台等可能干扰源或存在功率失控的基站或移动台等情况都可能造成干扰。由于干扰本身是一种相互关系,所以对干扰分析可以使用相关性分析。通过对出现大误码率时各参数设置的相关性分析,能得出可能导致高误码率的原因。同时可以根据已经掌握的情况,对网络的干扰做出预警分析,及时调整网络。移动通信网络的接入率反映网络的接续状态,是考察网络运行质量的主要指标之一。根据测试时具体的环境情况和后续的分析,影响网络接通率的主要原因可能为频信道的干扰,信号的强度较弱,以及PN污染问题等。在实际中可以通过对以往系统的接入情况进行对比分析,提前通知优化人员进行网络参数的调整,以提高网络的接通率。切换是移动通信的一个关键技术,用户之所以可以移动通话,最根本的原因就是移动台可以在不同载频和相位之间切换。切换成功率对于网络优化有特殊的意义。扇区或小区接入参数和切换参数设置不正确,临区列表设置有问题或切换带规划不合理,存在切换带过宽、过窄、以及存在乒乓切换带等现象都是影响切换成功率的主要原因。经过统计分析,可以找出系统最高成功率时的各参数设置指标,对以后的参数设置进行预先指导。掉话率是反映网络保持性的重要指标之一,在这里以测试的里程数与掉话的次数的比值作为衡量标准。根据测试时具体的环境情况和后续的分析,发生掉话的主要原因有信号覆盖强度和质量问题,系统参数和相邻小区列表设置问题和系统设备问题。通过使用相关分析、偏差检测等算法,可以准确定位问题的所在,从而准确的对网络做出调整。话务平衡是指各个扇区载频应该得到充分利用,避免某些扇区拥塞,而另一些扇区话务过轻的现象。话务平衡可以减小拥塞,提高接入成功率和切换成功率。网络规划不合理,话务模型不准确,基站和天线参数波动,或小区接入参数和切换参数设置不合理都有可能影响话务平衡。对于话务平衡的分析,需要找出话务繁忙的因素,它可能与时间段有关,也可能与消费群体的分布有关。同时可以通过序列分析,找出以前在具有相同影响话务量的因素存在的条件下,预测接下来的话务情况。提前调整网络参数,减小话务拥塞,提高接入成功率和切换成功率。移动台与基站之间的注册、鉴权、接入、切换等都是通过信令的交互完成的。所以信令的监测和参数分析对于了解和掌握网络的运行状态和运行质量有着重要的意义。通过对信令的跟踪,可以方便地定位故障,验证网络规划的合理性,方便对接入过程和切换过程的详细分析。 基于WCF的通信数据ETL服务的设计与实现1.3本文的主要研究内容和作者的主要工作本文主要阐述了一套使用WCF服务对外进行数据交互的移动网络数据ETL数据处理计算服务,能够适应不同格式的设备大量日志文件,以任务为单位完成自动数据解析并导入保存到数据库,对任务进度进行全程监控,同时可以使用插件对数据处理功能进行扩展。系统以WCF服务的形式对外提供调用接口,能够进行任务控制、数据读取、提交计算等操作。作者全程参与了系统的整个生命周期。主要的工作如下:(1)参与系统需求分析,多次与爱立信工程师进行沟通,了解目前所用软件系统局限。(2)设计系统整体架构,确定了系统的整体设计方案和使用技术。(3)设计数据在数据库中的存储结构和读取方式,确定数据库结构,搭建整体平台。(4)完成项目整体框架的编码和测试(5)多次到大连移动公司进行现场系统测试。本文共分六部分,内容安排如下:第一章为绪论,介绍课题的背景,国内外研究现状,论文组织结构等。第二章介绍基于WCF的通信数据ETL服务所使用相关技术的介绍。第三章进行整个软件系统的需求分析,对系统要求和技术目标进行说明。第四章进行整个软件系统的架构设计的说明,重点介绍数据库设计和ETL服务各个模块功能。第五章介绍ETL服务各部分的实现细节,包括抽象设计,扩展结构设计,效率提高技巧等。第六章说明系统的测试,包括对于多线程的流水线的测试等。结论部分对本文工作进行了总结,提出了存在的问题和进一步优化扩展的方向。 大连理工大学硕士学位论文2相关技术介绍2.1ETLETL031,Extraction.Transformation—Loading的缩写,即数据抽取(Extract),转换(Transform),装载(Loading)三个过程,是构建数据仓库的重要环节【121,是指抽取各种数据资源,并进行数据的清洗、转换,最终将满足目标模式的数据载入数据仓库的过程【14】。数据仓库(DataWarehouse)115】是一个面向主题的(SubjectOriented)、集成的(Integrate)、非易失的(Non.Volatile)、随时间变化的(TuneVariant)用来支持管理人员决策的数据集合圈【16]。^‘![二二二二三二二二]≤》—斟1醇)钉亘茎b疰亟丑书lL—————————————J图2.1ETL整体框架图Fig.2.1ArchitectureofETL数据的抽取就是数据的入口。数据抽取过程从异构的各种数据源中将需要处理的数据提取出来【17】。数据源可以是数据库,包括Oracle,SQLServer,Sybase,MySQL等常见的关系型数据库,也可以是数据文件,比如Excel,XML文件,网页【181,甚至文本文件或者二进制文件。只要是能够获得有效数据的方式,都可以作为数据源。抽取得到的数据可能不经过任何处理,与数据源的结构格式相同,也可能是有选择的抽取,只获得与数据仓库内容有关的信剧·纠。数据的转换就是将抽取所得数据经过一系列的变换加工转变为符合目标数据模式的过程,包括数据质量的检查,数据的清洗【201,数据的继承与合并等【2l】。由于数据的原始格式相差很大,数据的转换是一个需要非常注意的步骤,数据的转换不应造成数据含义变化并且尽量保证信息不丢失。数据转换的同时由于数据的多样性,容易造成“脏数据”,所以要进行数据清洗【冽,去掉非法数据,确保数据集中同一属性数值的一致,同时提高数据的质量[23】。霄 基于WCF的通信数据ETL服务的设计与实现数据装载的主要任务是将经过转换后的干净的数据集按照物理数据模型定义的表结构装入目标数据仓库的数据表中,并允许人工干预。以及提供强大的错误报告、系统日志、数据备份与恢复功能【24]。数据仓库所存储的数据就是海量的数据,通常会使用分布式数据库和相应的管理系统来对数据进行管理,数据装载就负责与数据库相连接,将转换后的数据存放到指定的位置【25】。ETL工具的本质是数据转换器,它提供一种从源到目标系统转换数据的方法[26】。ETL的作用在于将分散的数据集中在一起,形成逻辑上统一的可访问的数据集。这里的分散不是物理上的分散,指的是不能进行统一的访问,经常需要多次使用多种方式访问得到相关联的数据。ETL同时解决数据格式混乱,数据不清洁的问题。这一点从ETL的第二步可以看出,ETL的数据转换的重点就在于格式的统一和数据的验证。随着近年来软硬件技术的发展,大数据和云平台概念的深入传播和理解,数据仓库技术进一步深化,许多厂商致力于商业ETL工具的开发。常见的商业ETL工具有:Oracle公司的OWB(OracleWarehouseBuilder)[27,28】、ODI(OracleDataIntegrator)【291,微软的DTS(DataTransformationServicesl[30,31],Informatica公司的Informatica以及IBM公司的DataStage等等。除了商业ETL工具之外,还有一些开源的ETL工具。Kettle[32】是开源ETL工具中具有代表性的一款,使用Java编写,高效而且稳定。图2.2常见商业ETL工具操作界面Fig.2.2CommercialETLtools’interface 大连理工大学硕士学位论文2.2WCFWCF(WindowsCommunicationFoundation,Windows通信基础)133]是.NET3.0引入的核心技术之一,数据通信的应用程序开发接口,是在.NET平台下进行网络传输,构建网络服务应用的基础。在WCF出现之前,微软.NET2.0及其以前的版本中,同时存在有WebService(SOAPwithHTTPcommunication),.NETRemoting(TCP/HTTP/P啦linecommunication))以及基础的Winsock等通信支持,这些技术互相有所重叠,又有很多区别。使用不同方法传输数据会得到不同的益处,同时又各有其不足,对于开发人员来说,学习、使用和维护会变得非常复杂。与此同时,随着Web服务的发展,以及企业中的软件系统日益变得庞大和复杂,面向服务的体系结构(Service.OrientedArchitecture,SOA)[341逐渐被人们所接纳。W3C将SOA定义为:“一种应用程序体系结构,在这种体系结构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,可以定义好的顺序调用这些服务来形成业务流程”【35】。SOA是一种松散耦合的软件体系结构,在这种体系结构中,由各自独立可重复的服务区构成系统功能【36]。图2.3SOA框架图Fig.2.3ArchitectureofSOA在这种背景下,微软整合了前面提到的集中网络通信方式,根据SOA的架构思想,与WindowsPresentationFoundmion及WindowsWorkflowFoundmion一起,作为.NET3.0的重要组成部分,推出了WCF,成为新一代Windows操作系统以及WinFX的三个重大应用程序开发类库。 基于WCF的通信数据ETL服务的设计与实现WCF通过访问点(Endpoint)实现消息的交换,客户端与服务端通过匹配的访问点进行连接。访问点包含“ABC”三部分内容,其中A代表地址(Address)、B代表绑定(Binding),C代表了契约(Contract)【37'381,三个部分一起定义了客户端和服务端在何处用怎样的方式交换什么样的信息。地址就是服务提供方在网络中的位置和服务的名称。WCF所支持的通讯协议有:H1TrP、TCP、Peernetwork、IPC(Inter--ProcessCommunicationovernamedpipes)和MSMQl391。例如:http://202.118.67.200:10077/Ericsson所表示的就是在IP为202.118.67.200的10077号端口有一个名为Ericsson的服务。地址一般使用配置文件进行指定,方便进行部署。绑定指定了服务端与客户端的交互方式【401。每个绑定都必须提供至少一个传输协议,一个消息编码格式和一个相关的消息版本,除此之外还有一些其他的功能,如安全性、双向通信、事务等。如在基于HTTP的绑定中,最基本的是BasicHttpBinding,它用于绑定符合WS—BasicProfile(ws—IBasicProfile1.1)的WCF服务。该绑定使用HTTP作为传送方式,是一个指定用符合基本网络服务规范通讯的绑定,并且使用Text/XML作为默认消息编码:WSHttpBinding是一个安全的通用的绑定,但它不能在双工中使用,如果想要满足双工,则需要使用WSDualHttpBinding等。微软为WCF提供了9种绑定方式供编程人员酌情使用,同时允许自定义绑定,灵活度非常高。契约是用来描述服务具体内容的方式。WCF中定义了四种契约,分别为定义客户端可以使用哪些服务操作的服务契约,定义服务传输的数据类型的数据契约,定义服务引发的错误信息,以及如何将这些异常传递给客户端的错误处理契约,和允许直接操控服务的消息内容和格式的消息契约【4l】。WCF服务并不能独立运行,它必须依托于宿主运行。WCF常用的宿主有4种。第一种是自承载方式,使用控制台应用程序或给予WinForm的应用程序作为宿主。第二种是系统服务方式,将WCF寄宿到windows服务中,优点是可以随着操作系统的启动而启动。第三种是IIs方式,这种方式与网络服务的部署方式类似。基于IIs的ASMX是WCF之前的最广泛适用的用来发布网络服务的技术,WCF继承了这个基础,配置发布方便而且稳定,缺点是只有basicHttpBinding和wsHttpBinding两种绑定可用。最后一种是Windows进程激活服务方式。Windows进程激活服务(Windowsprocessactivationservice,WAS)是Vista和WindowsServer2008自带的寄宿基础。WAS允许你在一个不依赖HTTP协议的鲁棒环境中寄宿服务。 大连理工大学硕士学位论文进程(宿主)应用程序域WOF访问点(EndpointI壑服务类⋯6“”⋯⋯⋯。瞧∥图2.4WCF框架图Fig.2.4ArchitectureofWCF2.3流水线技术流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线模型最早在处理器架构中提出,其将指令的处理过程分解为多个子过程并在不同单元部件中执行【421。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。任务图2.5流水线示意图Fig.2.5Pipeline时间 基于WCF的通信数据ETL服务的设计与实现流水线模型用来描述对于处理固定事务的重复过程,如果处理过程本身是串行的,但是能够分解成相对独立的步骤,这些步骤之间没有交叉,有先后顺序,就可以用增加工人,让不同工人操作不同步骤的方式,将多个事务在多个工人间流水执行,大大提高处理效率。吞吐率和效率是用来描述流水线模型性能的两个重要参数f431。其中吞吐率指流水线单位时间内能处理完成的事务的数量。效率指流水线中的独立步骤实际占用时间占整个运行时间的比例。2.4多线程技术与线程池进程是进程实体的运行过程,是系统分配和调度的一个独立单位。进程包括运行中的程序和程序所使用到的内存等系统资源。一个进程是由多个线程所组成的。线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程技术主要解决处理器单元内多个线程执行的问题,可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力【49】。另一方面,线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;多线程需要协调和管理,所以需要CPU时间跟踪线程;线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;线程太多会导致控制太复杂,最终可能造成很多Bug。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认堆栈大小,以默认的优先级运行,并处于多线程单元中。线程的数目永远不会超过最大值。超过最大值的其他线程可以排队,但它们要等到其他线程完成后才启动。线程池特别适合于执行一些需要多个线程的任务。使用线程池能够优化这些任务的执行过程,从而提高吞吐量,它不仅能够使系统针对此进程优化该执行过程,而且还能够使系统针对计算机上的其他进程优化该执行过程。采用线程池技术可以同时并行处理多个客户端的请求,系统的资源能够得到充分的利用,提高系统性能[501。 大连理工大学硕士学位论文图2.6线程池示意图Fig.2.6Architectureofthreadpool合理利用线程池能够带来3个好处:降低资源消耗、提高响应速度、提高线程的可管理性【s¨。一般来说,线程池都是采用预创建的技术,在应用启动之初便预先创建一定数目的线程。线程池将频繁创建和销毁线程所带来的开销分摊到了每个具体执行的任务上,执行的次数越多,则分摊到每个任务上的开销就越小。2.5c≠f反射与插件化编程反射是.NET中重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。.NET的应用程序结构分为应用程序域、程序集、模块、类型和成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性【52】。插件允许在不修改主体程序的情况下根据一定的模式对软件功能进行扩展。插件开发需要公开接口,主程序通过接口与插件进行通信,主要是通过反射来获取相关的属性和方法,然后再执行指定的操作。任何开发人员都可以使用插件公开的接口根据自己的需要制作插件,嵌入到主程序中来增加新的功能,真正意义上实现“即插即用”软件开发。 基于WCF的通信数据ETL服务的设计与实现实际软件应用中,用户总有新的需求,软件总要更新。但是软件不能因为用户每次提出需求而重新设计开发。而且即便当时满足了用户的需求,也不能保证满足用户未来的需求。插件的优越性在于可以在不修改主程序的情况下经过快速的开发满足大多数用户的新需求,使软件的灵活性、可扩充性大大增强。需要插件时,拿来就能用,插件更新时,也只需更新单个插件。同时,用户可以有选择的使用插件,减少软件对系统资源的消耗。 大连理工大学硕士学位论文3系统需求分析3.1移动网络通信数据特点(1)格式多样中国的移动网络经过几十年的发展,通信技术规格几经变革。目前的网络环境中,中国的移动网络设备还未完全完成从2G到3G的完整过度,4G牌照已经发放,不少用户已经开始正常使用快速的4G网络。普通用户的用户体验在逐步提升的同时,移动网络服务商的设备结构变得更加复杂,所产生的日志文件的格式种类不断增加,仅常见的3G设备日志文件格式已经有十几种,为设备的维护和网络优化人员的工作带来不小的麻烦。(2)单一格式相对固定为了保证手机用户的用户体验,网络设备的各项参数虽然会几经优化,但是只要不进行网络设备更换或者软件升级,使用中的设备所产生的日志数据的格式就不会改变。相同型号的设备产生的日志格式都是相同的,而不同型号的设备所产生的数据,由于生产厂家有维护方面的考虑,也可能采用互相兼容的数据格式,这些对数据的处理都是非常有益的。(3)数据量大中国手机用户量巨大,每时每刻都有非常多的人在使用手机。人们使用手机进行通话,与亲人交流,诉说思念,与合作伙伴交流洽谈业务;使用手机上网浏览新闻,收发邮件。在人们使用手机进行通信的过程中,手机与基站之间有大量的数据交互,其中与手机和基站之间信号的质量,电平值,信号在邻区间的切换以及基站话务量等的通信连接数据会被相关的系统记录成日志文件。这些数据每时每刻都在产生,而且数量巨大,有的数据格式仅数十个基站每个小时有百万甚至千万之多,大量的数据为网络优化工作带来了巨大的压力。(4)时问性强移动网络通信数据中都包含有时间戳。数据的时间戳代表了数据产生的时间,表明当前数据记录了对应时间网络环境的各项状况。手机网络中,不同时间用户的活动有很大的差别,白天和黑夜,忙时和闲时,用户对于移动网络的使用习惯决定了基站等设备需要对应做出调整优化。(5)与地理信息相关 基于WCF的通信数据ETL服务的设计与实现在移动网络通信数据中,除了时间之外,地理信息也占有非常重要的位置。基站所处的位置,天线的方向,倾斜角等参数会对基站的性能有很大的影响,而这些影响都会在数据中表示出来,记录在设备的日志中。如果对通信数据进行分析,就能分析基站参数是否恰当,是否需要适当的优化,从而使网络达到最佳运行状态,使现有网络资源获得最佳效益,同时也对网络今后的维护及规划建议提出合理建议。3.2系统设计原则(1)可扩展性作为数据处理系统,主要在于对数据的处理方式。数据的处理方式不可能在系统设计实现阶段全部考虑到并且得到实施,在系统的实际应用中,可能会继续添加对于特定格式数据的处理方式,所以应该为后续扩展数据处理方式留出接口,方便对于新的不同格式数据的处理进行兼容。(2)高适用性系统在保证功能完整的情况下,要尽可能的留出可配置的参数,通过参数的配置,能够使系统更加适应不同的机器和网络环境,提高系统的适用性。(3)可靠性对于来自外部的请求,系统可以利用网络系统、数据库系统和应用系统的安全机制设置,对用户的操作进行合理限制,拒绝非法操作与越权操作,避免系统遭到破坏。对于格式合理,权限正确的请求,同样需要在处理的过程中对于异常和错误进行监控并正确处理,不应该由于数据错误导致系统崩溃。同时,作为数据服务,要能够保证7乘24小时连续工作,在网络和服务器正常的情况下,不能出现运行一段时间后系统崩溃或者速度严重下降等影响服务质量的问题。(4)可用性软件系统不是仅仅在测试环境下可用,需要在真实工程环境中满足各种情况。无论系统后台是否运行大量计算或者数据库操作,不能影响用户的正常操作。除此之外,对于客户端的请求,如数据导入,数据计算操作,系统不能预估处理时间,不应无限期的等待操作结束。服务对外避免使用同步方式进行交互,防止Fh于处理请求占用过长时间导致客户端访问超时。(5)负载均衡服务需要对客户端的请求做出响应。在不同的时间,客户端请求的数量是不同的,有时很多,有时几乎没有。作为服务,对于客户端的请求,不应由于短时间请求过多而出现系统无响应假死的现象。在系统繁忙时,可以使用等待队列的方式缓解压力。而在 大连理工大学硕士学位论文请求数量不多,并且服务器性能允许的条件下,有选择的使用多线程技术提高数据传输和计算的效率。3.3具体需求分类通信数据ETL服务的业务目标概括起来要求能够满足大量可定制的预定义格式数据的快速导入,保证数据的读取效率,为网络优化提供数据统计分析支持,提高网络优化工程师工作效率。具体如下:(1)多格式数据支持作为面向通信数据的ETL服务,要求能够支持通信领域的大量不同数据格式。通信领域中同一型号的设备产生的日志格式相同,对于这些日志格式,可以允许系统管理人员以一定的方式将已知的格式录入,便于系统对于已知格式应用已有的特定的数据解析转换处理工具。(2)大容量数据支持通信基站所产生的数据是大量的,在处理分析的过程中,对数据库造成的压力也是巨大的。系统需要特定格式的数据存储方式对大量的数据进行安排存放,优化存储和读取的时间,才能保证处理分析的效率。(3)多种数据源支持除了支持多种格式和大量数据之外,应该能够从不同类型的数据源获得数据。不同数据源意味着不仅对数据源的系统(windows,linux)可能使用不同的方式进行连接,而且可能使用FTP,HTTP,SMB等不同协议获得数据。(4)数据自动入库对于通信行业的日志数据进行分析,时间效率非常重要。随着日志数据的产生,系统要能够及时的将新产生的数据拉取到系统中来。所以系统需要提供数据源编辑功能,允许系统管理人员定义自动导入数据源,系统提供对于数据源中特定位置或特定文件名格式的数据自动处理导入数据库的功能,方便及时使用数据进行分析处理,及早发现网络中存在的问题。在自动入库功能中,需要包含数据文件的重复判定,避免由重复数据造成的数据库数据错误和混乱。(5)数据转换和数据清洗数据转换和数据清洗是保证数据格式和含义正确的重要步骤。为了保证系统的扩展性,在系统初期提供基本的数据转换和清洗功能,并提供扩展接口,允许外部处理程序嵌入本系统中进行数据处理。(6)数据读取接口 基于WCF的通信数据ETL服务的设计与实现对于数据的真正表结构等物理结构不应该直接对外暴露,同时为了实现(1)和(2)的功能,数据真正的物理结构也会相对复杂,所以对于外部程序需要对数据进行读取时,需要提供相应的接口,在尽量开放查询条件的情况下允许外部程序以特定的格式查询数据。(7)数据计算结构在数据读取接口的基础上,实现一定的计算功能,对于实际应用场景中经常用到的简单计算给予支持,并且允许后续开发人员在满足系统结构的条件下添加新的计算功能。(8)数据查询效率优化数据进入数据库后,为了满足用户的特定需要,需要对某些常用的查询请求,特别是系统支持的计算功能进行优化。对于常用的聚集型查询建立索引表或预处理表,减少实际查询时对服务器的计算压力,降低计算结果所需要的时间,提高查询效率。3.4系统环境分析基于WCF的通信数据ETL服务使用WCF对外进行数据交互,使用C拌作为开发语言,开发工具主要为MicrosoftVisualStudio2010(VS2010)。代码托管服务器安装TeamFoundationServer,为项目成员提供代码管理服务。同时在代码托管服务器配置了Build服务,通过VS2010即可自动完成源代码管理、编译、生成和部署工作。提高了开发效率。系统开发机使用Windows764位系统。代码托管服务器为虚拟服务器,使用的系统是WindowsServer2008R264位系统。系统开发时使用SQLServer2008R2,发布时通过SQL导出功能向下兼容SQLServer2008。系统部署时要求WindowsServer2003以上的版本,数据库要求SQLServer2008以上版本即可。系统附带的编辑界面需要IIS和MVC3.0支持。 大连理工大学硕士学位论文4系统设计4.1系统整体架构基于WCF的通信数据ETL服务整体分为三个部分,分别为数据导入模块、数据读取模块和数据计算模块。系统使用Windows服务作为WCF服务的宿主,随操作系统启动而启动。WCF服务寄宿在Windows服务中,通过访问点(Endpoint)将客户端的请求转发给数据导入模块和数据计算模块。数据导入模块负责处理有关通信数据导入到数据库的请求,包括导入过程的管理和错误监控。数据读取模块封装了数据读取逻辑,可以根据一定的配置,读取数据库中对应部分的数据。数据计算模块封装了常用的一些数据计算功能,由于数据读取模块封装的读取逻辑是数据无关的,所以即使读取原始数据也需要经过数据计算模块。辫in唾嘲浮.!岛.(wcJ:服务-i数据源1i¨jWCF,鼹务i∥数据导入模块t》——∥SQLServer散y访问点客户端力(Endpoint)。刮⋯⋯~.。l力j⋯~⋯l。》Ⅵ掣⋯⋯⋯rI~一⋯一114.2数据库总体设计图4.1系统整体架构图Fig.4.1Overallframeworkofsystem数据库使用SQLServer2008R2,通过导出SQL脚本的方式向下兼用SQLServer2008。在使用SQLServer的过程中,对数据库的默认文件结构上做了改变,在原有的两个数据库数据文件mdf和日志文件ldf的基础上,增加了两个ndf文件用来存储索引,其中一个文件专门用来存储导入的数据的索引,另一个用来存储其他表的索引。这样的好处在于能够提高插入和查询的速度,特别是在将不同文件放到不同硬盘上的时候。 基于WCF的通信数据ETL服务的设计与实现根据数据表之间的功能和联系,可以将整个数据库分为六部分:表结构定义部分,数据存储部分,任务监控部分,读取模板部分,统计表与索引表部分,字典部分和用户与权限部分。4.2.1数据表命名规则数据库中,以不同的前缀来区分不同表的作用:以Config为前缀的表作为系统功能配置的一部分,包括数据导入和读取过程中需要的各种参数,数据格式描述,过程监控的记录等。以Enum为结尾的表存储的是有意义的枚举量,一般不会更改,主键为int。这部分表存储的枚举量均用来描述不同的系统配置。以Diet为前缀的表称之为字典表,主要存储固定的通信领域信息,一般不会更改,主键为int。虽然与以Enum为结尾的表一样都是存储固定不变的数据,但是这部分数据是通信相关的专业数据,所以与系统配置的枚举量区分开。以Data为前缀的表是数据表,是真正存储数据的表。数据表的名称分为三部分,第一部分为数据表表示,一定是Data。第二部分是数据格式表示,表示数据的格式,一般用功能名称代表。第三部分是数据的开始时间。以System为前缀的表是有关登录和权限的表。4.2.2基于表结构描述的数据存储方式基于WCF的通信数据ETL服务所处理的数据多种多样,项目初期爱立信提供了RPMO,FAS,MRR三种数据的文件格式,每种数据会经过不同方式的数据清洗得到最终入库的数据。一份RPMO数据经过清洗会同时得到通话记录,事件记录和测量报告三种数据,三种数据互相关联;一份FAS数据经过清洗会同时得到管理数据和详细记录两种数据;一份MRR数据经过清洗只会得到一种数据。经过清洗的同类数据将拥有较为规整的格式,但不同数据的格式会有很大差异。同时由于数据都来源于实际运行的设备,每种数据的数据格式非常稳定,不会轻易改变。为了保证系统的可扩展性,除了能够支持当前存在的数据格式之外,还要能够尽量兼容未来可能出现的格式。通信领域的新的格式的数据一般由原设备升级改造或直接更新设备产生。而在升级改造的过程中,一定经过非常严格的调试工作,即在新的格式正式使用时,能够获得足够的关于新数据的格式和意义的完整说明。对于非格式化的数据【53],目前有许多系统使用类似于property.value形式进行存储的方式。property.value形式在存储时通过(objectid,propertyname,propertyvalue)_三元组来表示一个实体的一个属性值,如果一个实体包含多个属性,将使用多个三元组来描述 大连理工大学硕士学位论文这一实体。这种形式在存储时将每个三元组作为一行数据保存到数据库中。这种方式存储的通用性非常好,几乎能够表示任意格式的数据,并且不同数据之间的属性名称或者类型可以差别很大。但是缺点也同样明显,除了对每个属性值都需要额外空间存储属性的信息(或者属性名,或者属性名的ID),而且一个实体所包含的全部属性数据需要由数据库中的多条数据组合而成,对数据的分析和计算造成了一定的不便,同时在读取数据单个属性时效率没有普通表结构的投影效率高。对于property.value的表示方式进行存储的数据,其最大的应用情景是任意两条数据都可能属性不同。但是分析爱立信所提供的数据,虽然需要支持多种格式,但是每种格式的属性是固定的,即每种格式都有整齐的属性格式,每个实体包含相同的属性。其数据的扩展性体现在格式增加上,property.value存储方式的灵活性在这里的契合性不高。同时由于爱立信的分析操作中,要求有关联运算,property.value存储方式需要通过转化之后变为普通意义上的数据表再进行关联,增加了非常多的操作,效率不高,在这里就不再适合了。由于移动网络通信数据具有格式多样但单一格式相对固定的特点,本文提出了一种描述结构的方式来存储数据。具体来说就是在数据导入之前对数据格式进行描述,导入数据时根据数据类型和数据格式创建真正的数据表存储数据的方式。在数据库中存储数据表的格式,就是要存储数据库中对应存储数据的表的结构。在每种新类型的数据导入到数据库之前,要求系统管理员先将数据的格式录入到数据库中,录入的内容包括新数据格式对应的每张数据表的名称,数据表中每个字段的名称,顺序,类型和长度,是否建立索引,是否唯一等基本信息。这些信息会以表数据的形式保存在数据库中。在实际数据导入时,通过调用存储过程读取表格式,并根据表格式在数据库中新建与导入格式相符的数据表后,将数据导入数据表中。最终设计的表结构如图4.2所示。在描述数据格式这一部分中,一共使用了6张表。ConfigFunctionEnum表记录的是不同的数据格式,每种格式可能对应一张或多张数据表,相关的信息保存在Config中。每张表包含多个列,列的各项信息保存在表.TableInfoConfig_ColumnInfo中,包含列的名称、数据类型、索引、序号唯一性等属性。在SQLServer中有些数据类型的长度是固定的,如数值型或时间类型等,但是字符串类型是可变长度的,这时需要记录对应的最大长度。在使用过程中,不同的列还有不同的用途,比如是代表ID的列,或者是代表时间的列,这些特殊的用途通过与ConfigColumnUsageEnum的关系进行标定。 基于WCF的通信数据ETL服务的设计与实现在实际实现的过程中,为了适应数据读取模块中基于模板和简单参数配置的数据读取方式,处理保存实际数据的格式之外,还存储了包括统计表,索引表和字典表在内的可能与数据表相关联的其他表的表结构。这种方式存储的表将通过TableType来对表的类别进行区分:DynamicTable表示数据表,StaticTable表示字典表,StatisticsTable则用来表示统计表或索引表。图4.2数据库关系图一表结构定义部分Fig.4.2Databasediagram--tableschema4.23基于横向切表的大数据存储方式系统面临不同类型的数据,这些数据除了格式不同,产生的数据量也不同。有的类型的数据产生非常频繁,仅数十个基站每个小时有百万甚至千万之多,如RPMO数据, 大连理工大学硕士学位论文每小时产生200M左右的二进制文件,这些文件经过清洗,将得到lG以上的文本文件,共计百万以上的数据。而另外一些数据量则会小很多,如FAS关联信令数据,一天的数据也只有不到10000条。系统要求能够对大数据量的数据进行处理,同时不能因为其他小数据量的数据使得数据库过于臃肿。移动网络中有些数据非常庞大,产生速度也非常迅速。对于SQLSERVER数据库系统来说,单张表的数据量在达到109以上时,会使得读取的效率严重下降{钳1。对于单张表的数据量应控制在千万级别左右,所以对于网络数据这样的大数据来说,即使是统一格式的数据,也不能都放到一张表里,需要根据一定的规则分配存储到不同的表中1451。对于网络来说,最重要的一个属性就是时间。数据的时间戳代表了数据产生的时间,白天和夜晚,忙时和闲时的数据量都有一定的区别。但是即使是白天的繁忙时段,受限于人口稠密程度和基本硬件设施的完善程度,网络日志可以有一个估算的数据量,所以数据的时间就可以作为数据切割分配的依据。在4.2.2中提出了一种对于数据表结构的描述方法,可以根据这些结构数据新建数据表。在这种情况下,我们可以通过在实际表名称中加入时间戳的方式来区别存放不同时间同一格式数据的表。同时,这样的方式也能够方便管理系统中实际包含数据的时间跨度。在根据时间戳来进行横向切分进行存储时,以多大的时间间隔来进行切割是另一个值得关注的问题。时闯间隔其实可以有很多选择,可以一个小时,一天,甚至一周,一个月,分割的主要目的在于防止SQLSERVER对数据读取操作效率的下降。由于系统无法预知数据的量,所以不能做到自动对数据进行分割。但是在进入数据库之前,数据是需要经过清洗的。清洗数据本身也是系统的一部分,并且进行清洗的程序一定了解数据的格式等详细内容,所以对于数据的切割本身是在清洗时完成的。清洗后生成格式正确的文件,这些文件中不但包含清洗过后的数据,还包含这些数据所属于的时间范围,也就对应了数据库中的数据表。其表结构如图4.3所示。为了管理己导入的数据,添加了一张ConfigRealTableInfo的表来记录每张表中数据的起止时间。Config表的数据除了用来管理数据库中实际存储的数据.RealTableInfo的时间区间之外,在进行数据查询时,查询参数中通常会附带时间区间,就可以通过ConfigRealTableInfo中的数据排除许多时问不在查询范围的表,这也就相当于减小了查询的数据量,提高了查询的效率。图4.4展示了一部分实际运行时数据库内的数据表。 基于WCF的通信数据ETL服务的设计与实现CD曲g—ReaITable__Info。。I。。。吲_Table_O潲g_Table_Info列名数据类型允许№幽值曰ReatTabIe.IDurlquek酬fier图TaL_eIDI『岬IeId朗自6日日DaYStartTrnedare,me囝DatatndTeredateUme口E击恤gcMtnt囝刊腑nvard'm∞0)囝I正_xmtb{t曰目图4.3数据库关系图一数据存储部分Fig.4.3Databasediagram--、<、=、>=等)、判定(IS、ISNOT)或者匹配(LIKE,IN)运算符和参数,同时使用括号指定运算的优先级。在同时考虑实际应用场景的需要和客户端对于实现的适应程度,在这里仅实现形如(C1ORc2)AND(c3ORC4)的判定,这种判定能够支持对于多个属性的逐个判定,在一定的条件下支持双属性关联判定。客户端在调用基于模板和简单参数配置的数据读取方式时,模板中指定读取涉及的数据,条件选择将这些数据进行过滤,二者在一起限定了最终得到的数据。(2)基于CTE实现的灵活的数据计算读取方式前面介绍的是客户端在读取数据时的方式,这种方式对于读取有一定的限制,不利于数据分析的实现。为了提高对于数据访问的灵活性,需要对数据读取请求进行新的表示,同时为了提高系统的紧密性,防止出现两套读取接口,基于模板和简单参数配置的数据读取方式应该作为本方式的一个子集。在这一部分的设计中,使用了从SQLServer2005开始引入的新功能:公用表表达式(CommonTableExpression,CTE)。CTE的作用是指定临时命名的结果集。CTE通过WITHAS短语来实现。WITHAS短语,也叫做子查询部分(SubqueryFactoring),可以将一部分语句的结果集作为一个命名整体参与后面的运算。这种写法的好处有很多,最明显最直接的一个就是提高整体代码的可读性,同时减轻对于大段嵌套SQL代码编码时存在的混乱。同时,由于CTE支持在定义的时候可以包含被定义的内容本身,所以CTE可以实现递归,使用这种实现的表达式又称为递归共用表达式。WITHAS短语支持定义多个CTE,中间用逗号隔开,并且只能写一个WITH,但是每个CTE表达式必须包含AS。在使用CTE时,最大的限制在于CTE之后必须跟随引用部分或全部CTE列的单条SELECT、INSERT、UPDATE或DELETE语句,这将反映在一次数据读取只产生一个结果集,也正是设计时所需要的。CTE的一般形式为:[WITH[,11】】::= 基于WCF的通信数据ETL服务的设计与实现expression_name【(column—name【,n])]AS(CTE_query_definition)CTE是一部分语句的结果,也就可能看成是一个表,所以,通过使用CTE,可以允许数据计算模块在一定的继承条件下定义部分SQL语句,经过与数据库中实际数据表的对应,组织成包含CTE的SQL语句。这一部分由于对外开放的权限较大,将不会提供WCF服务接口进行调用,只提供可供继承的基类。在实现中为了方便实现复杂计算的开发人员,提供了许多处理类来辅助其进行实现,但仍需要注意其实现方式。基于模板和简单参数配置的数据读取的读取方式可以通过简单转化转为基于CTE的数据读取方式,从而实现了两种读取方式的共存。比较两种数据读取方式,基于模板和简单参数配置的数据读取的读取方式依托于基于CTE的数据读取方式,是对后者中一部分条件的限定,使得配置和使用更加简单方便,能够实现的功能更狭窄。后者提供了复杂的定义,并需要对系统更深入的了解,但是能够实现更多的功能,同时由于危险性也更高,则不提供客户端的直接调用。4.3.3数据计算模块数据计算模块处理常用的一些计算任务,比如功控优化,CDD参数核查等。计算模块直接依赖于数据读取模块。属于数据读取模块基于模板和简单参数配置的数据读取方式和基于CTE实现的灵活的数据计算读取方式的应用。由于数据计算可能会需要比较长的时间,数据计算的结果是异步返回的。即客户端提交数据计算后,服务会对计算进行确认。客户端随后可以通过查询借El查询计算当前的状态,即是否计算完成。如果计算完成,客户端通过获取计算结果的接IZl获得计算结果,整个过程如图4.8所示。除了结果异步返回之外,结果本身的返回方式也同样值得注意。作为数据服务,提供了大量数据的导入功能,同样会遇到读取大量数据的情况,对于计算的结果,允许直接返回和文件返回两种方式。直接返回时允许客户端在提交的计算结束后,将结果直接取回。由于需要对取回结果的请求进行响应,这种方式返回的数据量不可以很大,否则无论对于客户端,服务端还是网络环境的压力都太大。当结果集过大时,这种方式将只返回受限制大小的数据。 大连理工大学硕士学位论文数据计算异步计算过程客户端服务端j,7、(开始)\\/+接收计算请求,放准备计算参数入计算任务队列得到服务器端的计球算任务序号出钗璀◆通过任务序号查询任务是否完成返回任务当前状态抬◇·葵搬出:!暮蜘上”3通过任务序号返回结果请求结果噗/’、姆f结束k酶出\/瞳撩图4.8异步结果返回流程图Fig.4.8Flowchartofasynchronousresultretum文件返回是对于请求数据量较大时比较理想的数据返回方式。此时需要客户端提供一个对于服务端来说拥有可写权限的共享位置进行结果的存放。在使用文件作为计算结果的方式中,并不是将文件保留在服务端等待客户端请求取走,这样做法的好处第一是节省服务端的空间,而且服务端不用关心客户端是否已经将结果取回,从而将计算结果删除。 基于WCF的通信数据ETL服务的设计与实现5系统功能实现5.1WCF技术在项目中的使用通信数据ETL服务基于WCF实现,WCF在对外发布时需要宿主,本系统使用Windows服务作为WCF服务的宿主。依托于Windows服务,通信数据ETL服务实现了服务的启动和关闭功能。(1)地址(Address)服务端的地址将在配置文件中设定,写在appSettings节点下。(2)绑定(Binding)绑定使用WSHttpBinding,此绑定实现WS—Security协议,提供跟实现WS.乖协议的服务交换的能力。文本编码采用UTF8格式,服务端本地不使用代理,连接的超时实现为1分钟,接收与发送消息的缓冲区长度设为最大长度。安全方面,由于使用微软.NET平台,所以使用Windows集成认证的方式对客户端进行认证。如果能够使用Kerbems,则直接采用Kerberos进行认证,否则才使用NTLM。(3)契约(Contract)服务整体对外公开一个服务契约,即IFetchServerService,其中包含服务控制,数据管理,计算访问三部分内容。IFetchServerService类的定义如图5.1所示。图5.1服务契约IFetchServerService的定义Fig.5.1DefinationofservicecontractIFetchServerService 大连理工大学硕士学位论文首先是四个接口用来控制和监控服务状态:①启动服务(Start)服务启动时,将对服务内部状态进行重置,校对服务内部时钟,保证周期任务的运行。同时通过数据库中对任务各项状态的记录,判断在上次关闭是否是非法关闭,是否有进行一半的任务需要处理。②停止服务(Stop)当关闭服务时,将等待所有正在进行的线程处理完当前步骤,无论是否有下一步骤都不再继续。当全部线程池空载时,关闭服务。③测试连接(TestConn)测试连接要求客户端传入一个字符串,服务器会将得到的字符串返回,该方法用于测试子服务端的连接是否可用。④服务器状态(GetServerState)返回当前服务器中正在运行的导入任务数量,和处在导入的各个阶段的任务数量,以及计算任务的数量。为了满足数据管理的功能,服务契约IFetchServerService对外开放了3个功能接口:①单次导入(DoOneTimeTask)用于客户端提交单次导入的任务。单次导入任务作为服务导入功能的重要一步,会将客户端指定的任务信息添加到队列中,等待导入。导入的状态可以在配套网站的任务管理页面进行查看。②刷新周期任务(RefreshPeriodTask)该接口用于强制刷新周期性的任务,服务会遍历数据库中所有的周期性任务,查找并执行需要执行的周期任务。该接口本身被服务自身每隔一分钟调用,同时也对外暴露,允许客户端调用。③删除数据(DeleteData)过于陈旧的数据或其他需要删掉的数据可以从系统中删掉以节省系统空间。为了满足客户端对网络优化相关计算的需求,服务实现了常用的网络优化计算内容,同时对外暴露3个接口:①添加计算(Query) 基于WCF的通信数据ETL服务的设计与实现该接口允许客户端提交计算。客户端提交需要计算的功能名称,计算参数等内容。为了保证系统的扩展性,同时固定服务的对外接口,这里不能将每个计算对外暴露一个调用接口,服务会根据客户端提供的计算功能名称自动调用对应的计算程序。②获取计算状态(GetStatus)该接口向客户端提供计算任务状态的查询功能。③获取计算结果(GetResult)获取计算结果接口向客户端提供请求计算结果的功能。客户端需要提供在提交计算时提供的计算任务序号。5.2基于泛型编程实现的线程池通信数据ETL服务中多处使用了多线程技术,在C拌语言中,System.Threading命名空间下有微软实现的线程池ThreadPool。但是微软实现的ThreadPool是静态类,在整个服务程序中只允许有一个线程池,这与4.3.1中对于数据导入功能中对于流水线的每一步都需要一个线程池的设计是不符的,不能完成本系统的实现,所以在此实现了一个基于泛型的线程池类ThreadPools,该类的每一个实例将发挥一个线程池的作用,支持不同的线程池内的线程可以完成不同的工作,同时添加更多的方法和监控信息。(1)线程池任务调度原则线程池的主要功能在于管理添加入线程池之中的任务和线程池中线程的分配关系。任务被添加到线程池中时,可能遇到线程池完全空闲(全部线程空闲),部分空闲(部分线程在工作,部分线程空闲)或者忙碌(全部线程在工作)三种状态。对于线程池中的线程来说,程序需要关注的只有空闲和工作两个状态。状态的转换如图5.2所示。任务等待队列非空,提取下一个任务,继续工作转为空闲图5.2线程状态转换示意图Fig.5.2Thestateofthread 大连理工大学硕士学位论文根据上面的分析,对于线程池的任务调度来说,只有两个时间节点需要注意。第一个是当新任务添加到线程池时,如果有空闲线程,则直接启用一个空闲线程处理当前任务。第二个是当一个线程刚刚完成自己的任务时,如果有未处理的任务,那么该线程接管一个未处理的任务,进行处理,否则转为空闲状态。(2)线程池中的泛型编程在线程池的实现过程中,对线程池的处理过程和调用参数使用了泛型编程(GenericProgramming)。泛型编程的初衷在于能够帮助实现一个通用的标准容器库。所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型【471。泛型编程有很多应用,最常见的,C++中的STL就是用了泛型编程的思想。在本项目中,ThreadPools类型中使用了两个泛型类型,其中的TWorker还要求实现泛型接口IThreadWorker。TWorker的作用是实现线程池中线程实际工作的内容,即一个参数为TParam的work函数,也就是IThreadWorker接口。在这里使用泛型的好处在于既能够保证线程池结构算法和数据类型之间的独立,又能够提供对使用类型的限制,提高其可靠性。线程池的类图如图5.3所示。图5.3线程池类图Fig.5.3Classdiagramofthreadpool 基于WCF的通信数据ETL服务的设计与实现5.3数据管理模块的实现5.3.1数据导入流水线与任务监控通过4.3.1的设计,在数据导入模块明确了使用流水线和线程池技术来实现主体功能。在具体实现的过程中,为了条理清晰也便于代码维护,将流水线的实现和任务控制逻辑分开实现,通过函数调用和事件触发完成信息交互。FetchTaskMaster类用来进行任务的阶段控制,其类图如图5.4所示。在FetchTaskMaster中,与定义了关于任务各个步骤之间切换的逻辑,包括新建一个任务,内部时钟的维护,周期任务的刷新,单次任务的添加,对处于将要进入某个步骤之前的任务中各项属性的验证,对于任务下一步运行的控制,如何结束一个任务,统计任务中的错误,清理任务所涉及到的临时文件,以及在必要时回滚任务等功能。图5.4FetchTaskMaster类图Fig.5.4ClassdiagramofFetchTaskMaster 大连理工大学硕士学位论文由于FetchTaskMaster类用于任务状态等的逻辑判断,所以在整个数据服务生存周期中只应该含有一个实例,所以在这里使用设计模式中的单例模式来保证其实例的唯一性,同时配合二次判定的方式保证了实现效率。FetchTaskFactory类用来实现流水线的相关功能,其类图如图5.5所示,其中包含4个线程池,分别对应文件列取、文件下载、文件解析和文件保存四个步骤。对应于这四个步骤,提供四个方法来向四个线程池中添加任务,同时提供四个事件用于外界提供每个步骤结束时的回调函数,这四个事件内部实现通过C拌的add和remove语法将外界提供的回调函数绑定到线程池的线程结束回调事件。!htm^F■cbrv“Cb5j叠墨■————■■——●■——■————●●■■—l{:一屈性,DeleteOataCount:int珂FetchFileWorkCount:int■ListFiIeWorkCPunt:int,ParseWorkCountIntJRo}IBackCPuntint,SaveWorkCount:int。方往vAddDeleteDataWork0vo臼●AddFetchFileWork0:voidvAddListFileWorkOvoidvAddParseWork0:voldVAddRollBackWork0:void■AddSaveWork0’voidVFetchTasl(FactoryO,SaveThreadPoolWorkFinished0:void=事件』FetchFileRetum:EventHandlercThreadWorkerExecuteResultEventArgs图5.5FetchTaskFactory类图Fig.5.5ClassdiagramofFetchTaskFactoryFetchTaskMaster通过将对于任务的步骤处理函数绑定到FetchTaskFactory的步骤结束回调事件来完成接收任务步骤结束的信号。图5.6所示是以文件列取为例说明FetchTaskMaster与FetchTaskFactory之间的交互关系。FetchTaskMaster中的AddTask函数完成添加任务的作用,在客户端提交添加任务请求时,WCF会使用单独一个线程将请求转发到AddTask函数,在AddTask函数的处理过程中,将任务添DN至tl文件列取的线程池后就可以由线程池中的线程完成文件列取的步骤,此时处理用户请求的线程可以返回。由此发现在这种设计方式下,用户添加任务的请求在服务器端只需要完成任务 基于WCF的通信数据ETL服务的设计与实现对象的建立以及任务基本属性的记录就可以返回,响应时间非常短。客户端可以使用任务状态查询接口查询任务的状态。确_ii|c鞫憾鞭M*自甘&蝌霜瞄捧和b叶IIs订1lreadPool任务信息氛』6dmmⅫ。w.,k}竺塞!黧j..熟j加^辟盔卧劢IAddTaskr1一“””””“r—一■剀4u“。口月n,u触发事件⋯』mtt州悯矾m隐ListFir’etur仟辑靖盔r,触发事件}任备结柬⋯⋯一⋯”’}、~图5.6FetchTaskMaster与FetchTaskFactory之间的交互关系(文件列取)Fig.5.6InteractionbetweenFetchTaskMasterandFetchTaskFactory(1istingfiles)5.3.2周期任务计时策略周期任务是按照一定的时间周期执行的任务。周期任务在配置时除了指定数据源和处理插件之外,还会指定任务的起始时间,结束时间和每天的执行时间。执行时间通过选择整点和偏移时间来指定。周期任务将在所选整点后指定分钟执行。周期任务的文件路径中一般会包含时间占位符,这些占位符会根据任务执行时的时间进行替换,由此来保证每次任务执行时处理的文件是不同的。服务系统使用的时钟是服务器的时钟。当服务器时间与周期任务需要执行的时间一致时,需要根据周期任务的配置,启动周期任务。但是由于服务器和软件等因素,判定时间的相等并不是一件容易的事。服务器在处理数据的过程中,可能由于临时线程调度等原因,在调度计时线程时非常可能出现几十至上百毫秒的误差。在一般的设定中,周期任务的启动时间一般都是整小时或整分钟。在这种情况下,如果每分钟判定一次当前时间是否有周期任务需要执行,即使忽略毫秒,只比较时分秒,实际判定的时间也可能并不是恰好的时间,会出现少量的时间差异,从而导致周期任务不能正确的在设定的时间被自动提交。对于周期任务的即时策略,在判定规则上做了一定的转换。FetchTaskMaster内部记录上次刷新的时间。如果当前时间大于下次应该刷新的时间,就判定所有的周期任务,查看是否有从上次刷新到下次应该刷新的时间这段时间内,应该执行但是还未执行的周期任务,这可以通过周期任务的最后一次执行时间同周期任务的属性进行比较得到。查 大连理工大学硕士学位论文询后将选择出来的周期任务添加到任务队列等待执行。在这种情况下,周期任务的启动时间最大的偏差可能为一个刷新周期,但是不会出现由于判定时间相同而带来的遗漏任务运行的错误。5.3.3基于插件的功能扩充接口对于任务下载的四个过程,虽然实现的功能并不一样,但是在程序设计中根据抽象的设计原则,可以实现统一设计。文件列取,文件下载,文件解析和文件保存分别作为流水线中的一个步骤,都有自己各自的逻辑,看似毫不相关。但是为了系统扩展性的要求,这四步中的每一步都要求是可以进行扩展的,即需要将抽象部分与实现部分分离,使它们都可以独立的变化。也就是说在系统内部,每个步骤的实现过程中都不能涉及其具体的处理过程。整体类图如图5.7所示。图5.7处理过程类图Fig.5.7ClassdiagramofProcedure 基于WCF的通信数据ETL服务的设计与实现在线程池ThreadPoois中,TWorker类将完成线程工作的具体内容。由于线程池中每个线程之间是等价的关系,所以每个线程的处理逻辑必须相同。为了保证系统本身的扩展性,必须将处理过程和处理逻辑分开。处理过程作为TWorker成为线程池中固定的逻辑。在这种情况下,流水线中的每一个步骤将作为线程池中的线程处理过程,流水线的每一个步骤所关心的问题也不再是当前步骤是如何工作的,而应该是保证当前步骤正常工作。步骤的处理逻辑通过插件的方式来实现,以此来应对千变万化的功能。在这种思想下,将处理过程抽象成ProcedureBase,文件列取,文件下载,文件解析和文件保存四个步骤将抽象成ListProcedure,FetchProcedure,ParseProcedure,SaveProcedure,作为TWorker放入线程池。实际应用中每个过程中专注于对于处理逻辑的监控,完成验证调用参数,调用处理逻辑,捕捉处理异常并记录。在整个过程中,始终以运行安全作为主要任务。各个Procedure的实际过程因为各自逻辑会稍有出入,但总体过程相似,其伪代码如下:publicoverrideobjectWork(Guidparam){ROSEServiceservice=newROSEService0;//新建服务对象,用于访问数据库Config_FetchTask_TaskLogtaskLog:Ge儿090;//获得数据库对于任务的记录//异常记录if(taskLog==null){thrownewUserException0;)IPluglnToolplugin2null;//得到插件try{filelister=ToolBox.GetTool(pluglnFullName);)//异常记录catch(Exceptione){40一 大连理工大学硕士学位论文taskLog.Exception=e:returnnull;)//运行插件try{filelister.work(param);)//异常记录catch(Exceptione){taskLog.Exception=e;returnnull;)finally{//保存状态service.Save0;)retumnull;对于处理过程中数据的处理逻辑,采用C撑的反射机制与插件化编程的思想,通过处理逻辑名称反射得到处理逻辑的实例。反射的优点在于建立对象比较灵活,可以通过对外发布接口或虚基类的方式,方便二次开发。同时能够做到无需改变主体代码即可应用。但是反射的缺点在于对象的实例化的效率要比直接使用new运算符要慢。为了平衡在使用反射功能时带来的性能损失,在每个过程中包含了一个ToolBox,用来缓存最近使用的5种插件。如果当前过程需要使用的插件不在ToolBox中,则进行反射获得实例,并替换ToolBox中使用频率最低的一个。整个过程如图5.8所示。这种的设计的优点在于将每个步骤的逻辑实现对外开放,本身只提供调用关系和异常捕捉,尽最大的可能提高可扩展性,同时又能够保证系统的安全性。 基于WCF的通信数据ETL服务的设计与实现数据导入各部分交且不意图(文件列取部分)masterFactoryProcedurePluginAddoneTimeTask山AddTaskAddListFileWorkListFileProcedure<令>l异常处理,保存至taskLogY1Ces上ListFileListFIIe0异常处理t保存至一.一N。/7八\taskLog。<◇>上/^‘、、//ListFIle\\。ListFile-.\succe女?//、完成\v/No工,,入*—◇-Yes'{Rollback<是否出错j、-\\//No上任务成功艇矗图5.8数据导入各部分交互示意图(文件列取部分)Fig.5.8Interactionofdifferentpartsofdataimportfunction(1istingfiles)在这种设计下,插件才是真正实现处理逻辑的部分,在项目进行的过程中,为了满足实际功能需要,为文件导入的每一步都实现了各种各样的插件,详细内容如表5.1所示。 大连理工大学硕士学位论文ListerBase列取插件WildcardRecognitionLister列取插件FixAllListerSTS、^,】RIisterFetcherBaseFTPFetcherSCPFetcherLocalFetcherParserBaseFASParserNCSParserCDDParserRPMOParserMRParserMRRParserSaverBaseRPMOMRSaverCDDSaverFASSaverM旺汛SaverNCSSaver列取插件下载插件解析插件解祈插件解析插件保存插件列取插件的虚基类,实现文件列取功能的通用功能支持模式匹配的文件列取插件,能够处理+?符号和时间替换占位符确定全部文件的文件列取插件,表示列取参数本身就是全部的文件名继承自WildcardRecognitionLister,由于STS数据的特殊性,在模式匹配的基础上,基于特定规则对文件名进行了修改下载插件的虚基类,实现文件下载的通用功能支持从FTP下载文件支持从Linux以SCP协议下载文件由于从外部下载时在本机是留有文件副本的,本插件作用标明文件就在本机,无需下载,也无需删除副本。解析插件的虚基类,实现文件解析的通用功能FacilityAssociatedSignaling(关联信令)数据文件解析插件Network.BasedCallSignaling(网络控制信令)数据文件解析插件CellDesignData(小区定义数据)数据文件解析插件Real-TimePerformanceMonitoring(实时事件监控)数据文件解析插件MeasurementRepoa(测量报告)数据文件解析插件MeasurementResultRecording(测量报告监控)数据文件解析插件保存插件的虚基类,实现文件保存的通用功能用于处理RPMO和MR数据的保存插件,两者解析后数据格式相近,所以使用同一保存插件用于处理CDD数据的保存插件用于处理FAS数据的保存插件用于处理MRR数据的保存插件用于处理NCS数据的保存插件种类繁多的插件虽然能够完成各种各样的功能,但是对于每个任务都要进行繁琐的配置。在与爱立信工程师的多次沟通之后,确定了在网络优化过程中常用的组合,对于 基于WCF的通信数据ETL服务的设计与实现固定的应用场景,可以直接使用PluglnCollection。PluglnCollection是完成特定文件导入的一组插件,客户端在指定导入任务时可以一次指定一个PluglnCollection,任务运行时将在每个步骤中自动选择对应的plugin调用,完成对文件的处理,简化配置选项,提高使用效率。5.3.4数据管理界面为了满足网络优化人员平时对数据管理的需求,对应数据的存储方式和任务的表示方式,设计了方便易用的数据管理界面便于工作人员使用数据导入功能,数据删除功能以及数据表和模板管理功能。数据导入功能包含手动导入,自动导入和任务监控的功能。手动导入对应单次的立即导入功能,用户可以选择数据源,在数据源的文件中选择想要导入的文件,使用特定的导入类型进行导入。导入类型是一组数据处理插件,对文件列取,下载,解析和导入都进行了定制。手动导入开始后,界面下方会实时显示导入的任务状态,包括导入任务包含的每个文件所处的状态,处理的起止时间,如果有异常也会显示出来。用户可以等待任务完成,也可以随后在任务监控页面中查询任务的完成状态。自动导入功能允许用户设定周期的定时导入的任务,并允许在任务路径中加入时间占位符。任务监控界面允许用户通过导入类型和时间查询执行过的任务的状态。周期任务的执行状态只能在任务监控页面查询。囊!!篓璧烹!!黑。:。。!!!黪二.!!曼曼:!嬲!l‘w、。lmjl-j÷!嘿:⋯⋯⋯.。一;一一=..。.+。⋯。。。⋯~。一一。。。i。。。。。..j。。⋯。。!;!。。;。嘲;囊:.:嬲三憋煦!黢4臻¨≮⋯一。。。。二j。=:.⋯⋯。一一~⋯⋯一⋯一一一⋯。。==粤,臻:2,112。j:!::;曼归璧掣蚋哆^’Id譬峰蔓一-:吨*Ⅲ瑚柏÷—m删F肚-髓_后毫+鼍tb÷日姑鼍_馨Ⅻ‰g《№I蟊j¨翻t*枷∞哪O嘲:1篓知“1喜2堋2】12:21,2强i啊----嚣2疆’b“1112l阻2112:11.{雕苫H礞吨胂枷■忡”a嚣3曩b://192l的z112:ll《融w^日日∞¨m啪-瞄搿_g知女192l∞2112:ll—i封i、I■钳I辅柑啊嘣¨呻∞嘟2l5誊崎Zl:19218112112:ll,d辅}●嘲I铀柑科∞棚∞∞蹦蓬‘联々4192l明2112:21.,避嘲辅嘲棚哺舶埘脯∞雌一。7秘墨女1;2I曲2112:21·e馨啊9幽*H旧∞呻o∞∞呦4墨知wl,2.I曲j112"21·9蟊_¨Ⅻ“■u¨m口mH●0≈√,I々2t∞2112:2L伸蔫岬岍柚0却#l§2l酣j112:21一“鐾—钏”●柑】l要知wI'2l札2m2h■、■m一_a赢m,”■、■■’⋯1⋯⋯一1⋯n,基囊鑫蠹j~⋯”曩~$错自∞■哺鞭一#x十聃-E;$州§Fms酏TH_目dTn●sE觑I7Er一憎÷■刚Ⅲ∞删H帖H嚣2dH—0t2311:010】743Do"t∞ded2,£M蛐Ⅲ^÷-俐Ⅲ∞F嗤畦·懈205KHYST检查、测量频点漏定义检查、邻区数量统计、邻区距离统计、单向邻区检查和TALIM>MAxTA检查等一共14项基于CDD数据的一致性检查功能5l 基于WCF的通信数据ETL服务的设计与实现功能名称功能介绍PerformanceAnalysisPowerContr01StructureOpt网络性能分析,根据系统导入的配置文件计算关键指标,包括掉话率,用塞率,Band4/5比例等功控优化,根据电平补偿和期望质量,基于IVlRR数据计算上行精细化功控调整结果QDESUL和SSDESUL结构优化,计算小区间的网络结构指数,重叠覆盖指数,荣誉覆盖指数,网内干扰指数和干扰源指数5.5.2内存效率优化与延迟加载数据计算模块依托于数据读取模块,基于CTE编写数据计算的内容。数据的读取请求在转化为SQL语句之后,服务器就可以向SQLServer数据库发送命令读取数据。读取的数据一般会保存在内存中,等待客户端的请求。计算结果在内存中保存,可能占用大量的系统资源。延迟加载是当在真正需要数据的时候,才真正执行数据加载操作。可以简单理解为,只有在使用的时候,才会发出SQL语句进行查询。在数据读取模块中,读取数据库中得到的计算结果时,可以通过使用DataReader的方法,每次只返回一条数据。在c存语言中,IEnumerable接口是依照设计模式中迭代器模式实现的。迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。在迭代器模式返回数据时,也是一次只返回一条数据。综上所述,可以直接将数据库返回的数据对接到对于计算结果的读取中去,即只在返回结果是读取数据库的数据。数据计算模块的结果返回方式有两种,分别是直接返回(等待用户通过GetResult接口请求)和文件返回。是否能够在这两种返回方式中使用延迟加载的决定因素在于数据库从接收SQL命令到返回数据的时间长短以及读取数据的动作时候能够等待这样长的时间。在文件返回的过程中,不存在客户端的等待时间。而在直接返回时,如果在客户端请求时再运行SQL语句,如果此时的数据库运行的时间过长,对于客户端来说就会形成服务长时间无反应的假死状态。对于基于模板和简单参数配置的数据读取方式,由于灵活性较低,能够加入的运算都是简单运算,再加上对于直接返回使用了返回数据量的限制,也是能够满足在500ms以内返回的。综上所述,在客户端请求的计算使用基于模板和简单参数配置的数据读取方式读取数据,或者请求使用文件方式返回结果时,将通过延时加载的方式,保证内存中只有一 大连理工大学硕士学位论文条数据保留。只有当客户端请求的计算使用基于CTE实现的灵活的数据计算读取方式并且要求直接返回结果时,才会将结果缓存在内存中等待客户端请求。i^料,盘行I旧噔盱V;^b吐r·ct墨iaj‘⋯⋯⋯⋯。嚣⋯⋯⋯⋯’’Dynami娜nverterA篓+JsonConverter日方法0CanConver[0ReadJson0WriteJsonq憎狮l卿州,ll||h嘲^墨曰拿蛰吒connectionString9edata9BdataParams气isCache吃isLoaded9.IockObj吃preLoad吒sqI国属性乒Count户lsCache户IsReadOnly户this国苟圭吒AddData0Dynam;cQueryModel(+1鸯翰0GetEnumerator0GetJson吒LoadALL吼ReadOneRecord。_System.Collections.IEnumerable.GetEnumerator图5.19计算结果类图Fig.5.19Classdiagramofdatacalculationresult 基于WCF的通信数据ETL服务的设计与实现6系统测试与部署6.1系统测试项目使用VS2010开发,可以非常方便的建立自动测试。C撑代码可以使用单元测试来进行。下面以数据导入功能为例,说明本系统开发过程中的单元测试方法。6.1.1单元测试(1)数据导入功能测试方向数据文件导入功能模块可以分为四个部分:文件列取、文件下载、文件解析以及文件保存。每一个小功能模块在执行的过程中无论是否顺利完成既定任务都会对数据库记录文件产生修改,因此,对这一部分的功能测试主要是核实数据库记录文件是否正确记录了每个功能步骤产生的影响。由于数据导入功能模块可以细分为四个小的步骤,所以测试要针对这四个步骤分别进行,另外任务提交这一功能也需要单独的测试。测试各个功能模块是否按照要求完成了所提交的任务,并且在数据库记录条目中留下了正确的运行记录是本功能模块测试的主要工作。(2)测试等价类划分表6.1任务提交功能等价类划分Tab.6.1Equivalencepartitioningofsubmittingtasks 大连理工大学硕士学位论文输出等价类有效等价类文件列取成功,在数据库文件记录表中(FetchTask_FileLog)为每一个成功列取的文件创建一条记录文件列取失败,返回失败信息,并将数据库中FetchTask_TaskLog表中对应的记录的任务状态改为失败.⋯⋯...文件列取成功,却没有为每个文件创建一条任务文件记录无效等价类——————————————————————二二二二-二二二———————~文件列取失败,未返回信息,任务记录表中对应的任务状态也未正确修改—————————————————————————————————————————————一一表6'3文件F。载步骤等价类划分Tab6.3EventListofExUSframeworkstoreelass——————————————————————————————————————————一有效等价娄一个在数据库文件记录表(FetchTask__FileLog)中存在的文件记录,且其文输入等———二2鉴查塑竺竺!塑价类~。⋯。在数据库文件记录表中不存在的文件记录无效等价类———————————————二二二二二r二一——在数据库文件记录表中不存在的文件记录,文件状态不是等待下载———————————————————————————————————一::=:::::::有效等价类二望竺型:塑坚竺奎竺里量垄堡竺垦输出等文件下载失败,对应的文件记录异常胁兴——————————————————————————————————~一川失。。。,。。文件下载成功,对应的文件记录中文件状态未改为下载成功无效等价类——————————二二二二二二二二二二二::=::=::!!!兰=文件下载失败,相应的文件记录未修改————————————————————————————————一表6.4文件解析步骤等价类划分——Tab6.4EventListofExtJSframeworkstoreclass———————————————————————————————=有效等价类已经被下载在本地的待解析文件,该文件对应的文件记录(FetchTask_FileLog)状态为“等待解析”。鼍仝了要求导入的文件未被下载到本地,但文件记录中包含该文件记录,且其文件价荚状态为“等待解析”。无效等价类————————————————————一要求导入的文件已经被下载到本地,但文件记录中该文件对应的条目中,文一件状态字段的对应值不为“等待解析”一55 基于WCF的通信数据ETL服务的设计与实现输出等价类文件解析成功,并在文件保存详细记录表(FetchTask—FileLog_SaveFileDetail)中添加一条记录,记录解析文件的存储位置等信息,并将文件记录表(FetchTask_FileLog)中文件的状态改为“解有效等价类析成功”,并注明成功时间。文件解析失败,返回失败信息,并在文件记录表中(FetchTask_FileLog)将文件状态改为“解析失败”,将失败原因写入Message字段。任务请求被正确的响应,数据库任务记录表中(FetchTask_TaskLog表)并未创建一条任务记录条目无效等价类——————————————————————————————————■文件解析失败,未返回失败信息,或文件记录表中(FetchTask_FileLog)文件状态未改为“解析失败”,失败原因未写入Message字段等。Tab6.5EventListofExtJSframeworkstoreclass解析成功的文件,并且在文件保存详细记录表有效等价类(FetchTaskFileL02saveFileDctail)中有该解析文件的记录输入等解析成功的文件,在文件保存详细记录表价类(FetchTaskFileLogSaveFileDetail)中没有该解析文件的记录⋯“无效等价类—鬲i五i爵主再_;i鬲石西磊荔磊;嘉i——————————一解析失败的文件,在文件保存详细记录表(FetchTaskFileLogSaveFileDetail)中有该解析文件的记录文件保存成功,数据成功存入数据库,文件保存详细记录表(FetchTaskFileLogSaveFileDetaii)中记录文件保存成功的信息,文件记录表(Fet曲竺二!!!!兰!!!!苎竺鉴查垦塑:堡童壁兰:::———————————————————_———————————————————————一一有效等价类文件保存失败,文件文件保存详细记录表(FetchTaskFileLogSayeFileDetail)中记录文件保存失败的相应的信息,文件记录表(FetchTask_FileLog)中文件状态改为“保存失败”,在Messag。警出,字段记录文竺堡童查坚竺堂塑堡望:——』^.*———————————————————————————————————一一优尖文件保存成功,移动通信网络数据没有成功存入数据库,或者文件保存详细记录表(FetchTask_FileLog_SaveFileDetail)中没有记录文件保存成功的信~。,~。息,或者文件里墨墨!!竺!!!竺=!!!!!竺!!奎竺鉴查查垦翌羔墅苎!!!!二’o_无效等价类i磊磊磊鬲赢磊记录表中记录文件保存失败的相应的信息,或者文件记录表(FetchTask_FileLog)中文件状态没有改为“保存失败”,并且在.竺!兰!壁兰垦里量茎竺堡堡查坚竺堂塑里里:——56— 大连理工大学硕士学位论文根据上面划分出的等价类,以及等价类的划分可以很直接的设计出对应的测试方案。由于在代码托管服务器上存在build服务,在代码编译完成之后,会自动运行所有单元测试,当且仅当全部单元测试都通过的情况下才会进行系统的发布。单元测试的运行效果图如图6.1所示。缝票涌潜名称瑗曩Jl·GlobaI.T碱量因。通过GetNodeFromUnixTestGlobal.Test》RoSEE—r.ssonWeb.Test_ROSeFetchTaskLib.Test:二园。通过墨因。通过酉因9通过嚣词。遁过舅国。驳誓因。遭过要固。遁过置do通过ij园。通过|_=:]园。通过叠固。酒过Addonel’imeTa‘kTeatRoSE。FetehTaskLib。TestAddOn娟meW'赫ErrorTestRosE.Feteh.raskLibTe髓AddTas“’eStRoSE。FetchTaskLib.TedAddTaskW'rthUstErrorTestROSE.FetchTaskLib.TestFetchFileErrorOneTestRoSE.FetchTaskLib,Te5tFetchFileErrorThreeTestRoSE.FetehTaskLib.Te‘tF吼chFileErrorTwoTestROSE.FetehTaskUb.TestFetchFileReturnTestRoSE。FetehTaskLib.TestListFileReturnTestRoSE.FetehTaskUb.Te髓ListTaskErrorOneTestRoSE。FetehTaskLib.Te“IistTaskErro汀hreeTeatRoSE.FetehTaskUb.TestUstTaskEfforl埘eatRoSE。FetchTaskLib.Te暑t图6.1数据导入功能的单元测试Fig.6.1Unittestofdataimport6.1.2功能测试功能测试是测试人员根据系统功能,在系统发布之前进行大面积的人工测试。为了保证测试的质量,尽量避免人工测试中的疏漏,使用了一个独立的测试管理系统。该管理系统中包含本系统的全部模块的说明和每一个模块的测试点。测试点详细描述的测试的功能,需要进行的测试动作和测试应该得到的结果。测试时将测试点分配给测试人员进行测试,测试人员将记录测试结果,并经由系统进行汇总,发送给项目负责人员进行处理。 基于WCF的通信数据ETL服务的设计与实现一孵目录=级三蟊任秀描述剩试时目大量本小蔗本Jliit结果锚谩描述撮作点击罨加拄宙·自动弹出右侧任秀2013060600最攮t理导入方式自动选择符剩试t儡存;取消-薯■膏口00对于辅番加的任秀,雇部的工鼻拦2013060600麸据■理哥入方式自动遗拜20持剩试·保存取消.直墨示盐弃t但存羲据t理导入方式自动选择时嗣遗择墨吾正膏特测试,像存-取消读取一十设置的任舟-重t是否显萎据t理导入方式自动选拜符剩试-保存取消-示与之前蠕曩的相一潇鞠认在FTPll'理再面青的麸掂-矗掘t唾喜入方式手动选拜特剩试,像夺取漓读下拉枉中全■I遗叠一个FT'P后.是吾自动尉出#鼓担t理导入方式手动选择符■试’保存。瓢滑根且景下的所有文件·下拉显示螽担导入的班★所膏妻型盘担量唾导入方式手站菇拇特剩试,儡存:取消∞双击左喇衰掐中舶文件夹的魏挺行矗掘t理导入方式手动选择特剩试,儡弃取消·童‘墨否甓罅加戴苒中的文件图6.2测试管理系统测试页面版本粤2O滴试芜威时间:5/5,20149:38:27AM图6.3测试结果Fig.6.3Resultoftest6.2系统部署与运行为了方便系统部署,制作了单独的系统安装包。安装包将完成建立数据库,配置数据库至初始状态,复制必要文件,安装并启动服务,向本机IIS发布应用网站等全部操作,安装完成后系统即可以使用。目前,在经过大连移动公司现场测试之后,通信数据ETL服务已经提交爱立信公司内部使用,作为网络数据处理的基础支持项目,在哈尔滨,唐山等地,协助网络优化工程师对网络数据进行分析,得到了相关工作人员的充分肯定,具有实际应用价值。 大连理工大学硕士学位论文图6.4系统安装界面Fig.6.4Installationinterfaceofsystem59 基于WCF的通信数据ETL服务的设计与实现结论本文主要描述了基于WCF的通信数据ETL服务的设计思路和具体实现方法。文章首先进行背景介绍,体现了通信数据处理在网络优化方面的重要地位,随后介绍了系统涉及的相关技术,详细说明了系统的需求,并提出了设计方案,对系统的实现做了详尽的介绍,最后说明的测试与部署方法。本文的主要工作如下:第一,介绍了业界在网络优化方面主要使用的数据获取方式,阐述了网络优化对于移动通信网络的重要意义。介绍了ETL的主要思想和WCF等技术在本系统中的重要地位。第二,通过基层调研,分析爱立信工程师的实际需求,确定系统相关内容。对需求进行详尽分析后确定了系统的各项功能,提出了整体设计方案。第三,设计并实现了通信数据ETL服务,实现了对于多种格式的通信数据的数据管理,数据读取和数据计算,为网络数据分析人员提供了一个高效易用的数据分析服务,提高了网络优化工程师的工作管理效率。在配合配套的管理网站的情况下,能够完成常用的网络数据分析功能,为网络优化工作提供依据。通过单元测试,实验室群体实验,大连移动实际使用测试,该系统己经提交爱立信相关人员内部使用,在哈尔滨,唐山等地发挥效用。实际使用人员对系统提出的改进意见已经逐步完成,系统运行状态良好,使用人员反映系统基本满足常用网络分析功能,对日常网络优化工作有很多帮助。在整个设计实现与使用的过程中,系统也存在不足之处:第一,目前的数据库仍然放置在单个服务器上,数据处理的压力很大,如果能够转变成分布式存储,同时添加分布式计算,将对系统的性能提升很大。第二,无论是数据导入还是数据读取,参数的配置都相对复杂,仍然需要简化,以提高使用效率。 大连理工大学硕士学位论文参考文献[1】沈亮.数据挖掘在移动通信网络优化中的应用【D].上海交通大学,2009.[2】黄涛,徐利,周晨等.基于MR的无线移动智能网络优化平台的设计与实现[J】,电讯技术,2012,52(12):1969—1973.【3】沈刚,张新华.浅析3G无线网络优化川冲国无线电,20i1(7):66.68.[4】沈海红,罗宏.移动数据网络评估和优化探讨【J】.邮电设计技术,2009(1):46-49.[51梁艳,王哲辉.MR在GSM无线网络优化中的应用【J】.电信工程技术与标准化,2012,25(8):55—58.[6】6江俊敏.可视化话务统计分析系统的研究和实现[D】.浙江工业大学,2003.[7】白鹏宇.自动路测分析系统的分析与设计【D】,北京邮电大学,2012.)[8】李维鹏.无线通信网络优化的流程及方法【J].黑龙江科技信息,2011(2):85,166.【9】黄涛,徐利,周晨等.一种新的基于MR的移动网络越区覆盖判别算法【J】.电讯技术,2012,52(11):1736.1740.[10】邓锐君.MR测量报告在TD网络优化中的应用[J】.硅谷,2013(8):49-49,26.[il】钟云.数据挖掘在网络优化中的应用嘲.电子科技大学,2006.【12】张宁,贾自艳,史忠植等.数据仓库中ETL技术的研究fJ】.计算机工程与应用,2002,38(24):213—216.[13】VassiliadisP,SimitsisA,SkiadopoulosS.ConceptualmodelingforETLprocesses[C]//Proceedingsofthe5thACMinternationalworkshopOilDataWarehousingandOLAP.ACM,2002:14-21.[14】屈志毅,张延堂,王戈等.一种金融系统专用ETL工具的研宄与实现【J】.计算机工程,2008,34(20):80.8l,85【15】DemarestM.Thepoliticsofdamwarehousing[J].RelxievedJanuary,1997,2:2008.【16】w.H.11"1113013.BuildingtheDataWarehouse,ThirdEdition.北京:机械工业出版社,2003.【17】彭琮,黄宇.基于异构数据源的交互式数据转换移植系统的研究与设计(c】.//2008全国信息化发展与新技术学术大会论文集.2008:5.10.【18】杨少华,林海略,韩燕波等.针对模板生成网页的一种数据自动抽取方法[J】.软件学报,2008,19(2):209-223.【19】马安香,张斌,高克宁等.基于结果模式的DeepWeb数据抽取【J】.计算机研究与发展,2009,46(2):280.288.[20】Rahm,E.,Do,H.H。Datacleaning:problemsandcurrentapproaches.IEEEDataEngineeringBulletin,2000,23(4):3~13.【21】段成,王增平,吴克河等.一种轻量级电网实时数据ETL系统的设计与实现叨.电力系统保护与控制,2010,38(18):174—177,182.[22]郭志懋周傲英.数据质量和数据清洗研究综述【J].软件学报,2002,1301):2076—2082.[23】韩京宇,徐立臻,董逸生等.数据质量研究综述【J】.计算机科学,2008,35(2):1.5,12.61 基于WCF的通信数据ETL服务的设计与实现【24】徐俊刚,裴莹.数据ETL研宄综述【J].计算机科学,2011,38(4):15.20.【25]秦峰巍,胡家宝,崔龙卫等.基于SQL*Loader的海量数据装载方案优化[J】.武汉理工大学学报(信息与管理工程版),2010,32(5):707.709,716.126]周宏广,周继承,彭银桥等.数据ETL工具通用框架设计【J】.计算机应用,2003,23(12):96.98.【27]李飞.OWB技术实现数据仓库ETL的研究与应用【D】.北京工业大学,2007.【28]姚航.基于多维数组的数据仓库及OWB分析【J】.现代计算机(专业版),2000,(1):18-21.【29]练亚雄.不同信息管理系统间数据集成的研究与实现【J】.上海应用技术学院学报:自然科学版,2012,12(3):234.239.【30]程晓华,胡凯.数据转换服务∞TS)在话费网络查询系统中的应用【J】.南昌大学学报(工科版),2004,26(2):94-96,100.[31]袁连海,陶宏才.基于数据仓库的数据转移方法【J】.电脑开发与应用,2002,15(2):4.5,8.【32]尹晓楠,邹晓涛,张冬等.基于keale的北京市水务普查数据的提取与转换[J】.中国水利,2013,(21):57.59,42.【33】WindowsCommunicationFoundation.http://msdn.microsoft.com/en.us/library/ms73519.aspx【34】MinLuo,MarkEndrei,PhilippeComte,PalKrogdaM,JennyAng,TonyNewling.Patterns:ServiceOrientedArchitectureandWebServices.2004:4【35】严商.基于WCF的分布式程序的研究与实现【D】.武汉理工大学,2008.【36]魏东,陈晓江,房鼎益等.基于SOA体系结构的软件开发方法研究【J】.微电子学与计算机,2005,22(6):73.76.【37】JuvalLowy.ProgrammingWCFServices.US,O’Reillypress,2007.120.200【38]年福丰,刘秋让.基于WCF的异构数据源集成系统的研究和实现四.科学技术与工程,2009,9(11):3116-3119.【39]严商,黄樟灿.WCF:Windows平台新一代通讯基础研究与分析【J】.计算机与数字工程2008.36(4):86-89.【40】陈德权,邬群勇,王钦敏等.基于WCF的分布式地理信息系统研究【J].测绘信息与工程,2008,33(3):21-23.【41】程汤培.基于WCF的即时通信软件的设计与实现[J].电脑编程技巧与维护,2008,(4):24-40,77.【42]李超,王树鹏,云晓春等.一种基于流水线的重复数据删除系统读性能优化方法[J】.计算机研究与发展,2013,50(1):90—100.【43]RamamoorthycV.Pipelinearchitecture[J].JournalACMComputingSurveys(CSUR),1977,9(1):61—102[44】李昊,刘志镜.线程池技术的研究【J】.现代电子技术,2004,27(3):77—80.【45】刘云生,王刚,王卫国等.实时线程池性能研究与动态优化[J】.计算机工程与科学,200729(12):123—126.【46】霍永华,曹毅,刘文等.线程池技术在B/S网络管理软件架构中的应用[J】.计算机与网络,2014,(6):49.5262 大连理工大学硕士学位论文[47]任钢.c#t≥O建插件业务平台明.电脑编程技巧与维护,2009,(9):19.23.[48】吴金朋.一种大数据存储模型的研究与应用【D】.北京邮电大学,2013.[49】尹永顺.MSSQLServer中大数据量表的查询优化[J】.计算机系统应用,2005(2):79.81.[50】马小丽,姜赞梅.MSSQLServer2000中大数据量表的拆分与实现[J】.电气传动自动化,2013(005):46-48.[5l】康德华,杨学良.分布式文件系统的透明性研究[J】.计算机研究与发展,1993,02:1.8.[52]龚翔.基于c}}的泛型编程叨.科学与财富,2010,(6):192.193.【53]吴金朋.一种大数据存储模型的研究与应用【D].北京邮电大学,2013. 基于WCF的通信数据ETL服务的设计与实现攻读硕士学位期间发表学术论文情况1.爱立信网络数据分析数据库的设计与实现.高品.大连理工大学研究生院网络学刊(2014年4月录用)。(本硕士学位论文第四章) 大连理工大学硕士学位论文致谢论文即将完成,研究生三年的学习生活进入尾声,在此,我首先要感谢大连理工大学创新实验学院的冯林教授,本论文是在导师的悉心指导下完成的,导师渊博的专业知识,严谨的治学态度深深地影响着我,使我受益匪浅。在研究生的三年里,冯老师对我的栽培的努力,使我的科研和工程能力快速撑场。在这里更要感谢冯老师对我的信任,让我带领团队进行项目攻关。感谢冯老师为我提供这么优秀的学术与科研平台,使我能够全面的锻炼自己。从大四确定保送至冯老师读研究生,我就来到了创新实验学院。在这里,我感受到了良好的学习氛围。创新实验学院的很多导师都给予我无微不至的关怀。首先感谢在学习和生活中给了莫大支持的金博副教授,刘一玮,梁冰老师,他们都是我的良师益友。感谢张晓丽老师和冷楠老师在生活上的关心和帮助,解决我日常生活中的诸多难题。感谢姚远、刘胜蓝师兄,凌浩、刘天伟学长引导我克服科研工程中需要的问题,锻炼我的工程实践和团队合作能力。感谢在研究生项目组中一起工作和生活的吕连生,陈奇,吴明飞,王静,孙畅,张民垒,郇正杰,刘洋,张璨,胡骏,武超,毛小龙,感谢ACM实验室一起奋斗的张超,孙崇林,李超,在平时学习和科研生活中,为我带来了无尽的欢笑与支持,让我的研究生生活丰富多彩。感谢我的父母,感谢他们在学习和生活上的支持和关心,他们对我的鼓励让我在求学的路上走的更远。最后,感谢在百忙之中抽出宝贵时间审阅论文的各位老师。 大连理工大学硕士学位论文大连理工大学学位论文版权使用授权书本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间论文工作的知识产权属于大连理工大学,允许论文被查阅和借阅。学校有权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印、或扫描等复制手段保存和汇编本学位论文。学位论文题目:勃Ⅲ幻旒蚴彦7r£蝴硝蚴g舭作者签名:西山导师签名:日期:丝£仝年』月竺一日日期:1盈』尘年—互一月上生一日

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭