database 有没有强大的时间序列数据数据库系统?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/8816429/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 08:25:42  来源:igfitidea点击:

Is there a powerful database system for time series data?

databaseperformancetime-series

提问by Kit Fisto

In multiple projects we have to store, aggregate, evaluate simple measurement values. One row typcially consists of a time stamp, a value and some attributes to the value. In some applications we would like to store 1000 values per second and more. These values must not only be inserted but also deleted at the same rate, since the lifetime of a value is restricted to a year or so (in different aggregation steps, we do not store 1000/s for the whole year).

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

Until now, we have developped different solutions. One based on Firebird, one on Oracle and one on some self-made storage mechanism. But none of these are very satisfying solutions.

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

Both RDBMS solutions cannot handle the desired data flow. Besides that, the applications that deliver the values (e.g. device drivers) cannot be easily attached to databases, the insert statements are cumbersome. And finally, while having an SQL interface to the data is strongly desired, typical evaluations are hard to formulate in SQL and slow in the execution. E.g. find the maximum value with time stamp per 15 minutes for all measurements during the last month.

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

The self-made solution can handle the insertion rate and has a client-friendly API to do it, but it has nothing like a query language and cannot be used by other applications via some standard interface e.g. for reporting.

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

The best solution in my dreams would be a database system that:

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

  • has an API for very fast insertion
  • is able to remove/truncate the values in the same speed
  • provides a standard SQL interface with specific support for typical time series data
  • 有一个用于非常快速插入的 API
  • 能够以相同的速度删除/截断值
  • 提供标准 SQL 接口,特别支持典型的时间序列数据

Do you know some database that comes near those requirements or would you approach the problem in a different way?

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

采纳答案by Joakim

Most other answers seem to mention SQL based databases. NoSQL based databases are far superior at this kind of thing.

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

Some Open source time-series databases:

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

Cloud-based:

基于云:

回答by A.N.

influxdb :: An open-source distributed time series database with no external dependencies.

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

回答by Jonathan Leffler

Consider IBM InformixDynamic Server with the TimeSeriesDataBlade.

考虑带有TimeSeriesDataBlade 的IBM InformixDynamic Server 。

That is, however, an extreme data rate that you are working with. (Not quite up to sub-atomic physics at CERN, but headed in that general direction.)

但是,这是您正在使用的极端数据速率。(不太符合欧洲核子研究中心的亚原子物理学,但朝着这个大方向前进。)



Fair disclosure: I work for IBM on the Informix DBMS, though not on the TimeSeries DataBlade per se.

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

回答by shoonya

You can try HDF5 for time series data. It is extremely fast for such applications.

对于时间序列数据,您可以尝试使用 HDF5。对于此类应用程序,速度非常快。

回答by GeorgeStone

As Jonathan Leffler said, you should try Informix Timeseries feature. It is included in all editions of Informix at no additional charge. You can take a look at the TimeSeries functions it supports:

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

IBM Informix Time series SQL routines

IBM Informix 时间序列 SQL 例程

You can access the data through sql functions or virtual view interfaces, you can even insert into the view.

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