我想用Java存储数百万个时间序列条目(长时间,双倍值)。 (我们的监控系统目前将每个条目存储在一个大型mySQL表中,但性能非常差。)
是否在java中实现了时间序列数据库?
答案 0 :(得分:6)
我希望在这个帖子中看到其他建议。
答案 1 :(得分:3)
由于数据库设计错误,性能不佳。我使用的是mysql,表格有这个布局:
+-------------+--------------------------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------------------------------+------+-----+-------------------+-----------------------------+
| fk_category | smallint(6) | NO | PRI | NULL | |
| method | enum('min','max','avg','sum','none') | NO | PRI | none | |
| time | timestamp | NO | PRI | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| value | float | NO | | NULL | |
| accuracy | tinyint(1) | NO | | 0 | |
+-------------+--------------------------------------+------+-----+-------------------+-----------------------------+
我的错是一个不合理的指数。添加多列主键后,我的所有查询都很快:
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| job | 0 | PRIMARY | 1 | fk_category | A | 18 | NULL | NULL | | BTREE | | |
| job | 0 | PRIMARY | 2 | method | A | 18 | NULL | NULL | | BTREE | | |
| job | 0 | PRIMARY | 3 | time | A | 452509710 | NULL | NULL | | BTREE | | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
感谢您的回答!
答案 2 :(得分:1)
您可以查看KDB。它主要被金融公司用于获取市场时间序列数据。
答案 3 :(得分:0)
您需要对数据做什么以及什么时候?
如果您只是保存以后的值,纯文本文件可能会很好,然后上传到数据库。