1. 循环数据库(维基百科)
RRDtool(循环数据库工具的缩写)旨在处理时间序列数据,如网络带宽、温度、CPU 负载等。数据存储在循环数据库(循环缓冲区)中,因此系统存储空间保持不变随着时间的推移。
这种方法/数据库格式被广泛使用,足够稳定和简单。开箱即用,它可以生成漂亮的图:
有 Java 实现——RRD4J:
RRD4J 是用于时间序列数据的高性能数据记录和图形系统,在 Java 中实现了 RRDTool 的功能。它遵循许多相同的逻辑,并使用与 RRDTool 相同的数据源、存档类型和定义。在 Apache 2.0 许可下开源。
更新
忘记提及 Clojure RRD API(示例)。
2. 对于一些实时数据的实验,我建议考虑Perst
它体积小、速度快且足够可靠,但在 GPLv3 下分发。Perst 提供了几种索引算法:
- B树
- T-Tree(针对内存数据库进行了优化)
- R-Tree(空间索引)
- Patricia Trie(前缀搜索)
- KD-Tree(多维索引)
- 时间序列(带有时间戳的大量固定大小的对象)
最后一个非常适合您的需求。
3.带有关系索引的Neo4J
这种方法带来好处的一个很好的例子是时间序列数据,其中我们将读数表示为每次出现的关系。
4. Oracle Berkeley DB Java 版
Oracle Berkeley DB Java 版是一个完全用 Java 编写的开源、可嵌入的事务存储引擎。它充分利用 Java 环境来简化开发和部署。Oracle Berkeley DB Java 版的体系结构支持读取密集型和写入密集型工作负载的非常高的性能和并发性。
建议
试试RRD4J:
- 这很简单
- 它提供了相当不错的情节
- 它有 Clojure API
- 它支持多个后端,包括Oracle Berkeley DB Java 版
- 它可以存储/可视化详细的数据集