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

在多个项目中,我们必须存储,汇总和评估简单的测量值。 一行典型地由时间戳,值和一些属性组成。 在一些应用程序中,我们希望每秒存储1000个值。 这些值不仅要插入,而且要以相同的速率删除,因为值的使用期限限制在一年左右(在不同的汇总步骤中,我们不存储全年的1000 / s)。

到现在为止,我们已经开发出不同的解决scheme 一个基于Firebird,一个基于Oracle,一个基于自制的存储机制。 但是这些都不是很令人满意的解决scheme。

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

自制的解决scheme可以处理插入率,并有一个客户端友好的API来做到这一点,但它不像查询语言,也不能被其他应用程序通过某些标准接口使用,例如报告。

我梦中最好的解决scheme是数据库系统:

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

你知道有些数据库接近这些要求,或者你会以不同的方式处理这个问题吗?

大多数其他答案似乎提到基于SQL的数据库。 基于NoSQL的数据库在这种事情上远远胜于。

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

基于云计算的:

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