技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

使用流水线合并操作

dbmsmysqldata analysis

在 DSS 工作流中,SQL 流水线是一个混合多个后续配方(每个配方使用相同的 SQL 引擎)的过程。然后,可以执行包含这些集成配方(可能是可视化配方和"SQL 查询"配方)的单个作业活动。

通常,SQL 查询将转换为关系代数中的表达式,这是一系列关系运算。如果我们一次执行一个操作,则会产生太多成本,因为我们需要在磁盘上创建临时文件来存储这些临时操作的结果。必须创建大型临时文件并将其存储在磁盘上,但这需要时间,而且通常是不必要的,因为后续过程将立即使用这些文件作为输入。为了减少临时文件的数量,通常的做法是生成与查询中特定操作组合的算法相对应的查询执行代码。

示例

例如,一个具有两个输入文件和一个输出文件的方法可以对输入文件执行 JOIN 以及两个 SELECT 操作,并对结果文件执行最终的 PROJECT 操作,而不是单独执行这些操作中的每一个。我们只需应用该方法并获得一个结果文件,而不是创建四个临时文件。流水线或基于流的处理是用于此的术语。

结论

要执行大量操作,通常的做法是动态生成查询执行代码。查询由创建的代码生成,该代码包含与不同过程相对应的大量算法。在操作之后,将生成结果元组并将其用作其他操作的输入。例如,如果对基础关系进行两个选择操作后跟一个连接操作,则每个 SELECT 操作创建的元组将被输入到流或管道中,并用作连接过程的输入。


相关文章