数据库和大型时间序列-下采样-OpenTSDB InfluxDB谷歌数据流



我有一个项目,我们每秒对"大量"数据进行采样。一些操作以过滤等方式执行,然后需要以秒、分钟、小时或天的间隔访问。

我们目前使用基于SQL的系统和更新不同表格(日平均值、小时平均值等)的软件来完成这一过程

我们目前正在寻找其他解决方案是否能满足我们的需求,我找到了几个解决方案,如开放tsdb、谷歌云数据流和influxdb

所有这些似乎都满足了时间序列的需求,但很难获得有关内部的信息。opentsdb确实提供了下采样,但没有明确说明如何进行。

需要的是,因为我们可以查询大量数据,例如一年,如果DB在查询时向下采样,并且不是预先计算的,那么可能需要很长时间。

同样,当添加任何"延迟"的数据点时,需要"更新"下采样。

最重要的是,在数据到达时,我们会执行一些处理(outliner filter、calibration),这些操作不应该写在磁盘上,可以使用一些解决方案,比如基于Ram的DB,但可能存在一些更优雅的解决方案,可以与以前的规范一起工作。

我相信这个应用程序不是什么"奢侈"的东西,它必须存在一些工具来执行这一点,我想到的是股票行情、监控等等。

也许你可能对我应该关注的技术/DB有一些很好的建议。

谢谢。

使用Google Cloud Dataflow可以非常容易地完成此类用例。数据预处理和优化查询是云数据流的主要场景之一。

我们没有提供内置的"向下采样"原语,但您可以轻松地编写这样的数据转换。如果您只是想删除不必要的数据,那么可以使用ParDo。对于非常简单的情况,Filter.byPredicate原语可以更简单。

或者,如果您正在考虑将多个数据点合并为一个数据点,一种常见的模式是打开PCollection窗口,根据时间戳对其进行细分。然后,您可以使用Combine来合并每个窗口的元素。

您提到的其他处理可以很容易地附加到同一个数据处理管道中。

就比较而言,云数据流并不能真正与数据库相媲美。数据库主要是具有处理功能的存储解决方案。云数据流主要是一种数据处理解决方案,它可以连接到其他产品以满足其存储需求。您应该期望基于云数据流的解决方案更具可扩展性和灵活性,但这也会带来更高的总体成本。

数据流用于数据进入时的内联处理。如果您只对摘要和计算感兴趣,数据流是您的最佳选择。

如果你以后想获取这些数据,并通过时间(时间序列)访问它,比如图形,那么InfluxDB是一个很好的解决方案,尽管它对可以包含的数据量有限制。

如果您可以在大数据集上使用2-25秒的延迟,那么您可以将BigQuery与Dataflow一起使用。数据流将接收、汇总和处理您的数字。然后将结果提交到BigQuery中。提示,将您的表格除以DAYS,以降低成本并使重新计算更加容易。

我们每晚处理187GB的数据。这相当于约11512个设备的478439634个单独数据点(每个数据点具有约15个度量,每个设备平均43000行)。

BigQuery的秘密:限制您的列选择。如果你能帮助的话,永远不要做选择。

;)

最新更新