产品数据导出一致性校验解决方案
需求与背景
背景
当前互联网产品的部分场景通常存在导出功能,而针对于这部分功能通常没有比较理想的校验方案,更多的是以人工、硬编码的方式针对于特殊场景进行临时校验,当数据量偏大例如:1000+条测试数据采用人工的方式进行校验显的极为不合理,而硬编码的方式校验显的极为冗余以及适用性狭窄,所以需要针对于这部分场景给予通用的解决方案
技术调研
-
大多数产品数据导出都是
Excel
的方式,所以这里我们需要赋予Excel
解析能力 -
由于需要针对于Excel标题栏进行模板匹配,需要提供标题元数据,这部分元数据可以采用常用类型配置文件进行管理
YAML
、Properties
,这里我们选用YAML
,所以我们需要赋予YAML
解析能力 -
针对于数据量校验,我们采用:1、解析导出文件,获取实际数据量 2、拉取DB数据量 3、一致性校验
- 需要引入的技术:
ORM Frmaework
、DB Connector
- 需要引入的技术:
-
数据规范校验:由于导出后的实际数据与DB原始数据存在一定程度偏差(中间存在一定量的
Hander
),所以这部分校验功能我们拆分为两种:强一致性校验、格式匹配性校验- 这部分功能由受基础能力支持
校验方案
架构设计
文件名称及格式校验
- 文件名称采用正则表达式进行匹配
- 文件类型判断是否为:
xls
、xlsx
模板字段校验
在定义元数据的过程中,满足模板字段校验至少需要将这些字段枚举至配置文件中以及给出所在的单元格位置(如果不给出我们默认只能从第一行开始),在校验过程中,我们每次拿出一个枚举值和表格中的标题进行强一致校验,直到所有枚举字段校验完成
例如:
user_data:
columns:
- {
title: '用户名'