【问题标题】:Can Continuous Views be reinitialized efficiently?可以有效地重新初始化连续视图吗?
【发布时间】:2017-10-26 14:29:45
【问题描述】:

我是PipelineDB 的新手,甚至还没有在运行时体验过它(安装待定...)。但我正在阅读文档,我完全感兴趣。

显然,PipelineDB 能够采用基于集合的查询表示并将它们机械地转换为增量表示,以便有效地处理作为连续视图输出函数的存储受限的增量流。

是否还支持将基于集合的查询作为基于集合的查询运行以启动连续视图?在我看来,在创建连续视图后,初始数据将以传统方式计算。此外,由于连续视图可以被截断,它们是否可以被重新填充(从仍然可用的源表)而不拆除它必须允许删除/创建的任何依赖对象?

在我看来,此功能在许多实际场景中都至关重要。一个简单的例子是偶尔刷新以重置舍入误差的漂移,例如分数平均值。

另一个例子是,如果在 PipelineDB 本身中发现并修复了导致数据错误的错误。软件打补丁后,基于数据仍然可用的查询应该重新运行。

无法以这种方式重建完全基于事件流且没有永久存储的连续视图。不确定是否只有部分连接源是短暂的。

我没有在文档中看到这些主题。你能解释一下这些是或不是问题吗?

谢谢!

【问题讨论】:

    标签: pipelinedb


    【解决方案1】:

    来自 PipelineDB 的 Jeff。

    PipelineDB 技术文档的introduction section 涵盖了您问题的主要答案:

    “PipelineDB 可以显着减少需要持久化到磁盘的信息量,因为只存储连续查询的输出。原始数据一旦被需要读取它的连续查询读取,就会被丢弃。”

    虽然连续视图只存储连续查询的输出,但几乎所有使用 PipelineDB 的人都将原始数据存储在 S3 等便宜的地方。 PipelineDB 旨在成为实时分析层,为实时报告应用程序和实时监控和警报系统等提供支持,几乎总是与其他系统一起用于数据基础设施。

    如果您对 PipelineDB 感兴趣,您可能还想查看我们最近推出的名为 Stride 的新实时分析 API 产品。 Stride API 为开发人员提供了连续 SQL 查询、集成存储、窗口查询和实时 webhook 等其他功能的好处,而无需管理任何底层数据基础架构,所有这些都通过一个简单的 HTTP API 实现。

    如果您有任何其他技术问题,您可以随时在我们的 gitter 聊天频道中找到我们的开源用户和开发团队。

    【讨论】:

    • 嗨,杰夫。感谢观看,但我不明白这个答案与问题有何关联。是否有部分问题似乎基于对 pipelinedb 的错误假设,因此难以直接回答?
    • 嗨,Jason,对于这里的延迟回复深表歉意!似乎您在询问基于命中连续视图的流数据构建和维护连续视图的基本方式,即当原始数据命中 CV 时,CV 会更新,原始数据会被永久丢弃。您最初可以通过回填数据一次来“准备”CV,以使它们到达某个起点,并且 CV 出于各种原因确实存储元数据,但由于连续视图是增量更新的并且不存储原始数据,因此它们不同于常规表。
    • 谢谢杰夫。好的,所以 CV 可以用他们的表格和其他 CV 源回填——只要源数据可用——而不是短暂的流。回填操作是否也是增量实施的?还是通过将查询作为基于集合的操作运行来完成回填 - “传统”方式?
    • 然后,假设随着时间的推移,我们的一个聚合中的精度有一些损失——平均很多非常小的数字,这样舍入误差会导致不准确——或者可能在 PipelineDB 中发现并修复了一些错误,导致不准确。是否可以截断并重新填充连续视图,而不必按照依赖顺序删除和重新创建我们的整个依赖树来纠正它们?
    • 回填也是增量完成的。唯一存储在连续视图中的是连续 SQL 查询的输出。对于您的第二个问题,一些用于计算聚合(如平均值)的元数据存储在 CV 的幕后,但如果您想在未来的任何时候重新计算连续视图以解决任何类型的问题,您必须运行原始数据数据通过一个新的连续视图,因为根据定义,填充初始连续视图的原始数据将被丢弃。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多