仅仅是凡人的差分数据

2021-06-17 09:02:57

术语 - 免费版本:您使用熟悉的操作写入处理集合的代码,如映射,加入和循环。您在某些输入上运行代码并获得一些输出。然后,当输入更改时,您将更改输出,比从头开始重新计算整个东西更快。 (并且输出将是正确的!)

如果您想了解它是如何工作的,请从文档/ whew.md启动,然后读取lib / dida / core.zig。

Dida是基于差分数据流量的大量,并通过使用差分数据流作为实现后端的经验来了解。

更容易使用和理解。 (差分数据流旨在尽可能灵活,可扩展和可编译,这对研究平台有意义,但可以使代码非常难以遵循。)暂时旨在保持3kloc下的核心。 (对于比较数据流和差异数据流量,总计14-16kloc,具体取决于您计算的组件)。

只能在差分数据流中支持特征时才实现及时的数据流。

只支持作为整数的产品的时间戳。 (差分数据流支持时间戳,该时间戳是可恰当的格子,但是我已经看到了任何可以用作整数的产品的任何用途。)

使用更简单的进度跟踪算法,该算法不需要路径摘要,每个节点的多个输出或节点内的内部边缘。

将所有状态存储在单个平坦结构中与数据流相关的所有状态,以便于内省。

更好的支持用作解释器后端和绑定到其他语言。将API拆分为数据中心的运行时检查的核心,以及每个绑定语言强类型糖,有助于使数据流逐构造。 (差分数据流API提供出色的编译时间安全,但很难将FFI映射到具有不同类型系统的语言。)

不要依赖绩效专业化,因为它需要编译,也没有工作良好的交叉语言。这将需要重新思考,例如如何通过批量提升函数。

当大小仅在运行时已知时,支持在索引中存储数据。 (差分数据流可以支持这一点,但实质化目前在单独的堆分配中将每行存储每个行,即使行都是固定宽度类型,也可以在单独的堆分配中存储。)

支持参考计数值而不为非参考计数值添加开销。例如,例如固定JavaScript对象所需的是,但也有助于减少字符串重型数据流中的内存使用情况。 (Materialize可以参考 - 计数EG字符串,但是将为逐行的DROP ichs支付所有数据,而不仅仅是字符串数据。)

支持嵌入另一个事件循环中。 (差分数据流可以一次运行一步,但每个步骤的工作量不受限制,因此它可以阻止任意数量的事件循环。)

支持CPU和内存限制。这使得安全地支持实时评估更容易,例如在跟踪仪表板中嵌入查询Repl。

为每个组件提供交互式图形调试器。 (许多投诉我听到了关于差分数据流的差价是关于努力理解的地方存储的地方,当事情发生时,写入计算影响的方式有多么不同的方式。调试器可以直接回答这个问题,但我怀疑还通过教授有用的心理表现来帮助。)

写一本简短的书,它使用调试器来解释差分数据流理论和此实现的细节。 (差分数据流损失了与有限的空间有限的无数篇论文的理论,每个都描述了不同版本的算法。)

核心调度确保Dowork的运行时间大致界限强制执行最大批量大小和暂停操作,这些批次会产生多个批次

测试测试该试验该随机图无法验证或没有OrderPointStamps(开始,结束)!= .lt的路径

添加调试模式验证到进度跟踪器,分片扫描数据并验证没有指针是别名的(例如,不同索引中的行,时间戳)