我在寻找一个可嵌入的Java库,适用于通用的方式收集传感器数据的实时流 。 我打算用它来建立一个“中心”申请多个不同的传感器流报告,一个基于JVM的服务器上运行(也将使用Clojure的这个)。
关键的东西,它需要有:
- 接口为各种常用的传感器类型/的API。 我很高兴能建立什么,我需要我自己,但如果一些标准的东西散发出来的盒子就好。
- 适用于“软实时”的用法,即相当低时延和低开销。
- 此功能可以监测并在运行时管理数据流,收集统计信息等。
- 下一个合理的许可认证开源,这样我可以与其他代码它集成(Apache的,EPL,BSD,LGPL无一不精)
- 相当活跃的社区/开发者生态系统
有什么在那里适合此配置文件,你可以推荐吗?
1.轮询数据库( 维基百科 )
RRDtool的(缩写轮询数据库工具)旨在处理等的网络带宽,温度,CPU负载等的数据被存储在一个轮询数据库(循环缓冲器)的时间序列数据,因此,系统存储占用空间保持恒定随着时间的推移。
这种方法/ DB格式被广泛使用,稳定和简单。 开箱它允许产生很好的情节:
有Java实现- RRD4J :
RRD4J是时间序列数据的高性能数据记录和绘图系统,实施的RRDTool在Java功能。 它遵循大致相同的逻辑,并使用相同的数据源,存档类型和定义RRDTool的一样。 下Apache 2.0许可开源。
更新
忘记提到有Clojure的RRD API( 例子 )。
2.对于一些实验用的实时数据,我建议考虑了Perst
它体积小,速度快,不够可靠,但以GPLv3发布。 了Perst提供了几个索引算法:
- B树
- T树(为内存数据库优化)
- R树(空间索引)
- 帕特里夏·特里(前缀搜索)
- KD树(多维指标)
- 时间序列(大量的固定大小的时间戳对象)
最后一个适合您的需求非常好。
3. Neo4j的有关系指标
其中,这种方法支付股息一个很好的例子是时间序列数据,在那里我们有表示为每发生关系的读数。
4. Oracle Berkeley数据库Java版
Oracle Berkeley数据库Java版是一个开源的,可嵌入的事务存储完全用Java编写的引擎。 它采用Java环境的充分利用,以简化开发和部署。 Oracle Berkeley数据库Java版的架构提供了两种读密集型和写密集型工作负载非常高的性能和并发性。
建议
给一个尝试RRD4J :
- 这是很简单
- 它提供的剂量相当不错的地块
- 它的Clojure API
- 它支持多个后端,包括Oracle Berkeley数据库Java版
- 它可以存储/详细的可视化数据集
为了收集传感器数据的实时流以下可能有所帮助
你检查LEJOS API的。 这http://lejos.sourceforge.net/nxt/nxj/api/index.html
另外值得一检查甲骨文的Java ME Embedded和目标市场,他们正在解决http://www.unitask.com/oracledaily/2012/10/04/at-the-java-demogrounds-oracle-java-me-embedded-使最互联网的,事情/
可以从下载http://www.oracle.com/technetwork/java/embedded/downloads/javame/index.html
为了存储时间序列数据没有什么比卡桑德拉http://cassandra.apache.org/并回答为什么卡桑德拉参考http://www.datastax.com/why-cassandra
对于从Java访问卡桑德拉参考https://github.com/jmctee/Cassandra-Client-Tutorial这是很有益的,在卡桑德拉运用时间序列的概念分贝参考
http://www.datastax.com/wp-content/uploads/2012/08/C2012-ColumnsandEnoughTime-JohnAkred.pdf