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

标签 java real-time sensors data-stream

<分区>

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

它需要具备的关键东西:

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

有什么适合您推荐的资料吗?

最佳答案

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

RRDtool (acronym for round-robin database tool) aims to handle time-series data like network bandwidth, temperatures, CPU load, etc. The data are stored in a round-robin database (circular buffer), thus the system storage footprint remains constant over time.

这种方法/数据库格式被广泛使用,足够稳定和简单。开箱即用,它可以生成漂亮的图:

enter image description here

有 Java 实现 -- RRD4J :

RRD4J is a high performance data logging and graphing system for time series data, implementing RRDTool's functionality in Java. It follows much of the same logic and uses the same data sources, archive types and definitions as RRDTool does. Open Source under Apache 2.0 License.

更新

忘记提及 Clojure RRD API ( examples )。

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

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

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

最后一个很符合你的需求。

<强>3。 Neo4JRelationship indexes

A good example where this approach pays dividends is in time series data, where we have readings represented as a relationship per occurrence.

<强>4。 Oracle Berkeley DB Java Edition

Oracle Berkeley DB Java Edition is an open source, embeddable, transactional storage engine written entirely in Java. It takes full advantage of the Java environment to simplify development and deployment. The architecture of Oracle Berkeley DB Java Edition supports very high performance and concurrency for both read-intensive and write-intensive workloads.

建议

尝试RRD4J :

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

enter image description here

关于用于传感器数据收集的基于 Java 的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765053/

相关文章:

java - 多次运行TestNG测试

java - 如何在java中使用正则表达式删除字符串的一部分

silverlight - 如何构建实时流数据 silverlight 应用程序

c - parent 应该收到有关孙子工作完成的信息

.net - C++与虚拟机语言在高频财务中的性能

java - 使用 Android 传感器测量墙平面和地板平面之间的角度

java - 我可以从 native c++ 检测 Java 版本吗

java - Eclipse tycho 将版本更新为 svn 修订版

go - 读取 RPi 的 GPIO 上的温度传感器值。脚步

java - 在Android上,当 Activity 被销毁时是否有必要删除传感器监听器?