HuggingFists系统提供的可视化流程定义功能与传统的ETL或数据挖掘工具类似。使用者可以通过拖拽,可视化的定义出数据处理的管道(Pipe)或数据分析的图(Graph)。传统上,使用者只是将这种可视化流程定义方式视为一种配置功能而未将其理解为一种编程行为。主要是由于很少有工具能同时支持数据不同处理阶段流程的构建,比如ETL和数据分析两个阶段,这两类工作往往由不同的工具实现。但HuggingFists的理念是能够支持数据采集、处理、分析及共享多个阶段。因此,需要拥有更强大的数据流程定义能力,能够满足不同阶段的数据处理要求。
为此HuggingFists定义了一套可视化编程语言--VO(Visual Operator),该语言可视为一个面向数据科学处理与计算的领域描述语言(DSL)。之所以将其称为语言,是因为其拥有很多其他通用开发语言的特征,比如:支持常量、变量、函数、异常等;也有VO语言特有的语法概念,比如:算子、子流程、参数变量、水位线等。通常情况下,使用者不需要有编程经验,也无需了解太多VO语言的语法概念,只要简单通过界面拖拽算子,设置参数就可以完成一个数据处理流程的编写。操作体验上更接近RPA与传统数据科学工具的感受。只有当需要处理与分析的数据流程比较复杂时,才会用到一些语言级别的概念。学习这些概念虽然会带来一些学习成本,一旦掌握,可以轻松解决复杂数据场景的问题,并获得高效的并行运行体验。VO语言详细介绍参见下一章。
除了VO语言外,HuggingFists还支持SQL、Python、Javascript等语言,使用者可以在适当的时候运用这些语言来增强数据处理的能力。
目前除了图数据库之外,HuggingFists对集成的所有数据库类型的数据源都支持使用SQL方言进行访问。之所以称之为方言是因为,其语法并非标准SQL语法,而是根据数据库特定的访问方式做了二次语法封装。这是一个很大的工程,但HuggingFists为了尽量给用户一个统一访问数据库数据源的方式,还是做了这样的一个转换工作。比如:ElasticSearch原本只支持DSL方式访问、MongoDB、Milvus只支持SDK,但在HuggingFists系统中,使用者都可以用SQL访问各个数据源。
对于图类型数据库,由于国际上一直没有推出GQL标准,因此HuggingFists采用了Cypher语言作为图数据库的访问语言。目前HuggingFists支持了Neo4j和Nebula两款图数据库。对于其它不支持Cypher语言的图数据库,HuggingFists由于暂无能力做兼容性整合,故尚未支持。
Python是HuggingFists系统的另一大开发语言。鉴于其在数据算法领域的广泛应用,拥有数万种算法包。HuggingFists在算法类算子中大量应用了Python脚本,特别是在深度学习领域,可以极其便利的整合各类成熟的算法实现。
Javascript语言是由脚本算子引入系统的。主要方便熟悉Javascript语言的用户可以扩展算子的功能。但是,这种方式只适合较小的功能扩展,比如:对数据进行特别的公式计算,特别的抽取等。当扩展功能需要引入第三方依赖时,需要安装依赖,整合环境,会比较繁琐。HuggingFists除了支持Javascript脚本算子外,还支持Python脚本算子,未来还可能根据需要,扩展更多的编程语言。