是否有一个强大的时间序列数据库系统?
在多个项目中,我们必须存储,汇总和评估简单的测量值。 一行典型地由时间戳,值和一些属性组成。 在一些应用程序中,我们希望每秒存储1000个值。 这些值不仅要插入,而且要以相同的速率删除,因为值的使用期限限制在一年左右(在不同的汇总步骤中,我们不存储全年的1000 / s)。
到现在为止,我们已经开发出不同的解决scheme 一个基于Firebird,一个基于Oracle,一个基于自制的存储机制。 但是这些都不是很令人满意的解决scheme。
这两种RDBMS解决scheme都无法处理所需的数据stream。 除此之外,传递值的应用程序(例如设备驱动程序)不能轻易地附加到数据库,插入语句很麻烦。 最后,强烈希望有一个SQL接口的数据,典型的评估是很难在SQL中制定和执行速度慢。 例如,在上个月的所有测量中,每15分钟find一个带有时间戳的最大值。
自制的解决scheme可以处理插入率,并有一个客户端友好的API来做到这一点,但它不像查询语言,也不能被其他应用程序通过某些标准接口使用,例如报告。
我梦中最好的解决scheme是数据库系统:
- 有一个非常快速的插入API
- 能够以相同的速度删除/截断值
- 为典型的时间序列数据提供了一个标准的SQL接口
你知道有些数据库接近这些要求,或者你会以不同的方式处理这个问题吗?
大多数其他答案似乎提到基于SQL的数据库。 基于NoSQL的数据库在这种事情上远远胜于。
一些开源时间序列数据库:
- https://prometheus.io – 监测系统和时间序列数据库
- http://influxdb.com/ – 没有外部依赖的时间序列数据库(只有基本服务器是开源的)
- http://square.github.io/cube/ – 写在MongoDB的 ontop上
- http://opentsdb.net/ – 写在Apache HBase之上
- https://github.com/kairosdb/kairosdb – 重写OpenTSDB,也可以使用Cassandra而不是Hadoop
- http://www.gocircuit.org/vena.html – 使用Go电路编写OpenTSDB替代品的教程
- https://github.com/rackerlabs/blueflood – 基于Cassandra
- https://github.com/druid-io/druid – 面向列和hadoop的分布式数据存储
基于云计算的:
influxdb ::一个开源的分布式时间序列数据库,没有外部依赖。
考虑带有TimeSeries DataBlade的IBM Informix Dynamic Server。
然而,这是你正在使用的极端数据速率。 (不完全符合CERN的亚primefaces物理学,而是朝着这个大方向前进。)
公平的披露 :我在IBM Informix DBMS上工作,但本身不在TimeSeries DataBlade上。
SQL Server StreamInsight
Microsoft StreamInsight BOL
您可以尝试HDF5时间序列数据。 这种应用程序的速度非常快。
正如Jonathan Leffler所说,您应该尝试使用Informix Timeseriesfunction。 它包含在所有版本的Informix中,不收取额外费用。 您可以看看它支持的TimeSeriesfunction:
IBM Informix时间系列SQL例程
您可以通过sql函数或虚拟视图接口访问数据,甚至可以插入到视图中。
只是分开时间,在MySQL基本表中示例:table_name归档表按月份:table_name_2011_01,… table_name_2011_11