我正在寻找一个适用于以通用方式收集实时传感器数据流的可嵌入Java库。我计划使用它来开发一个“集线器”应用程序,用于报告在基于JVM的服务器上运行的多个不同的传感器流(也将使用Clojure)。
需要的关键事项:
是否有适合此配置文件的内容可以推荐?
答案 0 :(得分:13)
<强> 1。循环数据库(wikipedia)
RRDtool(循环数据库工具的首字母缩写)旨在处理 时间序列数据,如网络带宽,温度,CPU负载等。 因此,数据存储在循环数据库(循环缓冲区)中 系统存储空间随着时间的推移保持不变。
这种方法/ DB格式被广泛使用,稳定且简单。开箱即用它可以生成漂亮的图:
有Java实现 - RRD4J:
RRD4J是一款适用于时间的高性能数据记录和绘图系统 系列数据,在Java中实现RRDTool的功能。它跟随 大多数相同的逻辑并使用相同的数据源,存档类型 和RRDTool的定义一样。 Apache 2.0许可下的开源。
<强>更新强>
忘了提一下Clojure RRD API(examples)。
<强> 2。对于使用实时数据的一些实验,我建议考虑Perst
它足够小,快速和可靠,但在GPLv3下分发。 Perst提供了几种索引算法:
最后一个非常适合您的需求。
第3。 Neo4J Relationship indexes
这种方法支付股息的一个很好的例子是时间序列 数据,我们的读数表示为每个关系 发生。
<强> 4。 Oracle Berkeley DB Java Edition
Oracle Berkeley DB Java版是一个可嵌入的开源软件, 事务存储引擎完全用Java编写。它需要满员 Java环境的优点是简化开发和 部署。 Oracle Berkeley DB Java版的体系结构 支持读取密集型的非常高的性能和并发性 和写密集型工作负载。
<强>建议强>
尝试RRD4J:
答案 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