我工作的公司有很多“复杂”的基于文件的批处理过程,文件序列如下:
每个步骤可能需要花费数小时才能运行(文件可能包含数十亿行数据)。同时,它与GNU Makefile融合在一起,其中的部分如下:
fileC:fileD run-analysis $ ^> $ @
Makefile对于对步骤之间的依赖关系进行建模非常有用,并且允许在某个步骤之后重复所有内容(如果步骤出现问题,或者启发式更改等等)。
使用Makefiles总是对我不好,因为它们用于构建软件,而不是运行批处理。此外,Makefile不提供任何形式的测试框架。
我的问题是,如何协调像这些大型序列的大型操作?
答案 0 :(得分:6)
Makefile可用于building software 但是,它们并不局限于那种活动。
Makefiles can help sequence many things。
哪个includes test frameworks。
您是否使用过基于Makefile的构建,测试,安装顺序?
有tools to make Makefiles!
以下是一些用途,
stackoverflow中的其他引用,
答案 1 :(得分:4)
Makefiles实际上非常适合这类事情并且被广泛使用。它们可以用于涉及依赖性跟踪的任何事情(我听说过关于作为makefile实现的专家系统的轶事)。 Gnu make可以并行执行多个作业。
您不应该对makefile感兴趣,因为替代方案是企业调度工具,例如Control-M。这些工具是:
更复杂,更复杂
非常贵
相当不透明,比makefile更难测试
政治上难以在本地计算机上进行设置,因此您可以对其进行测试。
坚持使用makefile,除非你有非常的理由不这样做。如果您拥有数百或数千个异构系统的大型安装,企业系统管理工具将是一个胜利。除非你按照这种规模进行操作,否则有充分的理由不使用那种工具。
反对高端“企业”系统的主要论点是,推出这种类型的基础设施往往会使一些内部的圣殿能够掌握如何运行这些“企业”系统的神圣知识。这个过程在管理文献中被称为“帝国建设”。受到挑战时,帝国建设者可以通过暗示他们拥有特殊知识并且没有其他人有资格对他们的“企业”系统做任何事情来轻松地对科学进行盲目管理,而这些系统对于凡人理解来说太复杂了。
除非您熟悉工具,否则“企业架构”官僚机构可能很难争论。 Makefile是熟悉的,每个人的工具。你可以在平等的基础上争论makefile。坚持使用makefile。它让混蛋诚实。
答案 2 :(得分:0)
文件中的数据是否超出了文件结构?如果文件中的数据确实结构合理,也许是时候开始考虑新的数据源了。
我感觉到,用数据库中结构良好的数据替换文件A和B不是一种选择。怎么样:
步骤1 + 4仍然很慢,但我打赌你可以通过使用更有效的数据结构进行实际处理来加快整个过程。
使用数据库的乐趣在于,在编写连接/处理例程时,您可以使用更多编程选项(选择您喜欢的语言)。您无需专门依赖make文件。