Hacker News 中文摘要

RSS订阅

dgsh – 有向图Shell -- dgsh – Directed Graph Shell

文章摘要

dgsh是一种基于bash的Unix风格shell,支持构建非线性非均匀操作的数据处理管道,形成有向无环进程图,可多核并行执行以提高吞吐量。它扩展了Unix管道功能,提供多管道等新型进程间通信方式,适用于大数据集和流处理。相关论文发表在IEEE Transactions on Computers期刊上。

文章总结

以下是文章主要内容的重新陈述:

概述

dgsh(发音为/dæɡʃ/)是一种基于bash的Unix风格shell,它允许构建具有非线性、非均匀操作的数据处理管道,形成有向无环进程图(DAG)。这些管道可以利用现有的Unix工具和自定义组件,通常由多个处理器核心并行执行,从而提高处理吞吐量。

核心功能

  1. 多管道(Multipipes)

    • 支持多输入/输出通道的命令连接。例如,comm命令可以处理两个输入通道并生成三个输出通道。
    • 多管道块{{ ... }}将输入流异步传递给块内进程,并将输出流传递到块外。
  2. 存储值(Stored Values)

    • 允许在进程间通过命名缓冲区异步传递数据流的最后记录。
    • 使用dgsh-writevaldgsh-readval实现,支持管道操作或命令替换语法。
  3. 语法扩展

    • 在bash脚本基础上增加多管道块语法,支持异步并行执行。
    • 示例:{{ echo hello & echo world & }} | paste会输出hello world

适配工具

dgsh适配了多个Unix工具以支持多输入/输出通道,例如: - catcmpcommgrepsort等,根据参数动态调整输入/输出通道数量。 - 非过滤类命令(如echodate)在dgsh上下文中自动包装为无输入或单输出。

安装与兼容性

  • 支持系统:Debian、Ubuntu、FreeBSD、Mac OS X(Cygwin移植中)。
  • 依赖工具:GraphViz(用于可视化进程图)、开发工具链(如gcc、make)。
  • 安装步骤
    1. 克隆源码:git clone --recursive https://github.com/dspinellis/dgsh.git
    2. 配置与编译:make config && make
    3. 安装:sudo make install

应用示例

  1. 压缩性能对比
    分析输入数据的类型、大小,并比较xzbzip2gzip的压缩效率。
  2. Git提交统计
    列出按提交次数排序的作者和工作日分布。
  3. 重复文件查找
    通过MD5哈希比对快速定位重复文件。
  4. 并行词频统计
    模拟Hadoop的WordCount,分块处理后合并结果。

学术引用

如需正式介绍或引用,可参考论文:
Diomidis Spinellis and Marios Fragkoulis. Extending Unix Pipelines to DAGs. IEEE Transactions on Computers, 2017.

特点总结

dgsh通过扩展传统Unix管道,支持复杂的数据流图处理,适用于大数据和流处理场景,同时保持与现有工具的兼容性。其核心创新在于多通道通信和并行执行能力,显著提升了处理效率。

评论总结

总结评论内容如下:

  1. 负面评价:
  • 认为项目命名不当或质量存疑: "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)

  1. 技术性质疑:
  • 与动态语言比较的疑问: "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)

  1. 正面建议:
  • 提议作为性能基准: "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)

  1. 相关讨论:
  • 提供历史讨论链接: 给出2017年和2019年的相关讨论链接(dang)

注:所有评论均无评分信息。不同观点保持平衡,负面评价(2条)、技术质疑(2条)、正面建议(2条)和相关讨论(1条)均有涵盖。关键引用保留了中英文对照,并控制了引用数量。