Skip to main content

统一数据模型

仓鼠系统使用了统一的数据源模型来定义各类数据源信息,含数据库、Web服务、特殊应用服务类。基本的拆分思路是将特定数据源的连结信息按数据库对象结构,拆分为3层结构:

数据服务

数据类型数据源类型第1层-数据源(根目录)第2层-数据库(顶层目录)第3层-数据表任务配置(工作目录)账户-域名账户名密码
数据关系型数据库 RDS服务器名或IP数据库实例名数据表名-账户域名(可选)账户密码

文件服务

数据类型数据源类型第1层-数据源(根目录)第2层-数据库(顶层目录)第3层-数据表任务配置(工作目录)账户-域名账户名密码
文件共享目录服务器名或IP共享目录名 (仅第一层目录名)-子目录\文件名账户域名(可选)账户密码
文件本地目录 Windows目录业务名称绝对目录路径,如:( D:\Temp\wkr)-子目录名账户域名(可选)账户密码
文件本地目录 Linux目录业务名称根目录路径,如:( \\hamster\wkr)-子目录账户密码
文件文件服务 FTP服务器名或IP根目录 (/)-子目录/文件名账户密码
文件文件服务 SFTP服务器名或IP根目录 (/)-子目录/文件名账户密码
文件SharePoint 站点站点主域名地址 (含协议)(子)站点名(去除主域名后,目标文档库所在的(子)站点名)-文档库/子目录/文件名账户域名账户密码

云服务

数据类型数据源类型第1层-数据源(根目录)第2层-数据库(顶层目录)第3层-数据表任务配置(工作目录)账户-域名账户名密码
文件AWS S3外网 EndPoint (如下案例)全局存储桶名-子节点/文件名-AccessKeyIdSecretAccessKey
文件阿里云 OSS外网 EndPoint (如下案例)全局存储桶名-子节点/文件名-AccessKey IDAccessKey Secret
文件华为云 OBS外网 EndPoint (如下案例)全局存储桶名-子节点/文件名-AccessKeyIdSecretAccessKey
文件腾讯云 COS外网 EndPoint (如下案例)全局存储桶名-子节点/文件名-API:SecretIdAPI:SecretKey
文件Azure Blob外网 EndPoint (可选:core.windows.net)存储账户下容器名-子节点/文件名-存储账户名访问密钥Key

即时服务

数据类型数据源类型第1层-数据源(根目录)第2层-数据库(顶层目录)第3层-数据表任务配置(工作目录)账户-域名账户名密码
服务企微 WeComm企业环境名称 (配置CorpId)自建应用 (配置AgentId、SecuritKey)-----
服务企微 WeComm企业环境名称群机器人组机器人名称 (配置服务地址:Webhook URL)----
服务钉钉 DingTalk企业环境名称 (配置CorpId)自建应用 (配置AgentId、SecuritKey)-----
服务飞书 Feishu企业环境名称自建应用 (配置AppKey、SecuritKey)-----
服务群机器人 Webhook机器人环境名称业务分组名称功能名称 (配Webhook URL)----

应用服务

数据类型数据源类型第1层-数据源(根目录)第2层-数据库(顶层目录)第3层-数据表任务配置(工作目录)账户-域名账户名密码
服务阿兹卡班 Azkanban服务Url地址 (含协议和端口号)/ (恒为/)-配置 项目和流名称---
消息消息队列服务器名或IP(不含协)+端口号队列名+协议类型及配置-----

特定数据源案例

案例: AWS S3 对象存储

对象存储的存储桶区域,需要选择对应的EndPoint地址。如下:

地域 ID外网 Endpoint(第1层-数据源)存储桶(第2层-数据库)
北京cn-north-1全局桶名
宁夏cn-northwest-1全局桶名

案例: 阿里云 OSS 对象存储

阿里云的对象存储的存储桶区域,需要选择对应的EndPoint地址。如下:

地域 ID外网 Endpoint(第1层-数据源)存储桶(第2层-数据库)
oss-cn-hangzhouhttp://oss-cn-hangzhou.aliyuncs.com全局桶名
oss-cn-shanghaihttp://oss-cn-shanghai.aliyuncs.com全局桶名
oss-cn-shenzhenhttp://oss-cn-shenzhen.aliyuncs.com全局桶名
oss-cn-beijinghttp://oss-cn-beijing.aliyuncs.com全局桶名

案例: 华为 OBS 对象存储

对象存储的存储桶区域,需要选择对应的EndPoint地址。如下:

地域 ID外网 Endpoint(第1层-数据源)存储桶(第2层-数据库)
cn-north-1https://obs.cn-north-1.myhuaweicloud.com全局桶名
cn-east-2https://obs.cn-east-2.myhuaweicloud.com全局桶名
cn-east-3https://obs.cn-east-3.myhuaweicloud.com全局桶名

案例: 腾讯 COS 对象存储

对象存储的存储桶区域,需要选择对应的EndPoint地址。如下:

地域 ID外网 Endpoint(第1层-数据源)存储桶(第2层-数据库)
上海ap-shanghai全局桶名
北京ap-beijing全局桶名
广州ap-guangzhou全局桶名

案例: SharePoint文档库

需要访问MyDoc文档库中按当前日期命名的目录文件。
目标文档库MyDoc站点地址如:http://sharepoint.flyenter.com/sites/IT/DI/MyDoc/2020-09-19
拆分如:

  • 数据源:http://sharepoint.flyenter.com (SharePoint站点的主域名,含协议头)
  • 数据库:sites/IT/DI (目标文档库MyDoc隶属的子站点。IT为一级站点,DI为二级站点)
  • 数据表:(不配置)
  • 任务中配置的子路径:MyDoc/2020-09-19 (文档库即其下的目录名称)

案例:共享目录路径拆分

目标共享目录地址如:\\127.0.0.1\share\datalake\2023-08-29,其中:

  • 数据源(RootFolder):127.0.0.1
  • 数据库(TopFolder):share
  • 工作目录(WorkingFolder):datalake\2023-08-29

基于上述场景,假设工作目录下面有子目录 \\127.0.0.1\share\datalake\2023-08-29\docs\masterdata,则可以产生如下的路径地址:

  • 纯相对路径(PureRelativedPath): docs\masterdata
  • 相对路径(RelativedPath): datalake\2023-08-29\docs\masterdata
  • 完全路径(FullPath): \\127.0.0.1\share\datalake\2023-08-29\docs\masterdata

路径相关概念

文件系统完整路径可拆分为:协议头+根目录+顶层目录+工作目录+子目录+文件名

  • 协议头(ProxyHeader): 只特定文件系统访问时使用的协议,如https://, ftp://, \\等
  • 根目录(RootFolder):指数据源层定义的内容,初始化链接时及自动配置好
  • 顶层目录(TopFolder):数据库层定义的子站点/第一层共享目录/第一层服务目录/桶内第一级目录等
  • 工作目录(WorkingFolder):指在应用任务中配置的子目录节点
  • 子目录(SubFolder):指在访问工作目录时,遍历出来的子目录节点,该节点是动态变化的
  • 纯相对路径(PureRelativedPath): 特指工作目录下的子目录地址,路径中不含工作目录及其上地址。
  • 相对路径(RelativeFolder):指从工作目录开始,且仅含工作目录的路径地址。
    • SharePoint :工作目录+子目录(文件名)
    • SFTP :顶层目录+工作目录+子目录
    • ShareFolder :工作目录+子目录
    • AWS S3 :顶层目录+工作目录+子目录
  • 完全路径(FullPath):指拼接了协议头+根+顶层目录+工作目录+子目录(文件名)的完整路径

路径相关功能

  • GetRootAndTopPath():获取协议头+根+顶层目录
  • GetParentPath(currentPath): 从当前路径中提取父级目录名称,返回路径尾部不含链接符
  • ConvertToFullPath(relativeFolder): 用于将相对路径转换成完整路径,及添加相应的协议头和根等头部节点信息
  • ConvertToRelativePath(currentPath): 剔除当前路径中的协议头+根目录的部分,SharePoint站点会再去除顶层目录(当前站点)信息
  • ConvertToRelativePath(currentPath, parentPath): 基于父节点路径,将当前(可能是完全路径)路径转换成仅针对父节点的纯子相对路径。
    • 这里面的父节点,有可能是工作目录,也有可能是遍历后的子目录,PureRelativePath是仅仅针对当前父节点来计算的。
    • 如果没有提供父节点目录,则默认剔除协议头/根/顶层目录组成父节点路径。
  • CombinePathNode(firstPath,params string[] pathNodes): 针对特定数据源类型,采取相应的链接符链接多个路径节点,不清理链接后路径的收尾是否有链接符

system architecture