文章摘要
dgsh是一种基于bash的Unix风格shell,支持构建非线性非均匀操作的数据处理管道,形成有向无环进程图,可多核并行执行以提高吞吐量。它扩展了Unix管道功能,提供多管道等新型进程间通信方式,适用于大数据集和流处理。相关论文发表在IEEE Transactions on Computers期刊上。
文章总结
以下是文章主要内容的重新陈述:
概述
dgsh(发音为/dæɡʃ/)是一种基于bash的Unix风格shell,它允许构建具有非线性、非均匀操作的数据处理管道,形成有向无环进程图(DAG)。这些管道可以利用现有的Unix工具和自定义组件,通常由多个处理器核心并行执行,从而提高处理吞吐量。
核心功能
多管道(Multipipes)
- 支持多输入/输出通道的命令连接。例如,
comm命令可以处理两个输入通道并生成三个输出通道。 - 多管道块
{{ ... }}将输入流异步传递给块内进程,并将输出流传递到块外。
- 支持多输入/输出通道的命令连接。例如,
存储值(Stored Values)
- 允许在进程间通过命名缓冲区异步传递数据流的最后记录。
- 使用
dgsh-writeval和dgsh-readval实现,支持管道操作或命令替换语法。
语法扩展
- 在bash脚本基础上增加多管道块语法,支持异步并行执行。
- 示例:
{{ echo hello & echo world & }} | paste会输出hello world。
适配工具
dgsh适配了多个Unix工具以支持多输入/输出通道,例如:
- cat、cmp、comm、grep、sort等,根据参数动态调整输入/输出通道数量。
- 非过滤类命令(如echo、date)在dgsh上下文中自动包装为无输入或单输出。
安装与兼容性
- 支持系统:Debian、Ubuntu、FreeBSD、Mac OS X(Cygwin移植中)。
- 依赖工具:GraphViz(用于可视化进程图)、开发工具链(如gcc、make)。
- 安装步骤:
- 克隆源码:
git clone --recursive https://github.com/dspinellis/dgsh.git - 配置与编译:
make config && make - 安装:
sudo make install
- 克隆源码:
应用示例
- 压缩性能对比
分析输入数据的类型、大小,并比较xz、bzip2、gzip的压缩效率。 - Git提交统计
列出按提交次数排序的作者和工作日分布。 - 重复文件查找
通过MD5哈希比对快速定位重复文件。 - 并行词频统计
模拟Hadoop的WordCount,分块处理后合并结果。
学术引用
如需正式介绍或引用,可参考论文:
Diomidis Spinellis and Marios Fragkoulis. Extending Unix Pipelines to DAGs. IEEE Transactions on Computers, 2017.
特点总结
dgsh通过扩展传统Unix管道,支持复杂的数据流图处理,适用于大数据和流处理场景,同时保持与现有工具的兼容性。其核心创新在于多通道通信和并行执行能力,显著提升了处理效率。
评论总结
总结评论内容如下:
- 负面评价:
认为项目命名不当或质量存疑: "Hello. In English this makes me think of the phrase 'dog shit'"(uncletaco)
认为语法过时: "By today's standards, the syntax feels clunky and dated"(esafak) "建议现代shell如nushell借鉴这些思想"(esafak)
- 技术性质疑:
与动态语言比较的疑问: "wondering how it compares to just using a dynamic language like Python"(jimbokun) "Curious how the line count to express the same tasks would come out"(jimbokun)
对DAG设计理念的质疑: "Why cant it be cyclical with exit conditions?"(byearthithatius)
- 正面建议:
提议作为性能基准: "A solution to the One Billion Row Challenge written in dgsh would be interesting"(politician)
建议现代shell借鉴: "like nushell and elvish copy these ideas...in a more modern way"(esafak)
- 相关讨论:
- 提供历史讨论链接: 给出2017年和2019年的相关讨论链接(dang)
注:所有评论均无评分信息。不同观点保持平衡,负面评价(2条)、技术质疑(2条)、正面建议(2条)和相关讨论(1条)均有涵盖。关键引用保留了中英文对照,并控制了引用数量。