简介

Moose是一个数据处理的自动化框架,旨在提供一套快速、灵活、便捷、幂等式的数据处理方案。它不仅提供了常用的数据处理类和函数,也提供了一套命令行式的接口以处理和维护版本内单一、重复、繁琐的任务。

Moose 致力于解决什么?

Moose从实际工作中遇到的一系列问题产生:

  • 工作琐碎重复。工作内容在很大程度上是相似的,这既反映在同批次的工作之间可能只是作用对象不同,也反映在不同批次的工作中很多处理的细节是相似或者一致的;
  • 移植性差。脚本在不同的操作系统、开发环境或网络环境中无法正常工作,这导致交接难度变大,需要时间成本去理解、修改或重写代码;
  • 复用性差。由于输入输出的格式不统一,高层代码无法被直接使用,底层函数和类也因为总是需要适配参数而作用有限;
  • 代码膨胀过快。由于移植性差,因此需要同时维护多个版本的代码,这导致功能上的增加和修改都需要成倍的工作量,代码管理成本上升的同时也增大了出错的几率;
  • 对结果没有信心。程序或脚本缺少相关的过程验证,导致得到的结果可信度降低,同时由于数据量大,处理过程中发生的错误也容易被掩盖和忽略;
  • 缺乏日志信息。处理过程本身没有被记录,处理前后的数据关联也不明显,错误难以被追溯和定位。

Moose 有哪些特点?

基于上面的认识,我们编写了Moose框架,它包含以下特点:

  • 分解过程。行为(Action)被拆分成多个步骤或组件,并提供了默认的实现。当业务变化时,只需对特定的部分进行定制化即可,重写之后的组件也可以被发布和纳入到后续的使用中;
  • 适配数据。引入模型(Model)对输入数据进行标准化,避免由于输入的变化引起处理过程的改动;
  • 提供底层库。对于在不同平台上会产生不同效果的函数和方法,我们提供了兼容性更强的替代品,这些重新编写的函数和方法消除了平台的差异性,使开发人员关注更高层的业务逻辑;
  • 作用对象和过程分离。提出订单(Order)的概念,通过将每次处理所需的参数填写到订单文件中,既避免了不同阶段时参数的重复输入(因为上一阶段的输出文件很可能就是下一阶段的输入),又能通过分析订单文件了解数据的流转节点;
  • 命令行工具。提供了丰富的命令行工具简化创建相关文件的操作,交互方式更一致,即使对实现不了解也可以完成相关处理;

如果Moose能解决你的问题或者你对它感兴趣,赶紧了解 安装指南 来安装吧。