使用 TPL-Dataflow 进行聚合和连接(内、外、左……)?

Posted

技术标签:

【中文标题】使用 TPL-Dataflow 进行聚合和连接(内、外、左……)?【英文标题】:Aggregation and Joins (Inner, Outer, Left, ...) with TPL-Dataflow? 【发布时间】:2018-03-15 02:31:32 【问题描述】:

有没有比使用BatchBlock 缓冲所有项目直到完成、将它们作为集合发出然后使用转换块进行实际聚合的更好方法来实现 TPL-Dataflow 网格中的聚合等功能?

同样,有没有其他方法可以在不使用BatchedJoinBlock 缓冲两个数据源的所有项目的情况下对两个数据集进行内/外/左/右连接,将它们作为两个集合的元组发出,然后执行实际加入一个变换块?

【问题讨论】:

【参考方案1】:

TPL Dataflow 中没有这种开箱即用的机制,因为聚合和连接操作与 flowing 无关,它们与查询数据有关。

但是,作为blocks are perfectly fit with RX library,您可以在聚合数据时使用Join Patterns in Rx 范例。

更多相关链接:

Aggregation 在Rx Reactive Extensions for .NET (Rx): Take action once all events are completed Guide to System.Reactive.Joins

【讨论】:

所以我想分组也是一样的吗? 不一样,因为 Rx 不是数据流库的一部分,但足够接近。

以上是关于使用 TPL-Dataflow 进行聚合和连接(内、外、左……)?的主要内容,如果未能解决你的问题,请参考以下文章

TPL-Dataflow 是不是适用于高并发应用程序?

结合左外连接和内连接 + 聚合函数 - 空结果集问题

上)

上)

上)

OSPF发布聚合路由