基于Java的传感器数据收集库

时间:2013-02-08 03:06:36

标签: java real-time sensor data-stream

我正在寻找一个适用于以通用方式收集实时传感器数据流的可嵌入Java库。我计划使用它来开发一个“集线器”应用程序,用于报告在基于JVM的服务器上运行的多个不同的传感器流(也将使用Clojure)。

需要的关键事项:

  • 各种常见传感器类型/ API的接口。我很高兴能够自己构建我需要的东西,但是如果开箱即用,可能会很好。
  • 适用于“软实时”使用,即相当低的延迟和低开销。
  • 能够在运行时监控和管理流,收集统计信息等。
  • 在合理许可的许可下开源,以便我可以将其与其他代码集成(Apache,EPL,BSD,LGPL都很好)
  • 一个相当活跃的社区/开发者生态系统

是否有适合此配置文件的内容可以推荐?

2 个答案:

答案 0 :(得分:13)

<强> 1。循环数据库(wikipedia

  

RRDtool(循环数据库工具的首字母缩写)旨在处理   时间序列数据,如网络带宽,温度,CPU负载等。   因此,数据存储在循环数据库(循环缓冲区)中   系统存储空间随着时间的推移保持不变。

这种方法/ DB格式被广泛使用,稳定且简单。开箱即用它可以生成漂亮的图:

enter image description here

有Java实现 - RRD4J

  

RRD4J是一款适用于时间的高性能数据记录和绘图系统   系列数据,在Java中实现RRDTool的功能。它跟随   大多数相同的逻辑并使用相同的数据源,存档类型   和RRDTool的定义一样。 Apache 2.0许可下的开源。

<强>更新

忘了提一下Clojure RRD API(examples)。

<强> 2。对于使用实时数据的一些实验,我建议考虑Perst

它足够小,快速和可靠,但在GPLv3下分发。 Perst提供了几种索引算法:

  1. B树
  2. T-Tree(针对内存数据库进行了优化)
  3. R-Tree(空间索引)
  4. Patricia Trie(前缀搜索)
  5. KD-Tree(多维索引)
  6. 时间序列(大量固定大小的带时间戳的对象)
  7. 最后一个非常适合您的需求。

    第3。 Neo4J Relationship indexes

      

    这种方法支付股息的一个很好的例子是时间序列   数据,我们的读数表示为每个关系   发生。

    <强> 4。 Oracle Berkeley DB Java Edition

      

    Oracle Berkeley DB Java版是一个可嵌入的开源软件,   事务存储引擎完全用Java编写。它需要满员   Java环境的优点是简化开发和   部署。 Oracle Berkeley DB Java版的体系结构   支持读取密集型的非常高的性能和并发性   和写密集型工作负载。

    <强>建议

    尝试RRD4J

    1. 很简单
    2. 它提供了相当不错的情节
    3. 它有Clojure API
    4. 它支持多个后端,包括Oracle Berkeley DB Java Edition
    5. 它可以存储/可视化详细数据集
    6. enter image description here

答案 1 :(得分:2)

收集传感器数据的实时流可能会有所帮助

你检查过LeJos API吗?这http://lejos.sourceforge.net/nxt/nxj/api/index.html

还值得检查Oracle Java ME Embedded及其正在解决的目标市场http://www.unitask.com/oracledaily/2012/10/04/at-the-java-demogrounds-oracle-java-me-embedded-enables-the-internet-of-things/

可以从http://www.oracle.com/technetwork/java/embedded/downloads/javame/index.html

下载

对于存储时间序列数据,没有什么能比cassandra http://cassandra.apache.org/更好,并回答为什么cassandra会参考http://www.datastax.com/why-cassandra

要从Java访问Cassandra,请参阅https://github.com/jmctee/Cassandra-Client-Tutorial 它非常有用,并且在cassandra db中应用时间序列概念 http://www.datastax.com/wp-content/uploads/2012/08/C2012-ColumnsandEnoughTime-JohnAkred.pdf