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

mik*_*era 12 java real-time sensor data-stream

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

需要关键的事情:

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

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

Ren*_*nov 13

1.循环数据库(维基百科)

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

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

在此输入图像描述

有Java实现 - RRD4J:

RRD4J是一个用于时间序列数据的高性能数据记录和绘图系统,在Java中实现RRDTool的功能.它遵循大部分相同的逻辑,并使用与RRDTool相同的数据源,存档类型和定义.Apache 2.0许可下的开源.

更新

忘了提一下有Clojure RRD API(例子).

对于一些实时数据的实验,我建议考虑使用Perst

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

  1. B树
  2. T-Tree(针对内存数据库进行了优化)
  3. R树(空间索引)
  4. Patricia Trie(前缀搜索)
  5. KD-Tree(多维索引)
  6. 时间序列(大量带时间戳的固定大小对象)

最后一个非常适合您的需求.

3. Neo4J关系索引

这种方法支付股息的一个很好的例子是时间序列数据,其中我们将读数表示为每次出现的关系.

4. Oracle Berkeley DB Java版

Oracle Berkeley DB Java版是一个完全用Java编写的开源,可嵌入,事务存储引擎.它充分利用Java环境来简化开发和部署.Oracle Berkeley DB Java版的体系结构支持读密集型和写密集型工作负载的高性能和并发性.

建议

试试RRD4J:

  1. 这很简单
  2. 它剂量提供了相当不错的情节
  3. 它有Clojure API
  4. 它支持几个后端,包括Oracle Berkeley DB Java版
  5. 它可以存储/可视化详细的数据集

在此输入图像描述