分享

JRobin 简单示例

 pengx 2009-07-23
JRobin 主要用于时间序列数据的储存以及显示。它是RRDTools工具的纯java实现。它采用了与RRDTools同样的逻辑,并且采用同样的数据源,存档类 型,支持各种循环数据库的操作。JRobin给熟悉rrdtools工具但是又想使用纯java语言的人提供了一系列的api来支持循环数据库的操作。
先说一下RrdTools,它是round robin database tools的缩写。循环数据库(round robin database)具有固定的长度,数据库长度不会随着时间增加。数据库的空间是循环使用的,空间用完以后,最初的位置的数据将被新数据覆盖。这就类似一 个循环链表一样,有一个指针指向当前使用的空间,该空间使用完以后,指针自动的移动到下一个位置。
RrdTools数据库用来存储时间序列数据。一般来说,应该是数值类型,但是这也不是绝对的。使用rrdtools可以建立rrd数据库,储存数据,取回数据并且根据数据库中的内容使用gif格式生成图片。
JRobin没有使用任何本地方法以及类库,没有使用runtime.exec(),同时也不需要rrdtools的存在,因此在所有具有java运行环境的系统中都可以使用,具有很好的可移植性。
为了让大家对jrobin有个认识,我们先看一个例子,这个例子来自于jrobin的网站。
假设你在开一辆车,而且每过一定的时间你看了一下里程表,得到了如下的数据,并想根据这些数据计算车的速度。
 12:05  12345 KM
12:10 12357 KM
12:15 12363 KM
12:20 12363 KM
12:25 12363 KM
12:30 12373 KM
12:35 12383 KM
12:40 12393 KM
12:45 12399 KM
12:50 12405 KM
12:55 12411 KM
13:00 12415 KM
13:05 12420 KM
13:10 12422 KM
13:15 12423 KM
我们看一下JRobin来存储,并且显示速度的程序
 package jrobintest;
import org.jrobin.core.*;
import java.io.*;
import org.jrobin.graph.*;
import java.awt.Color;
public class test1 {
public static void main(String[] args) {
    try {
      RrdDef rrdDef = new RrdDef("d:\\test.rrd");
      rrdDef.setStartTime(920804400L);
      rrdDef.addDatasource("speed", "COUNTER", 600, Double.NaN, Double.NaN);
      rrdDef.addArchive("AVERAGE", 0.5, 1, 24);
      rrdDef.addArchive("AVERAGE", 0.5, 6, 10);
      RrdDb rrdDb = new RrdDb(rrdDef);
      Sample sample = rrdDb.createSample();
      sample.setAndUpdate("920804700:12345");
      sample.setAndUpdate("920805000:12357");
      sample.setAndUpdate("920805300:12363");
      sample.setAndUpdate("920805600:12363");
      sample.setAndUpdate("920805900:12363");
      sample.setAndUpdate("920806200:12373");
      sample.setAndUpdate("920806500:12383");
      sample.setAndUpdate("920806800:12393");
      sample.setAndUpdate("920807100:12399");
      sample.setAndUpdate("920807400:12405");
      sample.setAndUpdate("920807700:12411");
      sample.setAndUpdate("920808000:12415");
      sample.setAndUpdate("920808300:12420");
      sample.setAndUpdate("920808600:12422");
      sample.setAndUpdate("920808900:12423");
      rrdDb.close();
      RrdGraphDef graphDef = new RrdGraphDef(920804400L, 920808000L);
      graphDef.datasource("myspeed", "d:\\test.rrd", "speed", "AVERAGE");
      graphDef.line("myspeed", new Color(0xFF, 0, 0), null, 2);
      RrdGraph graph = new RrdGraph(graphDef);
      graph.saveAsGIF("d:\\speed.gif");
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约