




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要该论文主要研究电信IP计费系统中的数据采集与整合,在设计过程中要解决的问题首先就是如何用CC从服务器上读取数据,如何把读取的数据进行过滤,并把它们封装成一个结构通过网络传输出去并在网络另一端接收并存储到数据库当中,还有就是如何在ORACLE数据库中对采集的原始数据进行整合生成系统所需要的各个表。这些问题都是在设计当中要重点解决的问题。采集模块的主要功能就是从服务器上读取数据,并把它们封装成一个结构通过网络传到中央处理系统,然后插入到数据库中。在整个毕业设计过程中,通过课程的学习和与老师探讨问题,最终找到解决方案,用UNIX环境下提供的各个函数读取数据通过SOCKET编程传输数据,然后通过PROC在中央处理系统中插入到数据库中。适当在服务器上创建作业就能定时采集。整合部分通过使用PL/SQL访问ORACLE数据库,写存储过程和作业实现对原始数据的整合。关键词PL/SQL、PROC、数据采集、数据整合ABSTRACTTHISPAPERISRESEARCHINGABOUTTHEDATAACQUISITIONANDINTEGRATIONINTHEIPTELECOMBILLINGSYSTEMINTHEDESIGNPROCESS,THEREARESOMEQUESTIONSTOBESOLVEDFIRST,HOWTOREADDATAFROMTHESERVERUSINGCCHOWTOFILTERTHEDATAWHICHYOUREADFROMTHESERVER,ANDHOLDTHEDATAENCAPSULATIONINTOASTRUCTUREANDOUTPUTTHROUGHTHENETWORKTRANSMISSION,ONTHEOTHERSIDEOFTHENETWORKTORECEIVEANDSTORETHEMTODATABASESECOND,HOWTOINTEGRATETHEORIGINALDATAWHICHYOUACQUISITIONINTHEORACLEDATABASEANDGENERATEDSOMETABLESTHATYOURSYSTEMNEEDALLTHESEQUESTIONSSHOULDFOCUSONSOLVINGINOURDESIGNPROCESSTHEMAINFUNCTIONOFTHEACQUISITIONANDINTEGRATIONMODULEISTOREADDATAFROMSERVERANDIMPLEMENTESTHEABOVEFUNCTIONSINTHEWHOLEDESIGNPROCESSOFGRADUATION,IAMSTUDYHARDANDOFTENDISCUSSIONONTHEISSUEWITHTEACHERS,FINALLYIFINDTHESOLUTIONUSETHEFUNCTIONTHATTHEUNIXOPERATINGSYSTEMPROVIDEDCANEASILYGOTTHEDATAFROMSERVERANDUSETHESOCKETPROGRAMMINGTRANSMITETHEDATATHENINSERTDATAINTOORACLEDATABASEUSINGPROCESTABLISHBUSYWORKONSERVERSUITABLECANGATHERDATAONTIMETHEPARTOFINTEGRATIONMAKEUSEOFPL/SQLTOACCESSORACLEDATABASE,ANDTOWRITEPROCEDUREANDBUSYWORKINORDERTOINTEGRATETHEORIGINALDATAKEYWORDSPL/SQL,PROC,DATAACQUISITION,DATAINTEGRATION目录1绪论12开发环境和相关知识介绍221UNIX概述222PL/SQL概述3221PL/SQL的优点3222PL/SQL块结构32221声明部分DECLARATIONSECTION42222异常处理部分EXCEPTIONSECTION42223执行部分EXECUTABLESECTION4223PL/SQL块语法4224PL/SQL块的命名和匿名52241函数52242过程52243包PACKAGE52244触发器TRIGGER623PROC概述6231ORACLE9IFORRHLINUX62的PROC环境624什么是SOCKET8241UNIX环境下SOCKET编程基本过程83系统需求分析与概要设计1031系统设计思想1032系统功能描述1033需求分析1034系统概要设计13341系统模块划分13342业务流程图13343总体架构图14344实体间关系图14345课题相关模块分析153451系统部署图153452部署、用例与组件图1635课题设计思想2136课题详细描述224课题详细设计2441数据库设计2442采集系统的实现流程UNIX环境下2643定时操作UNIX环境下3344整合模块的实现345系统测试37总结与体会38致谢39参考文献40附录一毕业设计主要代码41附录二英文资料原文47附录三英文资料译文671绪论本课题采用由亚信公司提供的“电信用户管理和计费系统NETCTOSS”该系统是一个典型的基于UNIX平台、ORACLE数据库、WEB界面,融合JAVA和C两种语言实现的大型软件项目,是为电信运营的IP计费服务的。该系统运行于TOMCAT平台,采用JAVAEE架构、STRUTS框架,HIBERNATE、SPRING技术及ORACLE数据库,并成功运行于SUNSOLARISUNIX及WINDOWS2000环境下。该系统主要分为用户自服务管理模块,管理员管理模块,用户管理等模块,资费模块,帐单和帐务模块以及数据采集与整合模块。本论文主要阐述的是该系统下的两个模块,数据采集与整合。数据采集与整合是整个系统的后台实现,功能是定期采集采集系统原始计费日志文件(UNIX系统下的/VAR/ADM/WTMPX文件),并将采集的数据封装整理成BIDR结构的数据清单,然后通过SOCKET上传给中央处理系统;中央处理系统收集信息并通过PROC将数据保存到ORACLE数据库当前时间所对应的T_DAILY_X表中,最后利用PL/SQL周期性进行数据的整合整合系统。该课题在设计中要解决的主要问题就是在采集过程中,如何解决数据匹配问题,如何将采集到的有效数据封装成我们需要的结构并输出到网络另一端,由接收端将数据插入到数据库中,如何在数据库中进行周期整合,产生系统所需要的各个表。指导这些问题解决的思想就是文件读写、SOCKET编程、PROC和用PL/SQL编写的存储过程以及UNIX下的作业操作。在设计中主要用到的语言以及技术主要是UNIXC、PL/SQL、PROCC。之所以选择这些语言及技术,一方面是因为在电信运营支撑系统中,效率有着很关键的作用,效率直接影响着整个系统的使用,另一方面是在UNIX系统下,已经存在对日志文件读取的各种接口,可以很方便的实现采集。考虑到数据采集与整合的这些诸多特点,所以在做该子系统时选择了UNIXC、PL/SQL、PROCC等语言和技术。2开发环境和相关知识介绍21UNIX概述UNIX是一个强大的多用户、多任务操作系统,支持多种处理器架构,最早由KENTHOMPSON、DENNISRITCHIE和DOUGLASMCILROY于1969年在AT按天合并日表T_DAY_X生成所有用户计费数据月表T_MONTH_X按月合并月表T_MONTH_X生成所有用户计费数据年表T_YEAR_X按小时合并清单表T_DETAIL_X生成所有LAB_IP数据日表T_DAY按天合并日表T_DAY生成所有LAB_IP数据月表T_MONTH按月合并月表T_MONTH生成所有LAB_IP数据年表T_YEAR1、用户管理需求用户开通管理管理用户登陆OPENLAB的帐号,包括帐号开通、暂停(加锁)、恢复、删除。用户资料管理管理用户资料,包括姓名(单位)、身份证号码、住址及资费信息等。用户信息ID,姓名、帐务帐号/密码、OPENLAB帐号/密码、状态(正常/暂停/关闭)、联系电话、EMAIL、开通日期、停止日期、付款方式(现金/邮寄/支票/转帐/电子银行)、证件号码、职业(学生/IT从业人员/非IT从业人员)、国籍(中国/美国/加拿大/日本/英国/澳大利亚/其他)、性别(男/女)、单位、联系地址、邮政编码。注意本系统一个用户对应一个帐务帐号,可以对应多个OPENLAB帐号。2、管理员管理需求管理员开通管理管理用户登陆NETCTOSS的帐号,包括帐号开通、暂停(加锁)、恢复、删除。管理员资料管理管理管理员资料,包括姓名、身份证号码、住址等。管理员权限管理改变管理员的各类权限。管理员信息ID,姓名、帐号(一个)、密码、状态(正常/暂停/关闭)、联系电话、EMAIL、开通日期、停止日期、权限注意一个用户对应一个帐号。3、帐单管理需求整合系统按月生成用户月帐单。帐单信息用户标识信息帐单ID,姓名、帐号、状态(正常/暂停/关闭)、联系电话、EMAIL、开通日期帐务信息帐号、日期、登录时长、本月费用帐单明细登录时间退出时间时长4、帐务管理需求按月、年分别生成月帐务信息统计报表和年帐务信息统计报表。月帐务信息生成一个计费月周期中,每一天的帐务信息。月帐务信息日期时长费用年帐务信息生成一个计费年周期中,每一月的帐务信息。年帐务信息月份时长费用5、用户自服务需求用户可通过INTERNET自查询自己的当前或历史帐单,并能修改自己自己的一些信息。用户帐务信息自查询用户标识信息帐单ID,姓名、帐号、状态(正常/暂停/关闭)、开通日期。帐务信息日期、登录时长、本月费用帐单明细登录时间退出时间时长6、资费管理需求用户可以通过登录系统来查询电信公司所提供的一些资费信息,以方便用户来使用。管理员通过登录系统可以根据公司运营情况来向其中增、删、改资费信息。资费信息资费ID,资费名称,月租,使用费,描述7、采集模块需求所需系统文件/ETC/PASSWD密码文件,/ETC/SHADOW用户名文件,计费LOG文件数据库表资料信息表用户信息、管理员信息、资费信息、URL信息数据存储表明细表、日表、月表、年表8、整合模块需求所需数据库表用户消费明细表、日表、月表、年表产生数据库表服务器被使用量的日表、月表、年表业务模型用户首先通过3A服务器验证后,可以使用出租实验室,并记录用户的登录与退出信息,信息经过加工处理生成系统所需数据持久化在数据库中,供管理和查询,如下图34系统概要设计341系统模块划分该系统包括两个子系统数据采集与整合系统与WEB系统。在数据采集与整合系统中又可分为数据采集模块与数据整合模块。数据采集与整合系统中的数据采集模块主要功能是将电信服务器上的计费文件中所有用户的消费记录采集并且整理出来,然后插入到数据库中。从功能上讲,该系统共分为三个模块,分别是采集模块,入库模块和网络模块。从部署运行方面讲该采集系统分为客户端和服务器端两个部分。客户端部署在电信服务器上,用于采集和整理计费文件中的原始记录并把结果发送到服务器端。服务器端用于接收从客户端发送过来的数据,并持久化到数据库中相应的表中。数据整合模块主要功能是将数据库中的用户原始的消费数据进行整合,形成可供用户和管理查询的帐单,如日清单,月报表,年报表,以及仅供管理员查询的帐务清单,主要用于考察电信服务器的运行情况。该子系统是电信运营支撑系统中的后台实现,也是WEB系统的依赖。WEB系统是整个电信运营支撑系统的表现,是和用户进行交互的部分。该系统可供用户和管理员查询相关内容。通过登录该系统,用户可以完成查询帐单,修改个人信息,浏览电信运营商提供的各种资费服务。管理员可以完成查询所有用户帐单,修改管理员信息,对用户进行管理(开通,关闭,删除用户帐号),对管理员进行管理(开通,关闭,删除管理员帐号),修改资费项目,查看电信服务器运行情况。根据以上功能,该系统可分为六个模块,用户管理模块,管理员管理模块,用户自服务模块,帐单管理模块,资费管理模块,帐务管理模块。342业务流程图通过底层的采集与整合模块将系统所需要的数据插入到数据库当中,供用户及管理员使用。由图可看出,用户想使用OPENLAB服务器就必须通过3A服务器的验证,验证通过则允许使用并记录日志。在WEB部分用户可以通过登录系统来查询及修改自己的信息,管理员可以管理相应的信息。如用户管理和计费管理343总体架构图DAILYMONTHLYYEARORACLE中央处理系统采集系统LOGROUTERSWITCH工作站帐务查询系统用户管理系统ADM管理系统DBS用户自理系统数据整合系统BIDR采集系统解析日志文件中的信息,把对我们有用的信息采集回来,封装成一个结构传输到中央处理系统,然后持久化到数据库当中,经过整合这些数据,再分别存储到不同的表中,供系统使用。通过登录系统,用户可完成相应的操作,包括查询自己的消费信息,修改自己的一些信息等等。管理员则可对用户、业务及服务器进行管理。344实体间关系图345课题相关模块3451系统部署图一一一一一一一一一TCP/IPTCP/IPTCP/IP一一一一一一采集部署图一一一一一一WEB一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一WEB一一一EB一一一WEB一一一EB一一一WEB一一一一EB一查询和管理部署图3452部署、用例与组件图用例图一一一一一一一一一用例描述用例名称查询月帐单描述管理员可以进行月账单查询用例参与者管理员前置条件管理员已经登录成功基本事件流登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击帐单管理链接,页面就显示出系统中所有帐务帐号在上月的总的费用的列表基本事件流登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击帐单管理链接,页面就显示出系统中所有帐务帐号在某年某月总的费用的列表,因为帐务帐号很多,不利于查看,在此页面上有分页的功能,在列表下方有上一页和下一页的链接和选择页码的拉列表框,可以直接点击这两个链接或直接在列表框里选择页码来跳转到帐单列表页面,显示指定页面的信息基本事件流登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击帐单管理链接,页面就显示出系统中所有帐务帐号在某年某月总的费用的列表,在此页面中有查询某帐务帐号在某年某月的功能,操作流程是,在页面上方有文本提示写着帐务帐号,后边有一个文本框,在里面填写你要查询的帐务帐号名,后边还有两个下拉列表框,后边文本提示分别写着年、月,在这两个下拉列表框里分别选中你要查询的年和月,然后点击查询按钮完成操作,如果输入的帐务帐号存在,就会在列表页面显示此帐务帐号在某年某月总的费用,如果在帐务帐号文本框里没有输入会查某年某月所有帐号总的费用其他事件流无异常事件流如果查询不到任何结果,则显示没有查询到任何记录。后置条件无用例名称查询月帐单明细描述管理员可以进行月账单明细进行查询用例参与者管理员前置条件管理员已经登录成功基本事件流登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击帐单管理链接,页面就显示出系统中所有帐务帐号在某年某月总的费用的列表,在每个帐务帐号的总费用之后都会有一个明细的链接,直接点击链接就会进入帐单明细页面,此页面会显示该帐务帐号上所有业务帐号上发生的所有费用的明细信息其他事件流无异常事件流无后置条件无组件图一一WEB一一一一一一DAO一一BEAN一一一BEAN一帐务管理模块用例图一一一一一一一一一一一一一一一一一一用例描述用例名称查询月总计清单描述管理员浏览服务器的月使用时长清单用例参与者管理员前置条件管理员已经登录成功基本事件流登录成功后,进入系统主页面,管理员点击左边导航条的帐务管理后,则显示当前月前一月以小时为单位的所有服务器一整月总计使用时间长度列表页面基本事件流登录成功后,进入系统主页面,管理员点击左边导航条的帐务管理后,则显示当前月前一月以小时为单位的每台服务器一整月总计使用时间长度列表页面管理员可以选择年份和月份,查看指定某年某月的以小时为单位的所有服务器一整月总计使用时间长度列表异常事件流如果查询不到任何结果,则显示没有查询到任何记录。后置条件无用例名称查询年总计清单描述管理员浏览服务器的年使用时长清单用例参与者管理员前置条件管理员已经登录成功基本事件流登录成功后,进入系统主页面,管理员点击左边导航条的帐务管理后,则进入服务器月总计列表页面,管理员可点击页面上方服务器年帐务查询链接,进入服务器年总计列表页面,在该页面显示以小时为单位的所有服务器去年总计使用时间长度基本事件流登录成功后,进入系统主页面,管理员点击左边导航条的帐务管理后,则进入服务器月总计列表页面,管理员可点击页面上方服务器年帐务查询链接,进入服务器年总计列表页面,在该页面管理员可以选择一个年份,查看指定年的以小时为单位的所有服务器一整年总计使用时间长度异常事件流如果查询不到任何结果,则显示没有查询到任何记录。后置条件无用例名称查询月详细清单描述管理员浏览服务器一月每日的使用时长清单用例参与者管理员前置条件管理员已经登录成功基本事件流登录成功后,进入系统主页面,管理员点击左边导航条的帐务管理后,进入月帐务总计页面在该页面中管理员点击要查看明细的服务器项最后的详细清单链接,进入月帐务明细页面,在该页面中显示出指定服务器在指定月份中每一天被访问的时长信息。异常事件流如果查询不到任何结果,则显示没有查询到任何记录。后置条件无用例名称查询年详细清单描述管理员浏览服务器一年每月使用时长的清单用例参与者管理员前置条件管理员已经登录成功基本事件流登录成功后,进入系统主页面,管理员点击左边导航条的帐务管理后,则进入服务器月总计列表页面,管理员可点击页面上方服务器年帐务查询链接,进入服务器年总计列表页面,在该页面中管理员点击要查看明细的服务器项最后的详细清单链接,进入年帐务明细页面,在该页面中显示出指定服务器在指定年份中每个月被访问的时长信息。异常事件流如果查询不到任何结果,则显示没有查询到任何记录。后置条件无组件图一一WEB一一一一一一一DAO一一BEAN一一一BEAN一35课题设计思想本人所负责模块的设计思想是从记录有用户登录与退出信息的文件中读取信息,并经过解析,提取出有效信息,并封装成我们所需要的结构,通过SOCKET编程将采集到的数据提交到中央处理系统,经过处理插入到数据库的原始数据表中。然后经过整合,分别整合成符合系统需求所需要的各个表中,供系统使用,如图1SERVERT_DETAIL_XPROCOPENLAB1OPENLAB3OPENLAB6OPENLAB6CLIENT采集系统T_YEART_MONTHT_DAYYYPL/SQLT_YEAR_XT_MONTH_XT_DAY_XXXXX整合系统图1采集与整合设计模型36课题详细描述用户首先需要访问3A服务器AUTHENTICATION认证,AUTHORIZATION授权,ACCOUNTING记账,UNIX系统本身就可以作为3A服务器,3A服务器根据其中事先已经记录的用户名UNIX下/ETC/SHADOW及密码UNIX下/ETC/PASSWD进行校验。验证通过则3A服务器允许用户登录。登录成功后,用户可以使用出租实验室,并生成一个LOG文件。同时将用户的登录与退出的所有信息记录到文件中UNIX系统中的/VAR/ADM/WTMPX,该文件中记录的数据包括用户名,用户ID,用户IP,进程号,登录类型,状态,时间,SESSIONID等信息,这些都是为后面的数据采集做准备。数据采集主要是解析3A服务器记录的用户上、下网数据形成用户登录数据,通过SOCKET方式将数据从3A服务器发送至中央处理系统,中央处理系统将收到的数据进行持久化处理保存到ORACLE数据库里对应的表T_DETAIL_XX代表一个月中的每一天中。在这个过程中所要解决的问题有1如何从文件中读取数据;2如何过滤并选择对我们有用的数据;3如何匹配同一个用于上、下网的信息,以及采集过程中有可能产生的其它问题4怎样将选择的数据封装成我们所要的结构,并传输到中央处理系统中。数据整合模块,利用PL/SQL编写存储过程将T_DETAIL_X表中的数据整合到T_DAY_X中,X代表一个月中的第几天;将T_DAY_X表中的数据整合到T_MONTH_X表中,X代表一年中的第几个月;将T_MONTH_X表中的数据整合到T_YEAR_X表中,X代表每一个年。另一方面,将T_DETAIL_X表中的数据整合到T_DAY,T_MONTH,T_YEAR三个表中,这三个表分别存放的是每个服务器在一天、一个月以及一年中的使用量,这三张表只能供管理员来使用。这些操作需要在数据库中通过写存储过程和定制作业来完成。需要说明的是上面的几张表,T_DAY_X表是用户计费数据日表(统计当天每小时每个服务器上的每个用户的总时长)每条数据记录的是一个服务器上的一个用户某一小时的总时长对于一个服务器上的一个用户,最多有24条记录;T_MONTH_X表是用户计费数据月表(统计当月每天每个服务器上的每个用户的总时长)每条数据记录的是一个服务器上的一个用户某一天的总时长对于一个服务器上的一个用户,最多有31条记录;T_YEAR_X表是用户计费数据年表(统计当年每月每个服务器上的每个用户的总时长)每条数据记录的是一个服务器上的一个用户某一月份的总时长对于一个服务器上的一个用户,最多有12条记录。采集模块从日志文件中采集数据并封装成一个结构,然后将这个结构传送到中央处理系统中,然后插入到明细表中,如图2左半部分所示。由采集模块插入到数据库中的数据是一些零碎的,比较详细的记录,这些数据对用户来说是没什么用处的,需要由整合模块整合到各个表中以供用户使用。整合模块首先将由采集模块采集到的数据按服务器IP,用户登录IP和用户名分组,然后将分组查询到的数据统计后插入到天表中,进而再将天表中的数据整合到月表,月表中的数据整合到年表。需要说明的一点就是整合模块将用户消费的原始数据信息整合成了两套表,一套表包括T_DAY_X,T_MONTH_X,T_YEAR_X,X代表的具体含义见33详细需求描述。这些表供用户使用,用来查询自己的消费信息;另一套表包括T_DAY,T_MONTH,T_YEAR。这套表供管理员来使用,用来统计各服务器的使用情况,为企业的决策提供依据,如图2右半部分所示。这两套表是系统中资费管理模块,帐单查询模块,帐务查询模块赖以运行的基础。T_DETAIL_X采集系统BIDR/VAR/ADM/WTMPXUNIXLOGSERVER中心处理系统按小时合并用户数据按小时合并LAB数据T_DAY_XT_DAY按天合并用户数据按天合并LAB数据T_MONTH_XT_MONTH按月合并用户数据按月合并LAB数据T_YEAR_XT_YEAR图2采集与整合数据流程4课题详细设计41数据库设计由于整个电信运营支撑系统的功能很复杂,并且要存取大量的数据,因此简单的使用文件来存储和管理数据显然是不明智的。而且,本系统是基于UNIX平台,在数据整合部分用的是PL/SQL,所以本系统采用ORACLE数据库来存储和管理数据。根据系统需求分析需要创建以下的数据表来存储数据。采用PROC来动态创建表。1、T_DAILY_X表用于保存从采集系统传过来的数据,由中央处理系统负责插入到数据库中。31张表字段名称数据类型说明LOGIN_NAMEVARCHAR220用户登录姓名LOGIN_IPVARCHAR2128用户登录IPLOGIN_DATEDATE用户登录时间LOGOUT_DATEDATE用户退出时间LAB_IPVARCHAR2128服务器IPTIME_DURATIONNUMBER10,2时长建表语句事例PROCDECLAREV_CURSORINTEGERV_SQLVARCHAR2500BEGINV_CURSORDBMS_SQLOPEN_CURSORFORIIN131LOOPV_SQLCREATETABLET_DETAIL_|I|V_SQLV_SQL|LOGIN_NAMEVARCHAR220,/登录名V_SQLV_SQL|LOGIN_IPVARCHAR2128,/用户登录IPV_SQLV_SQL|LOGIN_DATEDATE,/登录时间V_SQLV_SQL|LOGOUT_DATEDATE,/退出时间V_SQLV_SQL|LAB_IPVARCHAR2128,/服务器IPV_SQLV_SQL|TIME_DURATIONNUMBER10,2/时长V_SQLV_SQL|DBMS_OUTPUTPUT_LINEV_SQLIS|V_SQLDBMS_SQLPARSEV_CURSOR,V_SQL,DBMS_SQLNATIVEV_SQLCREATEINDEXI_DETAIL_|I|ONT_DETAIL_|I|LOGIN_NAME/索引DBMS_SQLPARSEV_CURSOR,V_SQL,DBMS_SQLNATIVEENDLOOPDBMS_SQLCLOSE_CURSORV_CURSOREND2、T_DAY_X表是用来统计用户计费数据日表,31张表字段名称数据类型说明LOGIN_NAMEVARCHAR220用户登录名LOGIN_IPVARCHAR2128用户登录IPLOGOUT_DATEDATE统计日期LAB_IPVARCHAR2128服务器IPTIME_DURATIONNUMBER10,2时长3、T_MONTH_X表是用来统计用户计费数据月表,12张表字段名称数据类型说明LOGIN_NAMEVARCHAR220用户登录名LOGIN_IPVARCHAR2128用户登录IPLOGOUT_DATEDATE统计日期LAB_IPVARCHAR2128服务器IPTIME_DURATIONNUMBER10,2时长4、T_YEAR_X表是用来统计用户计费数据年表,20052014年10张表字段名称数据类型说明LOGIN_NAMEVARCHAR220用户登录名LOGIN_IPVARCHAR2128用户登录IPLOGOUT_DATEDATE统计日期LAB_IPVARCHAR2128服务器IPTIME_DURATIONNUMBER10,2时长5、T_DAY是用来存储服务器一天之内的被使用量,该表只能由管理员使用字段名称数据类型说明LOGOUT_DATEDATE统计时间LAB_IPVARCHAR2128服务器地址TIME_DURATIONNUMBER10,2使用总时长6、T_MONTH是用来存储服务器一月之内的被使用量,该表只能由管理员使用字段名称数据类型说明LOGOUT_DATEDATE统计时间LAB_IPVARCHAR2128服务器地址TIME_DURATIONNUMBER10,2使用总时长7、T_YEAR是用来存储服务器一年之内的被使用量,该表只能由管理员使用字段名称数据类型说明LOGOUT_DATEDATE统计时间LAB_IPVARCHAR2128服务器地址TIME_DURATIONNUMBER10,2使用总时长42采集系统的实现流程UNIX环境下一、客户端(补充代码见附录一)1循环读取日志文件2过滤3过滤掉UT_USER以“”开头的4过滤掉UT_TYPE不是7或8的INCLUDEUTMPXNAME“/VAR/ADM/WTMPX“/打开日志文件SETUTXENTSTRUCTUTMPXPINTI0WHILEPGETUTXENTNULL/操作日志文件数据/把1个小时前到当前时间所有有效过滤掉UT_USER以“”开头的记录;过滤掉UT_TYPE不是7或8的记录的用户记录分类存放到不同的两个集合登陆集合和退出集合中;IFPUT_USER0IFPUT_TYPE7SEVENPUSH_BACKP/保存登录信息ELSEIFPUT_TYPE8EIGHTPUSH_BACKP/保存退出信息ENDUTXENT3匹配同一用户某一次访问的登陆和退出记录(要考虑跨时间段的问题)根据给定的登陆记录匹配相应的退出记录1退出记录的PID和给定的登陆记录一样,而且用户名必须相同。2退出记录的入口时间要晚于登陆记录的时间。3符合上两个条件的退出记录中,离给定的登陆记录最近的一个退出记录即是和给定的登陆记录匹配的。跨时间段问题的解决由于采集系统时每小时执行一次,匹配记录时会出现三种情况A某一用户同一次访问的登陆和退出记录都包含在这一小时的记录中。这种情况可以直接计算出用户本次访问总共的耗时时间。/处理“有头有尾”的情况VOIDMATCHLISTSEVEN_S,LISTEIGHT_E,LISTWHILEISSEVEN_SENDLISTITERATORIEEIGHT_EBEGINWHILEIEEIGHT_EEND/为保证找到同一个用户的相对应的登陆时间和退出时间;/需要判断用户姓名,进程ID号,并且确定退出时间一定要比登陆时间大;IFSTRCMPISUT_USER,IEUT_USER0WHILEISSEVEN_TEMPENDSEVENPUSH_BACKISSEVEN_TEMPERASEIS/6,这样也仍然使HEAD_SEVENBAT文件保存的是“有头无尾”的记录。WRITEFILE“HEAD_SEVENBAT“,SEVEN4把匹配好的BIDR结构数据传输给接收系统SOCKET编程。我们封装BIDR结构是因为在我们所要解析的日志文件中,里面的数据不是所有的我们都需要,所以我们把我们想要的数据挑拣出来封装成一个结构,即BIDR结构。BIDR结构中封装的数据类型与数据库中的原始记录表中的字段是对应的。我们封装成这个结构很大程度上方便了数据的持久化。/1、建立一个SOCKETINTSSOCKETAF_INET,SOCK_STREAM,0/ERRCHECKS,“SOCKET“IFS0/该IF语句为测试代码,可以删除。正式交付时必须删除COUT“ITERATORITSFORITSBIDRSBEGINITSBIDRSENDITSWRITES,/4、关闭套接字CLOSESRETURN0;二、接收系统实现流程(补充代码见附录一)1通过SOCKET接收采集系统发送的数据。SOCKET编程步骤见前述介绍241代码INTMAININTARGC,CHARARGVIFARGC获得一个套接字整数类型的值INTSSOCKETAF_INET,SOCK_STREAM,0/AF_INET指定协议家族/SOCK_STREAM指定协议TCP协议判断是否成功0指定TCP协议一个IFS0COUT0LOOPDBMS_SQLPARSEINSERT_CUR,INSERTINTOT_DAY_|DAY|LOGIN_NAME,LOGIN_IP,LOGOUT_DATE,LAB_IP,TIME_DURATIONVALUESV1,V2,V3,V4,V5,DBMS_SQLNATIVEDBMS_SQLCOLUMN_VALUESELECT_CUR,1,LOGIN_NAME将1绑定的值再赋给变量LOGIN_NAMEDBMS_SQLCOLUMN_VALUESELECT_CUR,2,LOGIN_IPDBMS_SQLCOLUMN_VALUESELECT_CUR,3,LAB_IPDBMS_SQLCOLUMN_VALUESELECT_CUR,4,TIME_DURATIONDBMS_SQLBIND_VARIABLEINSERT_CUR,V1,LOGIN_NAMEDBMS_SQLBIND_VARIABLEINSERT_CUR,V2,LOGIN_IPDBMS_SQLBIND_VARIABLEINSERT_CUR,V3,N_DATEDBMS_SQLBIND_VARIABLEINSERT_CUR,V4,LAB_IPDBMS_SQLBIND_VARIABLEINSERT_CUR,V5,TIME_DURATIONV_RECORDSDBMS_SQLEXECUTEINSERT_CUR执行EXCUTEINSERT_CURENDLOOPCOMMITDBMS_SQLCLOSE_CURSORINSERT_CURDBMS_SQLCLOSE_CURSORSELECT_CUREXCEPTIONWHENOTHERSTHENROLLBACKIFDBMS_SQLIS_OPENSELECT_CURTHENDBMS_SQLCLOSE_CURSORSELECT_CURENDIFIFDBMS_SQLIS_OPENINSERT_CURTHENDBMS_SQLCLOSE_CURSORINSERT_CURENDIFRAISEENDDETAILS2DAYS存储过程建立好以后,通过使用数据库的DBMS_JOB的定时器运行该模块,定时整合。定时操作如下VARIABLEV_INT1NUMBEREXECUTEDBMS_JOBSUBMITV_INT1,NETCTOSSEXEC_DETAILS2DAYSNETCTOSSEXEC_DETAILS2DAY,SYSDATE,SYSDATE1/24COMMITVARIABLEV_INT2NUMBEREXECUTEDBMS_JOBSUBMITV_INT2,NETCTOSSEXEC_DAYS2MONTHSNETCTOSSEXEC_DAY2MONTH,SYSDATE,SYSDATE1COMMITVARIABLEV_INT3NUMBEREXECUTEDBMS_JOBSUBMITV_INT3,NETCTOSSEXEC_MONTHS2YEARSNETCTOSSEXEC_MONTH2YEAR,SYSDATE,ADD_MONTHSSYSDATE,1COMMIT5系统测试由于课题的特殊性,系统测试只能是在程序中添加输出语句,让相应的信息输出到控制台上,查看输出结果是不是我们想象的结果。在源程序中测试代码都存在可供参考。实际交付时,必须删除。还有就是到数据库中查看相应的表中是否有我们想要的数据。测试表明程序可以正常运行。模拟数据采集结果如图总结与体会这次毕业设计的任务是利用PROC和PL/SQL开发电信IP计费的数据采集与整合,其功能是定期从3A服务器上采集数据并插入到数据库中,然后在数据库中整合所采集到的原始数据。这次毕业设计是所学知识的一个综合,从中我熟练掌握了软件设计与开发的思想。明白了系统需求分析的重要性,同时也深刻了解了注释的重要性。要想做好一个系统,在系统分析阶段,就要事先把需求做好,在开发过程中采取螺旋式的开发模型,一点一点的完善系统,直到系统达到了用户的需求。在做完了编码工作以后就要为自己的代码写上注释,以方便后面的人对它们进行维护。良好的注释习惯是一个程序员应该具备的素质之一,也是企业中开发软件的规范之一。养成这样的良好习惯对今后我们步入社会,走上工作岗位,迅速溶入工作中的角色奠定了坚实的基础。这次毕业设计也是我大学四年来第一次与同学合作完成一个系统,对我来说,有很深的意义,让我明白了为什么现在越来越多的企业强调团队协作的重要性。团队协作并不是简单的大家一起做项目,更重要的是交流与统一。没有统一的规范,在软件后期的整合就会有很多的问题要解决,没有好的团队交流就没有了企业文化。本次毕业设计,我感触很深,要想做好一个系统,不仅需要具有相关的专业知识,还应具有一定的实践能力,要把以前所学习的各种知识与技术综合起来并加以灵活地运用,这些都要在多动手的基础上得来。通过本次亲自动手设计系统,我更加深刻的了解系统开发的全过程,以及在开发中遇到问题应当如何去解决,这对我今后的工作有很大的帮助,并为我在今后工作中遇到困难、如何去克服提供了宝贵的经验。在毕业设计过程中,遇到了很多问题,比如说如何解决采集到的数据存在“有头无尾”和“有尾无头”的情况,经过与老师探讨最终提出解决方案,把那些匹配不上的数据暂时存到文件中,待下次采集的数据来到再从文件中读入数据进行匹配,直到数据匹配完成。由于个人能力有限以及实践经验欠缺,毕业设计基本要求,但不可避免有不足之处,希望老师和同学能给予建议和指导。注NETCTOSSOSSOPERATORSUPPORTSYSTEM运营支撑系统致谢毕业设计是大学四年的最后一门课程,也是综合运用所学知识的课程。平常上课学习的侧重点是理论知识,自己动手实践的机会不多,这次毕业设计为我提供了一个很好的机会,可以让我将所学的理论知识运用到实践中,是检验理论知识学习成果的最好方法。首先,我要特别感谢我的导师陶陶老师,在毕业设计上,给与我全程指导,督促我的毕业设计工作。我的整个论文工作都是在他的指导下完成的。其次,要感谢的是我在培训期间给与我很多帮助的老师们,在毕业设计期间,他们给予了我很多技术方面的支持,在毕业论文的撰写以及答辩方面也给了我很多的帮助和指导,在此表示感谢。再次,要感谢的是我的好同学们,他们把学校的信息第一时间转达给我,在此表示感谢。同时还要感谢我同组的成员,和他们的探讨使我对问题的看法更加深入,向我提出了许多建设性的意见,同时也帮助我做了很多实际的工作。最后,要感谢安徽工业大学这个大家庭,谢谢她给了我一个良好的学习环境,我在学校阶段的任何成绩,任何荣誉都与这个大家庭分不开。在此表示感谢。再次向所有帮助过我的人表示我最诚挚的谢意参考文献1CPRIMER中文版第4版)(美)STANLEYBLIPPMANBARBARAEMOOJOSELAJOIE著,李师贤蒋爱军梅晓勇林瑛等译北京人民邮电出版社2006312ORACLEDATABASE10G完全参考手册(美)龙利(LONEY,K)著,张立浩,尹志军译北京清华大学出版社2006913数据库系统概论(第四版)王珊萨师煊著北京高等教育出版社4精通UNIX下C语言编程与项目实践朱云翔,胡平编著北京电子工业出版社20071215UNIX完全手册第二版(美)罗森等著,邢国庆,黄辰,刘琦译北京电子工业出版社6UML参考手册(英文版第2版)(美)朗包等著北京机械工业出版社2006117HIBERNATEREFERENCEDOCUMENTATIONVERSION321HIBERNATE使用手册8网上摘录什么是PROC/C200608261615HTTP/HIBAIDUCOM/TODAYGOODHUJUN/BLOG/ITEM/B5F3A0EF7BFB8516FCFA3C72HTML9C语言核心技术北京机械工业出版社200781附录一毕业设计主要代码数据采集代码采集过程客户端部分代码包含部分测试代码INCLUDEUSINGNAMESPACESTDINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDESTRUCTBIDRCHARLAB_LOGIN_NAME32CHARLOGIN_IP32CHARLOGIN_DATE32CHARLOGOUT_DATE32CHARLAB_IP32INTTIME_DURATION/MINUTE/BI/利用OO的思想来简化主程序的/CHARIP32VOIDMATCHLISTSEVEN_S,LISTEIGHT_E,LISTVOIDIPFORMATCHARHOST,CHARIPPVOIDTIMEFORMATTIME_TT,CHARDATEVOIDBETIMETIME_TT,INTTIMEVOIDREADFILECHARFILE,LISTVOIDWRITEFILECHARFILE,LISTSINGLEINTMAININTARGC,CHARARGVTIME_TTIMETMPTIMETIME_TBEFORETIMETIMETMP60601LISTSEVEN/登录集合LISTEIGHT/退出集合LISTBIDRS/符合条件的记录集合,需要传给SERVER端去做整合操作;LISTSEVEN_TEMP/临时的登录集合LISTEIGHT_TEMP/在采集数据时可能会出现三种情况/“有头有尾”在某个时间段采集到某个用户在某个服务器上的登录时间点/和退出时间点,说明该用户完成了一次访问过程;/“有头无尾”在某个时间段只采集到某个用户在某个服务器上的登录时间/点,而没有采集到退出时间,说明该用户还在访问服务器,没有退出呢;/“无头有尾”在某个时间段只采集到某个用户在某个服务器上的退出时间/点,而没有采集到登录时间,说明该用户已经完成了一次访问过程,但是没/有一个完整的记录,这种情况是一种无效的记录,不再给予记录,一般这种/情况只会发生在第一次采集的时候。见42采集系统的实现流程/将IP地址转换成点分十进制格式VOIDIPFORMATCHARHOST,CHARIPPSTRUCTHOSTENTPNULLPGETHOSTBYNAMEHOSTIFPNULLCOUTH_ADDR_LISTCHARIPE32WHILEPIPNULLINET_NTOPAF_INET,PIP,IPE,SIZEOFIPEPIPSTRCPYIPP,IPE/将时间转换成指定的时间格式“YMDHMS“VOIDTIMEFORMATTIME_TT,CHARDATESTRUCTTMTIMENOW/TIMETIMENOWLOCALTIMECHARTMP32STRFTIMETMP,SIZEOFTMP,“YMDHMS“,TIMENOWSTRCPYDATE,TMP/COUT“60IFT600TIMEINTT/60ELSETIMEINTT/601ELSETIME1/将文件中的内容读到集合中VOIDREADFILECHARFILE,LISTFSTREAMFINFILE,IOSIN|IOSBINARYIFFINCOUTSINGLELISTITERATORLIBEGINFSTREAMFOUTFILE,IOSOUT|IOSBINARYIFFOUTCOUTUSINGNAMESPACESTDINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDESTRUCTBIDRCHARLAB_LOGIN_NAME32CHARLOGIN_IP32CHARLOGIN_DATE32CHARLOGOUT_DATE32CHARLAB_IP32INTTIME_DURATION/MINUTE/BIEXECSQLBEGINDECLARESECTIONCHARV_NAME32CHARVIN_IP32CHARVIN_DATE32CHARVOUT_DATE32CHARVLAB_IP32INTV_TIMECHARUSERPASS128CHARSQLSTR1000“INSERTINTO“CHARTABLENAME“T_DETAIL_“CHARDAY128EXECSQLENDDECLARESECTIONEXECSQLINCLUDESQLCAVOIDSQLERROREXECSQLWHENEVERSQLERRORCONTINUECOUT0LOOPDBMS_SQLPARSEINSERT_CUR,INSERTINTOT_DAYLOGOUT_DATE,LAB_IP,TIME_DURATIONVALUESV1,V2,V3,DBMS_SQLNATIVEDBMS_SQLCOLUMN_VALUESELECT_CUR,1,LAB_IPDBMS_SQLCOLUMN_VALUESELECT_CUR,2,T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业园供水一体化工程可行性研究报告
- 渔业承包合同书
- 2025年山东钢铁集团有限公司校园招聘模拟试题附带答案详解及参考答案详解1套
- 《地球的运动》教案(第1课时)
- 《正义论》导读(四川大学)
- 历史文化街区在城市更新中的文化遗产保护与城市特色文化空间设计报告
- 2025年餐饮企业食品安全责任保险合同范本
- 2025年度综合性医院医疗废弃物处置与规范化管理合作协议
- 2025年度堰口古镇堡坎加固与景观美化工程总包合同
- 2025年度新型草坪草种培育与全球销售渠道拓展合同
- 2025年云南省中考化学试卷真题(含答案)
- 历史街区活化机制-洞察及研究
- 2025年的基层治理理论与实践考核试卷及答案
- 2025年江西省高考物理真题
- 外贸合伙人合同协议书
- 刑法说课课件
- 2025届高考作文押题预测(8篇)
- 市场营销测试题+答案
- 公安退赃款协议书
- 施工技术管理考核内容及评分标准研究
- 《电磁感应现象解析》课件
评论
0/150
提交评论