问题描述
是否有任何特定领域的语言(DSL)能够将数据提取和转换作为Extract-Transform-Load(ETL)管道的一部分?
我想从第三方sql数据库中提取数据,并将数据转换为已定义的JSON格式,以将其存储到我的应用程序中。有很多不同的数据库纲要可以从中提取数据,因此我想知道是否已经存在一种借助(常用)提取语言(理想情况下该语言对于其他数据源,例如Web)也可以进行配置的方法。服务等)。
我环顾四周,但除了几篇研究论文以外,我在商定的ETL标准(减去我已经涵盖的“ L”)方面找不到很多东西,而且我也不想重新发明轮子。
我希望所有正确方向的指针。
解决方法
我相信为ETL创建一个良好的,全面的DSL不仅困难,而且有点愚蠢。为了处理许多现实世界中的ETL复杂性,您最终需要重新创建通用语言。
这种research paper尝试中的ETL“没有编程技巧”将在清理和整合完全不同的源系统的混乱中挣扎。
使用通用语言本身当然是可能的,但是由于抽象水平较低以及您必须实现的所有基础结构代码,因此非常耗时。
图形ETL工具和某些ETL DSL通过添加脚本或调出外部程序来解决此问题。尽管这是有用且必不可少的,但确实存在使用多个不同的编程模型的缺点,并且在它们之间移动时会产生精神和技术上的摩擦。
一种不同的方法,我相信一种更好的方法是改为将ETL功能添加到通用语言中。做得好,您可以将ETL特定功能和高抽象级别的优势与通用语言及其大型生态系统的强大功能相结合,所有这些功能都可以通过一个编程模型来提供。
作为后一种方法的一个示例,我公司提供了actionETL,这是一个跨平台的.NET ETL库,它结合了ETL思维方式和现代应用程序开发的优点。例如,它提供了熟悉的control flow和dataflow ETL功能,并在多个地方使用internal DSLs来简化配置。如果听起来很合适,请try it out。
actionETL现在也有免费的Community edition。
干杯, 克里斯蒂安