
数学执本与率用
循环数据库服务的设计与实现
郭伟
(湖北工业职业技术学院湖北十堰442000)
设计开发
摘要:循环数据库服务(RRDServer)是在原有RRDtool的基础上进行选行效进的循环数据库。改遗后的RRDServer具有快速的索引1、查询能力 RRDServer将原有的RRDtool的醒盘数据库移植到内存中,这样在数据库进行更新的时候,就直接更新内存,从而提高了数据的存储速度。
关键词:循环数据库RRDTool RRDServe
中图分类号:TP311.52 1前言
文献标识码:A
网络流量处理的各类统计结果都具有周期性,如按日、周、月甚至年进行跟踪,这类周期性数据的保存往往采用RRD数据库,RRD 数据库最早是在MRTG项目中提出来的,现在已经成为网络流量处理分析领域的标准存储机制,但标准的RRD数据库是一个简单文件,其操作接口是一组命令行(RRDTool),在ISP大流量的环境下效率较低,并且使用比较烦,需要进行改造。
在改进RRDtool前,首先对RRDtool原有程序进行分析,观察其内部的程序整体结构,在改造时只改造需要改造的部分,同时在添加模块的时候也能够容易,第二步,也是本设计的最重要的部分,那就是分析原有RRDtool的数据库文件模型,累看其RRDtool数据库文件存储数据的格式,以使建立相应的内存模型并将RRDtooI的数据库文件迁移到内存中,最后一步,测试RRDServer的正确性和性能。下面根据上说的顺序分别详细介绍各个步骤地实现过程及其相应的结果。
2RRDtooI系统框架与数据库文件的研究与分析
RRDtool有非常强的功能,其中较为常用的功能有:数据库的创建,数据库文件的索引,数据库文件的更新,根据数据库文件内容进行绘图,将数据库中的数据导出,导人等功能。
RRDtool从数据采集到存储,再到数据图形的现实都有对应的功能,但是对于目前的流量检测系统来说,有许多功能没有用处,所以在该RRDServer实现的时候我们不讨论与该设计设计无关的功能。在此我们只分析与该设计有关的部分,例如数据库的创建,数据的存储、数据的索引,数据库信息的查询等相关信息。
但是最重要的部分,也是本设计最为关键的部分就是分析出 RRDtool是如何存储数据的,就是数据文件的存储形式。这是本设计的最为关键的部份。其体的RRDtoo1数据文件格式的形式及其功能
分析在下面将详细介绍。 3RRDtool系统总体框架
通过RRDtool的使用,Linux下调试器gdb跟踪及相关代码分析得到RRDtool程序椎架,RRDtool根据终端数据的命令行不同的参数将执行相关文件下的特定函数,从而执行相关的数据库操作。例如当输入rrdtoolinfo,/etho,rrdrrdtool将根据改命令行参数 info,执行源文件的rrd_info.c文件中的rrd_info数,该函数去读取磁盘目录为"当前目录"下的etho.rrd的数据库文件头信息,然后将得到的信息输出到终端,从面完成数据库文件信息的读取操作。在该设计中只关注RRDtool某几个模块的实现及其内部构造首先是 RRDtool数据库文件的创建模块,该模块的代码文件为rrd_create, c,该文件中的rrd_createO)完成相关的数据文件的创建。该文件主要完成的数据库文件的创建,这是我们工作的开始,然后是RRDtool数
收稿日期:20160105
文章编号:1007-9416(2016)03-0199-01
据库文件信息索引模块,该模块的代码文件为rrd_fetch.c,在其中 rrd_fetch(完成相关的数据文件的索引,这是我们对RRDtool数据库文件进行分析的开始;最后重要的模块就是数据库更新模块,该模块式本设计的重要组成部分,因为我们改造RRDtoo就是将数据
的物理磁盘更新改称内存更新,这样才能得到该设计的目的。 4RRDtool循环数据库服务详细设计
通过察看RRDtool的源代码并分析相应的程序结构,得出下面分析的结论:RRD文件格式大体分为两部分:一部分为文件头信息,另一部分为数据存储区域。
下面将详细说明这两部分。 4.1文件头信息区
该区域包含一些版本信息和一些与数据存储区相关的一些信息。例如:RRD的版本号、DS数量,DS名称、DS类型、RRA数量 RRA类型、PDP数据区,CDP数据区,最后更新时间,RRA目前更新到的位置等等信息。
4.2数据存储区
该区域存储了实际数据,数据来源于根据在创建RRD文件时 DS的类型及相关RRA定义,并通过相关计算得出存储数据的形式。注意数据源(DS)是存储的实体,面RRA是数据存储的载体,在逻辑上,每个RRA都有所有DS的统计数据。
文件的数据结构:
该RRDtool的静态头部数据中有有几个较为重要的数据成员,在整个程序的运行过程中起着较为重要的作用。如ds_ct,该成员表示RRDtool数据库文件中存在几个数据源,其值是在创建RRD文件的时候获取到的;Ira_cnt表示在该RRDtool数据库文件中存在几个 RRA,该数据值也是在创建RRD文件的时候获取到;dp_step表示 RRDtool每隔多长时间接受一次数据,该数据值也是在创建RRD文件的时候获取到。
该RRDServer在程序启动的时候创建套接字,然后进人循环监听状态,当有客户连接进来时,RRDServer解析从Client发送过来的命令,该命令总体分成3类,分别为:show.get和rrdtool,RRDServer 在接受到Client的命令的时候,先查看命令的开头字符串是上面中的邸一个,然后在解析下面的字符命令,最后再根据解析的结果在
执行相应的程序。 5结语
循环数据库服务应用场合比较特殊,但是这种结构能够有效的降低对存储空间的需求,并提供自动化处理机制,提高数据库建设的质量,使数据库能够获得更加高水平的设计,并且在实际运用当中发挥更加重要的作用。
作者简介:郭伟(1981一)男,陕西兴平人,工程颈士,讲师,研究方向:软件技术、数据库技术。
66