是否有强大的时间序列数据库系统?

时间:2012-01-11 08:45:55

标签: database performance time-series

在多个项目中,我们必须存储,汇总,评估简单的测量值。一行通常由时间戳,值和值的一些属性组成。在某些应用程序中,我们希望每秒存储1000个值以及更多值。这些值不仅必须插入,而且还必须以相同的速率删除,因为值的生命周期限制在一年左右(在不同的聚合步骤中,我们不会存储整年的1000 / s)。

到目前为止,我们已经开发出不同的解决方案。一个基于Firebird,一个基于Oracle,另一个基于一些自制存储机制。但这些都不是非常令人满意的解决方案。

两种RDBMS解决方案都无法处理所需的数据流。除此之外,传递值的应用程序(例如设备驱动程序)不能轻易附加到数据库,插入语句很麻烦。最后,虽然强烈需要具有数据的SQL接口,但典型的评估很难在SQL中制定并且执行速度慢。例如。在上个月的所有测量中,每15分钟找到一个带有时间戳的最大值。

自制解决方案可以处理插入速率,并且具有客户友好的API,但它没有像查询语言那样,并且不能通过某些标准接口用于其他应用程序,例如报告。

我梦想中的最佳解决方案是数据库系统:

  • 有一个非常快速插入的API
  • 能够以相同的速度删除/截断值
  • 提供标准SQL接口,具有对典型时间序列数据的特定支持

您是否知道某些数据库接近这些要求,或者您是否会以不同的方式解决问题?

6 个答案:

答案 0 :(得分:41)

其他大多数答案似乎都提到了基于SQL的数据库。基于NoSQL的数据库在这种情况下要优越得多。

一些开源时间序列数据库:

基于云的:

答案 1 :(得分:8)

Influxdb ::一个没有外部依赖关系的开源分布式时间序列数据库。

答案 2 :(得分:2)

考虑使用Informix DataBlade。

的IBM TimeSeries Dynamic Server

然而,这是您正在使用的极端数据速率。 (不完全是欧洲核子研究中心的亚原子物理学,但是朝着那个大方向发展。)


公平披露:我在Informix DBMS上为IBM工作,但不是在TimeSeries DataBlade本身。

答案 3 :(得分:1)

答案 4 :(得分:1)

您可以尝试使用HDF5获取时间序列数据。这种应用程序非常快。

答案 5 :(得分:0)

正如Jonathan Leffler所说,您应该尝试使用Informix Timeseries功能。它包含在所有版本的Informix中,不收取额外费用。您可以查看它支持的TimeSeries函数:

IBM Informix Time series SQL routines

您可以通过sql函数或虚拟视图接口访问数据,甚至可以插入到视图中。