3.3.4 VO-O语法- 算子分类(一)
VO语言目前拥有400+个算子,并且仍在不断的开发扩展中。算子的功能丰富,多样,很难用某个维度简单、易用的对算子进行分类。以下是VO语言按照内置的算子开发维度给出的算子分类。
输入算子
输入算子用于接入和生成各类数据,一般是一个数据流程的起点。支持接入各类文件系统、数据库、事件流(消息队列)、应用系统等不同数据源。这些数据源可以通过HuggingFists系统的数据源管理模块进行接入管理。
为了减少开发者的学习成本,所有同类型输入算子的配置方式都进行了最大的化的统一设计。如:所有文件系统输入算子都支持选择多个待处理文件,选择多个文件夹等;所有数据库输入算子都最大程度的支持编写SQL语句进行数据访问等。由于很多非关系数据库并不支持SQL语句访问,比如MongoDB、Elasticsearch、Milvus等,开发团队专门维护了一个开源项目moql-transx,用于提供各类数据库的SQL访问接口。很多时候,这些SQL语句并不总是能很好的映射这些非关系型数据库的语法能力,但对于有特殊DSL访问语法的数据库来说,可以减少一部分开发者的学习成本;对于只提供了SDK访问接口能力的数据库来说,有了一种通用交互的解决方案。这里需要额外提一下,图数据库的所有输入算子目前是不支持SQL访问接口的,因为用SQL来映射图数据库的访问语义效率实在是太低了。在等待国际统一标准的GQL无果后,目前系统计划支持Cypher作为图数据库类的统一访问接口。
下面列出VO语言支持的部分输入算子,详细内容参见《5资源手册/2算子》:
文件系统输入:Alluxio、Azure对象存储、百度网盘、Ceph、腾讯云COS、FastDFS、Ftp、谷歌GCS、GridFs、HDFS、Mino、阿里云OSS、Amazon S3等
数据库输入:ClickHouse、DB2、达梦8、Doris、Elaticsearch[7|8]、Hive、MDB、Milvus、MongoDB、MySQL、Nebula、Neo4j、Oracle、Postgresql、Presto、SnowFlake、SQLServer、StarRocks、Sybase、腾讯向量库、TiDB、Trino等
事件流输入:Kafka
输出算子
输出算子用于将数据写出到各类存储系统中,一般是一个数据流程的终点。它与输入算子总是配套出现,除应用系统没有对应的输出算子外,文件系统、数据库以及事件流输入算子都有对应的输出算子。其中比较特别的是文件系统输入算子,它一般会对应2种输出算子。一个是单文件输出算子;一个是多文件输出算子。算子输入端口可接入的数据集结构不同,单文件输出算子支持对一个文件进行追加写出;多文件输出算子则支持一次性向一个文件系统写出多个文件。分别用于不同类型的输出场景。
下面列出VO语言支持的部分输出算子,详细内容参见《5资源手册/2算子》:
文件系统[单/批量]输出:Alluxio、Azure对象存储、百度网盘、Ceph、腾讯云COS、FastDFS、Ftp、谷歌GCS、GridFs、HDFS、Mino、阿里云OSS、Amazon S3等
数据库输出:ClickHouse、DB2、达梦8、Doris、Elaticsearch[7|8]、Hive、MDB、Milvus、MongoDB、MySQL、Nebula、Neo4j、Oracle、Postgresql、Presto、SnowFlake、SQLServer、StarRocks、Sybase、腾讯向量库、TiDB、Trino等
事件流输出:Kafka