Skip to content

Data Sync

概述

Data Sync 数据同步模块负责将数据从数据源同步到内容库,它负责维护数据源以及数据源到内容库,内容库到数据源的双向同步处理。 已规划的数据源包括:

  • 本地数据源(先开放Excel文件)
  • Unreal Engine 数据源
  • Google Sheet(暂不开发)
  • Database(暂不开发)
  • Git Repository(暂不开发)

关联的外部系统

  • 消息通知系统
  • 文件服务

关联的中间件

  • 业务数据库
  • 内容数据库
  • 消息队列

数据源维护与同步

一个数据源关联一个Repository,数据源内容和Repository理论上在一定前提下可以互相转换。 对于本地数据源来说,从Repository到数据源,可以理解为本地化中的文件导出(文件还原)。 对于游戏引擎来说,因为游戏引擎是内部环境,所以需要游戏引擎先推送内容到缓存区,然后从缓存区导入到Repository,所以对于游戏引擎来说,需要一个唯一Token配置到游戏引擎中,游戏引擎推送数据时系统可以识别该Token,然后进行数据入库。

本地数据源

本地数据源,首先在Repository中创建一个Data Source,定义类型为本地文件,指定文件类型(目前只支持Excel),上传文件后,设置Excel文件中需要导入的Sheet列的定义,文件的导入顺序等信息,然后服务先校验当前文件在当前的导入规则下可能出现的问题,用户忽略或调整后,数据源服务开始同步任务,每次任务会产生对应的入库报告,同步任务支持撤回,撤回后本次导入的内容会从内容库中删除。

数据源与Mapping校验规则

当用户上传文件后,设置Mapping完毕后,服务会进行校验,校验规则如下:

  • 文件中的行指定的Key列中,不能有空值(忽略后不导入该行)
  • 文件中的行指定的Key列中,不能有重复值(忽略后只导入第一次出现的Key)
  • 文件中的行指定的Source列中,不能有空值(忽略后不导入该行)

同步行为

数据源的两端,即上下游,上游是一个文件合集,下游是一个Repository,有两种同步行为:

  • 全量同步:上游的文件合集中的所有文件都会被同步到下游 全量同步中,处理器会解析所有文件,然后根据文件中的定义,将文件中的内容转换为Repository中的内容,然后保存到Repository中,在Repository中每一条记录都会记录来源信息,包括文件标识,Sheet标识,行号,字串ID,字串内容。通过来源信息,可以反向导入到上游文件合集中。
  • 增量同步:上游的文件合集中的新增文件和修改文件会被同步到下游 增量同步中,处理器会解析所有文件,然后与Repository中的内容的ID进行对比,如果找到对应的ID,则认为该内容已存在,如果原文也一致,则会跳过,原文不一致,内容标记为更新,否则认为该内容为新增,然后根据文件中的定义,将文件中的内容转换为Repository中的内容,然后保存到Repository中,同样会记录来源信息。
  • 反向同步: 反向同步中,处理器会遍历所有内容,找到内容库中与之匹配的来源信息,将列中的译文进行补全,如果修改了译文以外的信息,也会一并更新回文件。
  • 版本管理: 每次同步任务都会生成一个版本,版本号与时间相关,内容库操作的永远是最新的版本,但是如果遇到导入错误,或误操作等,可以回退到之前的版本,系统会保留3个版本。

普通导出

普通导出是指和内容库数据源无关的,单纯将一个内容库的一个版本或筛选后的内容按系统定义的格式导出为CSV。

流程图

uml diagram