毕业设计(论文)-电信计费数据挖掘系统.doc_第1页
毕业设计(论文)-电信计费数据挖掘系统.doc_第2页
毕业设计(论文)-电信计费数据挖掘系统.doc_第3页
毕业设计(论文)-电信计费数据挖掘系统.doc_第4页
毕业设计(论文)-电信计费数据挖掘系统.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河北经贸大学经济管理学院毕业论文引言近二十年来,中国电信业得到迅猛发展,且始终超前国民经济,其发展趋势也是跳跃式的,电信网络无论是在用户的使用数量还是在电信产品的生产制造方面都有突破性进展。个人基于对电信业务和数据挖掘系统的了解和调查,于2014年12月份决定将其作为个人的毕业设计课题。全套设计加扣 3012250582本课题的研究主要是围绕电信服务客户消费数据的采集和存储开展,为了提高数据采集的准确性和数据存储的高效性,将两者划分开来,一方专门用来采集用户数据,一方专门用来接收所有数据采集机发来的数据,并进行数据存储,对此有了数据采集客户端和数据采集服务器的划分。2014年11月展开开题工作,由李福亮老师担任指导老师。在课题设立初期,通过开题报告的审核后,定制了一个阶段任务计划,即严格按照电信计费数据挖掘系统的要求,同时考虑到开发过程的特殊性,每阶段的任务认真完成。该课题就目前电信计费数据挖掘系统现状以及采用的技术进行了详细的研究,得知目前电信计费挖掘系统比较成熟,存在的问题是网络传输中存在一定的技术难题和瓶颈等。结合作者现有的知识技术及资源,在2015年1月15号正式定立课题,课题定名为电信计费数据挖掘系统。 该课题就其研究目的而言,主要是想通过电信计费数据挖掘系统课题的设计,让自己所学的知识融会贯通在毕业之际可以将其在实践中得以升华,成为自己就的一种技术能力,同时通过该系统的研发让能及时收集整理电信用户的使用信息。在设计中运用了专业的思想方法如需求分析法、概要设计法,三层架构思想等等,设计的内容包括:需求分析、概要设计、详细设计与系统实现和系统测试四个阶段,在系统分析中,对系统进行详细的需求分析和功能分析,于4月初结束该阶段的工作,之后转入系统设计;在系统设计中,明确整个系统的数据客户端和客户服务器端等,该阶段性的任务于4月中旬完成;系统实现一个半月完成,基本上实现了设计中的所有模块的功能;现在正是处于系统的测试阶段;完成测试之后将尝试在网站发布,预计将工作于5月中旬全部结束课题的所有开发和设计。1 课题背景1.1 电信计费数据挖掘系统概述为了方便用户使用Linux业务,电信运营商提出了一种Linux实验室出租业务。用户需申请一个Linux帐号,然后通过远程登录的方式登录实验室,用户用这种方式使用Linux资源。用户在使用运营商提供的Linux实验室的服务同时,还需要缴纳一定的租赁费用,由于用户量繁多,因此,电信运营商就需要一个手段去帮他们管理这些数据,这也就是数据挖掘系统,用户登录验室的时长通过实际那匹配计算得到,并根据这些事件依据作为用户某次使用实验室的的消费记录。该项的意图是能够开发一款通用的数据挖掘系统,用它来采集用户消费的原始记录,再根据用户的登录登出匹配成用户登录记录,再将这些数据记录发送给数据挖掘服务器,服务器端先接收这些数据,然后再将这些数据存入数据库或相应文件中。1.2 电信计费数据挖掘系统来发的目的当今是飞速发展的数据大爆炸时代,信息处理工具在各行各业中都发挥着举足轻重的作用,所以计算机应运而生,它以惊人的处理速度,精确地数据分析处理能力深受社会各界青睐,这也正是计算机被广泛应用于信息处理的一个非常重要的原因,它提高了数据处理效率,提高了数据可靠性,让我们周围的大数据真正的能为我们服务。电信计费数据挖掘系统的开发,顾名思义,也是在充分利用计算机的挖掘,整理,分析来自为电信服务行业的数据服务作支撑。1.3 电信计费数据挖掘系统发展现状 近二十年来,中国电信呈跳跃性式发展。其电信产品,电信用户的数量更是呈暴增趋势,其在中国的发展有了突破性进展,但是我们也不能只看到取得的优秀成绩,也应注意到,在现实社会中仍然存在着通信能力不足的缺陷,这也是阻碍其发展的一个重要原因之一,因此我们应该加强对网络建设的重视,把提高通信能力作为电信企业发展工作的重中之重分析可知,电信计费系统的发展朝向向集中处理模式演变的重要趋势,新兴电信运营商大部分采用全国性的集中处理模式。它可以带来的优势有使整个电信计费系统从技术实现、系统设计、平台和开发工具的选定、业务流程和管理模式等方面具有高度的规范性和统一性,可以随时灵敏响应市场变动,还可以以统一的方式为用户提供服务。朝着个性化、多样化的客户服务方向发展是电信计费系统发展的另一个重要趋势。今后的计费系统应能是可以向用户提供各式各样的的缴费周期,缴费方式、客户帐单、费用查询方法,甚至可以为用户提供定制的特殊电信计费服务。但无论是朝着什么方向发展,电信计费系统仍然要一方面向用户,完成对用户租赁业务的计费、收费及一系列服务,另一方面面向电信运营商,为企业提供经营分析,市场预测等报告,为电信运营商在制定市场经营策略方面提供有力支持,还可以在扩大市场占有率、增加收益利润、扩大客户数量、稳定和有针对性开展市场营销活动等工作提供帮助。2 系统开发工具简介2.1 UBuntu简介及在项目中的应用UBbuntu的发音oo-BOON-too与中文“乌班图”读音类似。Ubuntu原本是一个南非民族观念,该词来自于祖鲁语和科萨语,意义为人与人之间的忠诚联系。Ubuntu由Mark Shuttleworth(马克舍特尔沃斯,亦译为沙特尔沃斯)创立。Ubuntu的开发基础是DebianGNU/Linux的不稳定分支,2004年10月20日发布第一个版本。 Ubuntu支持多种架构,其开发团队是Canonical Ltd全球化的专业团队打造,该操作系统是开源的,在桌面的虚拟化方面提供平台支持。Ubuntu在GNU/Linux的普及尤其是在桌面的普及工作中作出了巨大的贡献,也因此让更多的人可以共享开源的成果与方便。 uBuntu的邱善勤博士指出,软件正在慢慢改变这个世界,全球化软件协作已成为未来的发展趋势,以Linux等为代表的开源软件和开源社区已经成为了主导力量。开源软件的兴起在推动软件产业的创新与发展工作中起到主力的作用,是它们让全球的ICT领域发生了持久且全面的变化,它无论是在ICT创新方面还是在社会基础设施建设方面都发挥着越来越重要的作用。在社会各界力量的推动下我国开源软件的发展也形成了蒸蒸日上的大好态势。 在本项目中为主要的编程环境,用来运行程序,最终成为可控的软件。2.2 Oracle语言基础及在项目中的应用用户使用数据库,是通过数据库管理系统提供的相应数据库操作语言来实现的,针对不同的数据库管理系统所提供的操作语言不同。关系数据库管理系统几乎都提供关系数据库标准语言-Oracle ORACLE数据库,目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。Oracle数据库提供开放,全面,集成的信息管理方法。一个server由两部分组成: Oracle DB和 Oracle Server。它具有场地自治性(Site Autonomy)和提供数据存储的透明机制,借此实现数据存储的透明性。一个 Oracle数据库只有一个实例名SID,启动Oracle数据库服务器后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,由DBA用户使用,负责数据库管理任务,启动/关闭数据库;Sys,一个 DBA用户名,拥有最高数据库操作权限;System,一个 DBA用户名,权限仅次于 Sys用户。 客户端即用户的数据库操作端,由应用、SQL* NET、工具等组成,用户操作数据库时,必须先与服务器连接,用户用的数据库称本地数据库(Local DB)。在联网情况下,本地服务器以外的其他数据库称为远程数据库(Remote DB)。用户在操作远程数据库上的数据时,必须先与数据库建立连接。数据库的主要特点有:存储数据的大量性,完整的数据管理功能,数据共享性,数据保存的持久性,数据可靠性。用Oracle能很方便的实现对数据仓库的操作,这是一个技术数据存储形式的发展趋势,数据库的可用性强,可扩展性好,数据安全性高,稳定性好。在项目中用Proc和PLSql语言调用数据库,用以存储整合好的用户数据,操作起来简单方便,实用性教好。2.3 QT语言简介极其在项目中的应用QT是图形用户界面应用程序开发的框架,1991年由奇趣科技开发,其跨平台性很好。广泛用于GUI开发,因此,它又被称为部件工具箱。它也可于非界面的GUI开发。QT由Digia公司创造。使用标准C+和特殊代码生成扩展编译器和宏。由于该语言的兼容性较好,在其他的编程语言中也可使用。QT为开源软件,QT的版本都支持很多种类的编译器。在本项目中应用了QT基本的界面搭建功能和基本的按钮操作功能,用于展示被采集到的用户数据,使其观看起来更加方便,操作起来更加简单。2.4 Makefile文件简介及在项目中的应用Makefile文件是开发中的一个工具,记录在其中的文件可以完成自动编译和链接,如果在一个工程中有很多文件,每个文件的改变都会导致工程的重新链接,但需要要重新编译链接的只有改动过的文件才需要,在Makefile中会记录文件的改动情况,执行make指令时根据makefile文件中的记录只会重新编译改动过的文件,编译链接的时间与以往相比大大减少,在工程特别庞大,工程文件特别多的时候,这种优势更能体现出来,本项目也是借鉴了MakeFile文件的这一特性,来更好的为项目服务。3 电信计费数据挖掘系统需求分析3.1 需求分析编写目的需求分析的编写目的是在业务背景的前提下明确业务的范围,分析出项目的核心功能和系统的功能需求,对项目进行可行性分析,指导后面项目研发工作的开展和进行。3.2 项目业务原理用户在登录Linux系统时,Linux系统都会将每个用户的登录信息以系统日志的方式记录下来,并将所有用户的登入/登出信息都保存在Linux的系统日志文件中,数据挖掘系统可以通过系统日志文件读取用户的登入/登出信息,通过匹配用户的登入和登出信息,获取成功匹配登入/登出的用户信息,最后将这些匹配数据放到到数据库中保存成文本文件,供电信工作人员可以阅读,这些数据作为以后对电信用户的收费依据。在此,为了提高机器的使用效率,将数据的采集工作交给用户使用的Linux主机,而将大部分的数据处理工作交给另外一台单独的主机,用来做数据处理的主机只进行数据的处理和存储,大大减轻了用户使用Linux主机的使用,可以为用户提供更好的服务质量。两台主机之间的数据交换采用Socket通信方式,即可以分别为用户使用的Linux主机和数据处理主机起名为数据采集客户端和数据采集服务器端,在客户端和服务器端,以及两者的数据传输中并采取一些必要的机制保证数据的安全性和完整性等。3.3 用例图 分析整合总体业务需求,系统的用例包括DMS系统管理员,数据采集,数据读取,上次未匹配的登入记录,用户登录数据文件,数据匹配,匹配登入记录,保存为匹配的登入记录,数据发送,数据接收,数据保存。对于今后的开发还可以对数据进行整合,展示出年报表,月报表和日报表数据挖掘系统的用例图如下图3-3-1系统用例图所示,用来说明系统中各个用例之间的关系。图3-3-1 系统用例图3.4 系统用例描述整合系统各用例,分别简述各用例的作用和功能描述,用来更好的表述系统的功能需求。数据采集用例的描述如下表3-4-1表3-4-1 数据采集用例描述用例名称数据采集功能简述DMS管理员运行DMS程序,完成数据采集的功能前置条件DMS程序已正确安装并部署基本流1. DMS管理员启动DMS服务端程序2. DMS管理员启动DMS客户端程序3. DMS客户端程序读取上次未匹配的登入记录4. DMS客户端程序读取用户登录数据文件5. DMS客户端程序得到用户登入/登出记录列表6. DMS客户端程序将用户的登入和登出记录按照对应关系匹配成完整的登录记录7. DMS客户端程序将不能成功匹配的登入记录写到文件中保存8. DMS客户端程序将匹配好的登录记录发送到数据采集服务端9. DMS服务端程序接收采集的数据10. DMS服务端程序将数据写到服务端文件中保存下来分支与异常第1步,若启动服务端程序失败,则报告异常。第2步,若启动客户端程序失败,则报告异常。第3步,若上次未匹配的登入记录文件不存在,则跳过到第3步。第4步,若读取用户登录数据文件失败,则报告异常。第7步,若指定的写出目录不存在,则创建目录。第7步,若创建目录或写文件失败,则报告异常。第8步,若发送数据失败,则定时重传。第10步,若写入文件失败,则报告异常。后置条件-备注-数据读取用例描述如下表3-4-2表3-4-2 数据读取用例描述用例名称数据读取功能简述DMS程序读取系统数据文件和上次未匹配的登入记录,形成用户登录记录列表。前置条件DMS客户端程序启动基本流1. 根据系统配置信息确定上次未匹配的登入记录文件的位置。2. 读取上次未匹配的登入记录,形成用户登录记录列表。3. 根据系统配置信息确定用户登录数据文件的位置。4. 读取数据文件,将文件内容解析成用户登录记录。5. 将上一步中解析得到的用户登录记录添加到列表中。6. 返回用户登录记录列表。分支与异常第2步,若上次未匹配的登入记录文件不存在,则跳过到第3步。第4步,若用户登录数据文件不存在,则报告异常。后置条件-备注-读取上次未匹配的登入记录用例描述如下表3-4-3表3-4-3 读取上次未匹配的登入记录用例名称读取上次未匹配的登入记录功能简述DMS程序读取上次未匹配的登入记录,形成用户登录记录列表。前置条件DMS客户端程序启动基本流1. 根据系统配置信息确定上次未匹配的登入记录文件的位置。2. 读取文件内容,将数据解析成用户登入记录。3. 创建内存列表,保存读取到的登入记录数据。4. 清空未匹配的登入记录文件。分支与异常第2步,若上次未匹配的登入记录文件不存在,则结束此用例。第2步,若读取文件失败,则报告异常。第4步,若清空文件失败,则报告异常。后置条件-备注-读取用户登录数据文件用例描述如下表3-4-4表3-4-4 读取用户登录数据文件用例名称读取用户登录数据文件功能简述DMS程序读取用户登录数据文件,形成用户登录记录列表。前置条件DMS客户端程序启动基本流1. 根据系统配置信息确定数据文件位置。2. 备份数据文件,并删除原始数据文件。3. 根据系统配置信息确定上次未匹配的登入记录文件的位置。4. 读取上次未匹配的登入记录,形成用户登录记录列表。5. 读取数据文件,将文件内容解析成用户登录记录。6. 将上一步中解析得到的用户登录记录添加到列表中。7. 返回用户登录记录列表。分支与异常第2步,若找不到数据文件,则报告异常。第2步,若备份数据失败,则报告异常。第3步,若上次未匹配的登入记录文件不存在,则跳过到第4步。第4步,若读取备份数据文件失败,则报告异常。第6步,若指定的写出目录不存在,则创建目录。第6步,若创建目录或写文件失败,则报告异常。第7步,若指定的写出目录不存在,则创建目录。第7步,若创建目录或写文件失败,则报告异常。后置条件-备注-数据匹配用例描述如下表3-4-5表3-4-5 数据匹配用例名称数据匹配功能简述DMS程序读取用户登入/登出记录列表,按照登入/登出的对应关系匹配成完整的用户登录记录,并将本次未匹配的登入记录写到指定文件。前置条件已经获得用户登入/登出记录列表基本流1. 访问用户登入/登出记录列表,按照登入/登出的对应关系匹配登录记录。2. 将未匹配的登入记录写到文件中。分支与异常-后置条件-备注-匹配登录记录用例描述如下表3-4-6表3-4-6 匹配登录记录用例名称匹配登录记录功能简述将用户登入/登出记录按照对应关系匹配成用户登录记录,以便计算用户登录时长。前置条件已经获得用户登入/登出记录列表基本流1. 定义两个列表分别用来保存登入记录和登出记录。2. 循环访问用户登入/登出记录列表,将登入记录和登出记录分检出来,分别存入登入记录列表和登出记录列表。3. 循环访问登出记录列表,每找到一条登出记录后循环访问登入记录列表,找到与之对应的登入记录,将两条对应的记录组合成用户登录记录,并将这两条记录从列表中删除。4. 循环直至所有的登出记录都处理完成。分支与异常-后置条件-备注无保存未匹配的登入记录用例描述如下表3-4-7表3-4-7 保存未匹配的登入记录用例名称保存未匹配的登入记录功能简述将匹配之后剩余的登入记录数据保存到文件中,以便下次匹配。前置条件匹配登录记录完成基本流1. 将匹配完成后,登入记录列表中剩余的记录写到文件中保存。分支与异常第1步,若找不到指定文件,则创建。第1步,若创建文件失败,则报告异常。后置条件-备注-数据发送用例描述如下表3-4-8表3-4-8 数据发送用例名称数据发送功能简述采集系统客户端将匹配好的数据通过网络发送给服务器。前置条件用户登录记录已经匹配完成基本流1. 建立到服务器的网络连接。2. 遍历匹配的用户登录记录集合,拿到一条匹配的用户登录数据记录。3. 将匹配的用户登录数据记录按照指定格式发送。4. 循环2-3步,直到所有匹配的登录记录处理完成。5. 关闭网络连接。分支与异常第1步,若网络连接失败,则报告异常。第2步,若写数据失败,则报告异常。后置条件-备注-数据接收用例描述如下表3-4-9表3-4-9 数据接收用例名称数据接收功能简述采集系统服务器接收从客户端传送过来的数据。前置条件服务器程序启动,客户端完成匹配,并已发送数据。基本流1. 开启服务程序。2. 获得网络连接。3. 开启新的线程为客户服务。4. 获得输入流和输出流。5. 包装流对象。6. 循环从输入流中读取字符串,保存在本地列表中。7. 成功读取一行字符串后向服务器发送成功传送标志。8. 循环5-6步,直到所有字符串接收完成。9. 关闭流对象,关闭网络连接,终止线程。分支与异常第1步,若开启服务失败,则报告异常。第2步,若获得网络连接失败,则报告异常。第4步,若获得流对象失败,则报告异常。第6步,若读取数据失败,则报告异常。第7步,若写出数据失败,则报告异常。后置条件-备注-数据保存用例描述如下表3-4-10表3-4-10 数据保存用例名称数据保存功能简述采集系统服务器将接收到的数据保存到数据库。前置条件服务器已经接收到数据。基本流1. 建立到数据库的连接2. 循环访问接收到的数据列表3. 将列表中的记录插入到用户登录记录明细表中4. 访问完成后关闭连接分支与异常第1步,若建立数据库连接失败,则报告异常。第3步,若插入记录失败,则报告异常。后置条件-备注-3.5 数据库设计需求 数据库的设计需求跟从Linux主机处采集到的数据源有直接关系,用户登录Linux系统的日志文件在Linux的/var/adm目录下,文件名为wtmpx,日志记录文件为一个二进制存储数据的文件,在Linux中可以使用last指令查看,last命令的格式为:last -a -n number | -number -f filename name | ttywtmpx文件中一条登录记录包含372字节,每条记录包含的数据项格式说明如下表3-5-1所示: (其中有蓝色表格背景的数据项就是要采集的数据项) 表3-5-1:用户登录记录数据项格式位置范围字节长度 含义000-03132/* 用户登录名 */032-0354/* inittab id */036-06732/* device name (console, lnxx) */068-0714/* 进程ID*/072-0732/* 登录类型7-登入,8登出 */074-0752/* process termination*/076-0772/* exit status*/2/* 这是C数据类型补齐产生的空位*/080-0834/* 登录时刻*/*单位是秒 */084-0874/* and microseconds */088-0914/* session ID, used for windowing */092-11120/* reserved for future use */112-1132/* significant length of ut_host */114-371257/* 登录IP*/后期数据库设计时会根据需要采集的数据项选择最优的数据库表格。3.6 系统业务流程根据项目原理可以得出项目的大体流程,数据采集客户端先读取数据,即把数据从系统日志文件中读取出来,之后再把放入内存集合中的数据进行匹配成需要的数据,把匹配好的集合发送到数据采集服务端。服务端接收数据,并保存数据到数据库中,数据进入数据库最终完成系统的整个流程,系统的流程图如下图3-6-1所示,图3-6-1 系统流程图3.7 系统功能需求列表根据需求分析的进一步深入,可以将系统的功能总结如下表3-7-1,系统功能需求列表表3-7-1 系统功能需求列表功能名称功能描述读取数据读取系统日志的原始数据匹配数据匹配读取到的原始数据,形成存储的数据对象发送数据将匹配好的数据发送到数据存储服务器端接收数据接收数据采集服务器端的数据记录 保存数据将用户消费的数据记录存储到数据库中4 电信计费数据挖掘系统总体设计4.1 系统架构概述根据系统的功能需求,在数据采集的客户端应该有一个数据读取模块,用来从Linux系统日志文件中读取日志信息,用来对采集到的数据进行匹配的数据匹配模块,将匹配好的数据发送到数据采集客户端的数据发送模块,在数据采集服务器端用来接收匹配数据的数据接收模块和负责将数据存入数据库的数据存储模块,对数据库中数据进行整合从而得到月报表,季报表和年度报表的数据整合模块。综合概述该系统的实分为以下几大核心功能:数据读取,数据匹配,数据发送,数据接收,数据存储,数据整合。如下图4-1-1图4-1-1 电信计费数据挖掘系统功能模型数据读取模块:负责从用户登录记录文件和未匹配登录记录文件中读取用户的登录记录数据,将其转化为LogRec对象,然后传递给数据匹配模块匹配。数据匹配模块:负责匹配用户登录记录,按照登入/登出关系匹配,形成匹配的用户登录记录数据(MatchedLogRec对象),并计算出每次登录的时间长度供数据存储的使用。数据发送模块:将匹配好的用户登录记录通过网络发送到采集系统服务器。(SocketSender对象)数据接收模块:服务器端接收匹配好的用户登录记录数据。(ServerSocket对象)数据保存模块:将从客户端接收到的用户记录保存到数据库中。4.2 系统功能模块描述物理上系统分为采集客户端(被采集机器)和采集服务器两部分,在采集客户端包含数据采集模块,数据匹配分析模块和数据发送模块;在采集服务器端包含数据接收模块,数据存储模块,各模块的主要功能和职责如下:4.2.1 数据读取该功能模块的主要任务是读取Linux机器上的系统文件日志,该日志包括系统新来的用户登录记录和上次匹配未完成且需要保留的数据项,得到用户登录记录信息后,将信息解析为程序对象,以方便匹配模块的匹配。4.2.2 数据匹配该模块的主要任务是将数据读取模块读取到的数据按照登入/登出的关系匹配成一条完整的登录记录。对于本次采集到的数据即有某一用户的登入记录又有该用户的登出记录的,说明系统同时捕获到了用户的所有工作活动,为一条有效数据,表示匹配完成,可以将数据交给数据发送模块发送到数据采集服务器处理数据。对于本次采集的数据中只有某用户登入信息没有登出信息的,说明该用户在本次数据采集时间段内没有登出系统,或者该用户的登出信息采集错误,对于这样的信息还有利用价值,寄希望于在以后采集的数据中可以完美的匹配到该用户的登入登出记录,因此先将这样样的数据保存数据到指定文件,等待数据读取模块下次读取数据时再进行匹配,查看匹配结果,对于只有登出没有登入的,说明该用户的登入信息在数据采集,数据传递等过程中存在系统缺陷,未能捕获到或产生了某种系统错误,该数据将变成垃圾数据,永远也不会找到该用户此次的登入记录,已没有利用价值,直接删除,不用保留。4.2.3 数据发送该模块的主要任务是建立客户端网络连接,本项目中采用Socket编程的方式实现数据采集客户端和数据采集服务器的连接,也正因为Socket编程中作为数据的发送方,所以将数据的发送方称为数据采集客户端将匹配好的用户登录记录以字符串的形式发送到服务器。4.2.4 数据接收该模块的主要任务是建立网络连接,它的功能与服务器端类似,因为此方为数据的接收方,所以称为数据采集服务器端,可以从客户端读数据记录,即匹配好的登录记录。4.2.5 数据存储该模块的主要任务是进行数据存储功能,这些数据由数据采集客户端发送过来,在数据存储的过程中,为了提高数据库的访问效率,降低数据库的访问频率,项目中加入了数据缓冲机制,不是有一条匹配好的数据就进行一次数据库操作,而是等到暑假达到一定数量时进行一次数据库的写操作,从而大大降低了数据库的访问频率,有利于主机的使用效率提升,该模块存储的数据将作为电信业务人员的收费依据。4.3 系统数据库设计根据需要分析中需要采集的数据项分析,在读取用户原始记录的数据表格中可以得到如下表格4-3-1。表4-3-1 需要读取的原始记录数据数据名数据含义是否需要采集备注说明logname用户登录名是匹配同一次登录会话的必须数据之一pid进程ID是匹配同一次登录会话的必须数据之二type登录类型7登入,8登出是type值范围1-8但只处理7,8两情况logtime登录时刻,单位是秒是采集的数据,为登入或登出时刻logip登录IP是采集的数据根据读取的原始数据记录可以知道,对于匹配好的用户数据会多一个表格项,那就是用来表示某用户在某次登录时的总消费时间,用户的匹配登录记录表如下4-3-2所示表4-3-2 匹配登录记录数据数据名数据含义备注说明Logname用户登录名-Logintime登入时刻-Logouttime登出时刻-Durations登录时间长度-Logip用户ip地址-用户的登录信息首先在每台机器上匹配好,然后将这些匹配好的数据发送到服务器,服务器接收这些匹配好的数据,然后将他们保存在数据库中,用户登录记录明细表形成。在数据库中保存的用户登录记录明细表结构如下4-3-3:表4-3-3 用户登录记录明细表数据名数据含义备注说明Logname用户登录名-Logintime登入时刻-Logouttime登出时刻-Durations登录时间长度-Logip用户ip地址-Labip实验室ip-根据电信计费系统需要采集的数据类型和种类,设计出如下数据库的表结构,如下图4-3-4:图4-3-4 数据库表结构根据以上的分析决定用户登录记录明细表的内容,用来表示用户登录记录在数据库中存储的形式,用户登录记录明细表如下表4-3-5:表4-3-5 用户登录记录明细表字段类型长度约束备注登录记录编号Number15PK系统自动生成用户IDchar32NOT NULL系统自动生成实验室IPchar20NOT NULL系统自动生成用户终端IPchar257NOT NULL系统自动生成登入时间Number20NOT NULL系统自动生成登出时间Number20NOT NULL系统自动生成登录时长Number12-由登出时间-登入时间求得4.4系统框架接口设计4.4.1用户接口用户:执行启动命令,启动系统的服务端程序。系统:服务端运行,等待数据接收。用户:执行启动命令,启动系统的客户端程序。系统:客户端系统运行时进行数据的采集并发送。用户:修改客户端配置文件参数系统:根据新的配置参数下次运行时来处理数据。4.4.2外部接口系统读取用户的原始登录记录文件,获得用户的登入/登出信息。系统读取上次未匹配的登入记录文件,获取还没匹配的非垃圾数据。系统把匹配好的数据存入数据库表中。4.4.3内部接口数据匹配模块与数据读取模块间的接口:输入:解析后的用户登入/登出记录。输出:无数据发送模块与数据匹配模块间的接口:输入:已经匹配好的登录记录。输出:无数据接收模块与数据发送模块间的接口:输入:匹配好的用户登录记录数据项输出:接收成功与否的消息数据接收模块与数据保存模块间的接口:输入:匹配好的用户登录记录列表输出:无数据库与数据保存模块间接口:输入:匹配好的用户登录记录列表输出:无4.5数据结构设计根据需求分析的成果,对项目中所用到的类做出了一些技术上的分工和功能上的划分,具体划分如下:根据系统需求分析,设计出以下两个数据实体:LogRec:登入/登出记录类,表示原始用户登入/登出记录。MatchedLogRec:匹配的登录记录类,表示匹配好的用户登录记录。以下对两个实体类的设计作出进一步说明:4.5.1登入/登出记录数据类根据业务的分析比较需要有两类的数据结构,第一个是用来存储刚从日志文件中读取到的用户信息的结构体,在此定义为LogRec,第二个是匹配好登入和登出的,用来放入数据库中做以后的收费记录的结构体信息,在此项目中定义该结构体为MatechedLogRec,比LogRec多了一个保存用户本次上网时间段的变量。两个结构体的设计如下所示:LogRec类的类图如下图4-5-1:图4-5-1 LogRec类图LogRec类成员变量说明如下表4-5-2:表4-5-2 LogRec类成员变量说明成员变量定义成员变量说明备注char logname32用户的登录名-int pid用户登录进程的ID号-short type登录记录的类型7=登入;8=登出int logtime用户登入/登出的时刻(秒)时间的数据单位为秒char logip257用户登录的IP-4.5.2匹配的用户登录记录类同样的道理,数据匹配时与用户登录记录几乎相同,只是多出了记录时间间隔的表示变量MatchedLogRec类图如下图4-5-3:图4-5-3 MatchedLogRec类图MatchedLogRec类成员变量说明如下表4-5-4:表4-5-4 MatchedLogRec类成员说明成员变量定义成员变量说明备注char logname32用户登录名-char logip32用户登录终端IP-int logintime用户登入时刻(秒)原日志中数据单位是秒int logoutTime用户登出时刻(秒)原日志中数据单位是秒int durations用户在线时间长度(秒)-char labip257实验室IP-4.6 业务名词 根据项目设计的进一步推进,为了更好的描述要输的项目内容,我们引进了很多业务名词,其具体内容详见附件15 电信计费数据挖掘系统详细设计5.1 总体类图根据总体设计的业务需求和业务流程,数据在传递过程中有客户端和服务器端,所以划分为数据采集客户端和数据采集服务器,根据数据采集客户端需要实现系统日志文件的读取,将读到的日志文件内容发送到服务器端,所以设计了如下3个类,每个类之间的关系如下图5-1-1所示图5-1-1 客户端类图考虑到项目中数据采集服务器端需要从客户端接收数据,需要存储匹配好的数据信息,以及在数据存储和传输过程中的效率问题,定义了如下几个类,数据采集服务端类图如下图5-1-2图5-1-2 服务端类图5.2 客户端类设计5.2.1 Client 类设计及说明5.2.1.1 Client类Client类封装数据采集系统客户端的所有功能。Client类定义如下图5-2-1图5-2-1 Client类定义Client类方法说明sendLogs方法定义如下表5-2-2:表5-2-2 sendLogs方法定义方法原型public void sendLogs()方法功能执行数据采集客户端的完整过程logReader负责读取数据 logSender负责发送数据参数说明-返回类型Void抛出异常调用类的异常5.2.1.2 LogReader类logReader类封装了日志读取的所有功能,它是真正用来读取日志文件的类,通过各成员变量和成员函数完成日志文件的读取工作,正因为日志文件的读取和匹配是一个很耗时且很容易在日志读取的过程中产生登入/登出冲突,所以有一些特殊成员变量的或函数的定义,如:成员变量backFileName和函数backUp,为了每次得到的用户匹配数据肯定是当时此用户最近一次的,所以在每次读取完数据,对于本次未匹配的数据且不是无用的垃圾数据的时候,将其他的数据做删除处理,以消除用户消费数据重复采集的问题,但是在删除原有日志的同时,如果正好有用户产生了登入或登出记录,产生的新消息记录就会被一同删除掉,这将大大的增加数据采集的失误率,所以为了更好的进行数据采集,采集出更加完整的数据,我们先将要读取的数据一整页的拷贝一份,拷贝完之后再将原来的系统日志文件数据删除,然后再在拷贝的数据文件中进行相应的操作,这样可以大大的减少数据采集到而被误删的情况,从而能大大的提高了采集到的数据的正确率和完整性。LogReader类的定义如下图5-2-3图5-2-3 LogReader类定义LogReader成员变量说明如下表5-2-4表5-2-4 LogReader成员变量说明成员变量定义成员变量说明char logFileName50用来存放用户登录日志文件名char backFileName50用来存放备份日志的文件名 char failLoginsFileName50用来存放未匹配成功的登录记录保存的文件名logins list保存登录记录的集合logouts list保存登出记录的集合matches list保存匹配成功记录的集合LogReader类方法说明readLogs方法如下表5-2-5:表5-2-5 readLogs类方法方法原型public List readlogs() 方法功能用来读取用户日志文件的总调度函数,得到匹配好的集合 参数说明-返回类型List抛出异常调用函数中可能抛出的异常readLogs方法活动图如下图5-2-6:图5-2-6 readLogs方法活动图backup方法如下表5-2-7表5-2-7 backup方法方法原型private:void backup() 方法功能备份日志文件 把变化的文件处理成不变的 把日志文件改名即可,系统会自动生成wtmpx文件参数说明无返回类型Void抛出异常读取数据失败抛出BackupExceptionreadFailLogins方法即在文件读取时如果发生了异常,导致文件读取失败,从而直接将读取失败的文件存储起来以备下次再读取,次方法就是用来读取那些上次读取失败的文件,readFileLogins方法如下表5-2-8:表5-2-8 readFailLogins方法方法原型public: void readFailLogins 方法功能读取上一次没有匹配的 登入记录参数说明-返回类型Void抛出异常读取数据失败抛出ReadFailLoginExceptionreadFailLogins方法活动图如下图5-2-9:图5-2-9 readFailLogins方法活动图readBackupFile方法用来读取从系统日志文件那里拷贝来的数据,该方法如下表5-2-10:表5-2-10 readBackupFile方法方法原型public: void readBackupFile方法功能读取备份的日志文件 把读取到的数据放入对应的属性中参数说明-返回类型Void抛出异常读取数据失败抛出ReadBackFileExceptionreadBackupFile活动图如下图5-2-11:图5-2-11 readBackupFile活动图matchLogRec方法是数据采集服务器端一个处于核心处的方法,用于匹配出用户消费记录,来决定匹配是否成功,以及决定该条数据是未匹配的垃圾数据直接删掉,还是有利用价值留待下次继续匹配的数据存储起来如下表5-2-12:表5-2-12 matchLogRec方法方法原型public void matchLogRec() 方法功能将用户登入/登出记录匹配为完整的登录记录 logins ,logouts进行匹配存入matches参数说明无返回类型Void抛出异常匹配数据失败抛出MatchLogRecExceptionmatchLogRec方法活动图如下图5-2-13:图5-2-13 matchLogRec方法活动图saveFailLogins方法如下表5-2-14:表5-2-14 saveFailLogins方法方法原型public void saveFailLogins() 方法功能将匹配失败的日志记录存到文件参数说明-返回类型-抛出异常匹配数据失败抛出SaveFailLoginsException5.2.1.3 LogSender类设计及说明 LogSender类在数据采集客户端起到客户端与服务器端连接和数据发送的作用,定义如下图5-2-15图5-2-15 LogSender类定义 LogSender类成员变量说明如下表5-2-16表5-2-16 LogSender类成员变量说明成员变量定义成员变量说明char failSendFileName50发送失败记录的保存文件名int fd采集系统服务器网络描述符unsigned short port服务器的端口char serverIp20要连接的服务器ipLogSender类方法说明sendMatches方法如下表5-2-17:表5-2-17 sendMatches方法方法原型public void sendMatches(list*matches) 方法功能发送匹配好的日志集合到服务端参数说明Matches用来存储发送数据的集合返回类型Void抛出异常如果建立连接失败抛出SendDataExceptionsendMatches方法活动图如下图5-2-18:图5-2-18 sendMatches方法活动图initSocket方法如下表5-2-19:表5-2-19 initSocket方法方法原型public void initNetWork() 方法功能根据ip和port 以及serverIp建立客户端到服务端的socket连接来初始化网络参数说明-返回类型Void抛出异常如果建立连接失败抛出SendDataExceptionreadSendfailed方法如下表5-2-20:表5-2-20 readSendfailed方法方法原型public void readSendfailed (list*matches) 方法功能读取发送失败的数据文件,以备下次发送时重新发送参数说明matches: 匹配的用户日志记录列表指针返回类型Void抛出异常发送数据失败抛出SendDataExceptionsaveSendfailed方法如下表5-2-21

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论