Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

6年前关闭。



Improve this question




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

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

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

自制的解决方案可以处理插入率并具有易于使用的客户端API,但它没有查询语言那样的功能,并且无法通过某些标准接口(interface)(例如,用于报告。

我梦dream以求的最佳解决方案是一个数据库系统,该数据库系统:
  • 有一个用于快速插入的API
  • 能够以相同的速度
  • 删除/截断值
  • 提供了标准的SQL接口(interface),对典型的时间序列数据提供了特定的支持

  • 您是否知道一些符合这些要求的数据库,还是会以其他方式解决该问题?

    最佳答案

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

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

  • https://prometheus.io-监视系统和时间序列数据库
  • http://influxdb.com/-没有外部依赖性的时间序列数据库(只有基本服务器是开源的)
  • http://square.github.io/cube/-在MongoDB之上书写
  • http://opentsdb.net/-写在Apache HBase之上
  • https://github.com/kairosdb/kairosdb-OpenTSDB的重写,它还允许使用Cassandra而不是Hadoop
  • http://www.gocircuit.org/vena.html-有关使用Go-circuits
  • 编写OpenTSDB替代品的教程
  • https://github.com/rackerlabs/blueflood-基于Cassandra
  • https://github.com/druid-io/druid-基于列和基于hadoop的distributed data store

  • 基于云的:
  • https://www.tempoiq.com
  • 09-06 07:59
    查看更多