在 DSS 工作流程中,SQL 管道是一个混合多个后续配方(每个配方都使用相同 SQL 引擎)的过程。然后,可以执行包含这些集成配方(可能是可视配方和“SQL 查询”配方)的单个作业活动。
通常,SQL 查询会转换为关系代数中的表达式,即一系列关系运算。如果我们一次只执行一项操作,则会产生太多成本,因为我们需要在光盘上创建临时文件来存储这些临时操作的结果。必须创建大型临时文件并将其存储在光盘上,但这需要时间并且通常不需要,因为以下过程将立即使用这些文件作为输入。通常的做法是生成与查询中特定操作组合的算法相对应的查询执行代码,以减少临时文件的数量。
示例
例如,一种具有两个输入文件和一个输出文件的方法可以对输入文件执行 JOIN 和两个 SELECT 操作,并对结果文件执行最终的 PROJECT 操作,而不是单独实现这些操作中的每一个。我们不创建四个临时文件,而是应用该方法并仅获得一个结果文件。流水线或基于流的处理是用于此目的的术语。
结论
为了执行大量操作,通常的做法是动态生成查询执行代码。查询由创建的代码生成,该代码包含与不同进程相对应的众多算法。执行操作后,将生成结果元组并将其用作其他操作的输入。例如,如果对基本关系的两个选择操作后跟一个联接操作,则每个 SELECT 操作创建的元组将被馈送到流或管道中并用作联接过程的输入。