data_middle platform_framework_design.md 24 KB

数据中台-架构设计

一、引言

软件的概要设计又称为软件系统(程序系统)的设计,本文档应说明软件系统即程序系统设计的总体考虑,包括系统的基本处理流程、软件系统的组织结构、模块划分、功能分配、数据结构、接口、运行、出错处理和系统维护等方面的设计,为详细设计提供基础。

二、业务设计

1、统一数据标准管理

主要负责公司层面的持久化数据的定义。参考“数据架构”梳理中的数据字典excel、数据类型,设计数据统一标准的7类高级数据类型,七种高级数据类型分别为:字典、知识库、对象、关系、时序、图数据以及多维数据类型。

并在此基础上设计的统一数据模型进行管理:

1、包括模型的统一数据标准文件、数据结构、业务规则的管理,

2、包括数据模型、数据融合关系、数据模型映射、数据版本、数据业务含义的管理,

3、包括在数据模型基础上的实现代码,进行数据生成管理。

在数据中台的搭建中,采用统一数据标准管理,可以方便地规范数据资源,并向外提供统一的数据服务。管理行业标准、企业标准,对企业业务系统中涉及到的数据标准及其数据字典进行管理,包含数据标准的维护、查询、数据合理性和逻辑性核检。

统一数据标准文件可以批量导入数据中台,作为统一数据标准。

1.1数据类型

编写统一数据标准文件,用于管理七种数据类型的数据编码,对所有数据编码进行统一管理,是数据中台集成的基础,主要包含七种高级数据类型:字典、知识库、对象、关系、时序、图数据以及多维数据。

1.2命名规范

制定数据标准的库、表、字段等的命名规范,确保设计的正式和统一。

1)数据库命名规范

​ 采用26个英文字母 (区分大小写) 和0-9的自然数 (一般不需要) 加上下划线 ‘_’ 组成,命名简单明确 (Student_Union),多个单词用下划线 ‘_’ 分隔,一个项目一个数据库,多个项目慎用同一个数据库

2)表命名规范

  • 采用26字母和0-9的自然数(一般不使用)加上下互相 ‘_’ 组成,命名简洁明确,多个单词用下划线 ‘_’ 隔开

  • 全部小写命名,避免出现大写

  • 禁止使用关键字,如:select、table、show 等等

  • 表名称不要取得太长(一般不超过三个英文单词)

  • 表的名称一般使用名词或者动宾短语

  • 也要注意单词形式,列如:使用 user ,而不是 users(因为用户表是一个的而不是多个)

  • 表必须填写描述信息(建表时可以用注释详细写出表细节的作用,不同数据库的注释都不一样)

3)字段命名规范

  • 采用26字母和0-9的自然数(一般不使用)加上下互相 ‘_’ 组成,命名简洁明确,多个单词用下划线 ‘_’ 隔开

  • 全部小写命名,避免出现大写

  • 字段必须填写描述信息

  • 禁止使用数据库关键字

  • 字段名称一般采用名词或动宾短语

  • 采用字段的名字必须是易于理解,一般不超过三个英文单词

  • 在命名表的列时,不要重复表的名称(如:在 user 表中,出现 user_name 字段)

  • 字段命名使用完整名称

4)SQL语言编码规范

  • 所有关键字最好大写,如:DELETE、UPDATE、INSERT等等

  • 多有函数及其参数中除用户变量以外的部分大写

  • 在定义变量时用到的数据类型小写

1.3数据融合

1)主数据只能由一个服务、一个业务模块生成和编辑。

2)涉及主数据的字典编码由数据字典管理员统一定义、管理,研发人员、客户经理禁止做任何修改,产品只提供编码别名配置,不提供编码用户自定义。

3)非主数据的字典编码可以提供用户自定义,但是作为一种平台扩展功能,系统默认提供的编码不能被删除、修改。

4)主数据的编码采用单一代码,只采用代理主键的方式(主数据编码不强制含有业务意义,只具有主键作用,比如 UUID,看情况区分要不要前缀。)所有业务意义和业务规则依赖下的关系都由业务字段定义。

4)时间、空间坐标作为通用统一技术形式,业务上可以互相之间映射融合。

5)主数据的编码规则整个系统一但确定,禁止改变。

1.4数据兼容

1)主数据兼容

主数据通过编码规则,在分布式系统下,所有主数据编码不产生冲突。主数据编码规则不变,所有用户、集团、项目的主数据编码不产生冲突。

2)编码兼容

数据标准提供一套标准的编码,形成产品统一的编码语义。每个集团自定义编码采用编码映射表管理,提供自定义编码语义、别名语义。

3)非主数据的数据字典编码

项目可以自定义扩展。但原则上,新字典编码(非主数据默认字典编码),不提供项目上自定义扩展。

4)模板、产品知识等数据兼容

产品默认提供一套标准的模板(包括流程、默认参数值等)、知识等通用业务数据。在建立集团、项目时,提供标准的业务数据,并提供集团、项目自定义。系统升级时,不改变这部分数据。 高级七种数据类型的数据结构完全兼容,条目、数值、内容是不同的。

5)业务数据兼容

功能、权限点、版本、报警规则、控制指令等业务数据产品统一定义,客户禁止修改。系统升级时自动兼容。

6)接口兼容

产品标准接口兼容。客户自定义接口默认在产品标准接口基础上形成,从而系统尽可能自动兼容。未在产品标准接口上定制的接口,系统采取不兼容方式。

1.5存储原则

1)所有字典存采用MySQL存储。

2)不同用户的数据不做物理隔离,做逻辑隔离。

3)不同业务域数据分库存储,前端服务只能直接读取本业务域下的数据存储,不应跨业务域读取数据库数据。

4)kafka中存储的消息包不区分业务、用户,消息包头文件需要有消息区分,不同的业务划分采用不同的channel。

5)redis缓存中不区分业务、用户,完全由主数据编码规则保障数据不冲突。

6)ES数据也不区分业务、用户,查询时通过字典编码精确过滤掉非本业务、用户的数据。

7)用户扩展、自定义内容都在用户库中存储。每个用户自定义、定制内容采用逻辑隔离的方式存储(每个用户、项目创建一个schema)。所有用户扩展、自定义数据只能在MySQL、Hbase中存储。

8)多个不同版本产品,部署多套时,根据产品情况,数据库采用业务字段或schema方式隔离。(避免搭建很多套数据库实例)

9)Schema的命名方式:

a、产品数据随着产品版本变化的产品: “产品ID”+”产品版本”+ “DB schema id” + “ 集团” + “项目”

b、产品数据不随着产品版本变化的产品 “产品ID”+ “DB schema id” + “ 集团” + “项目”

2、数据流程管理

1)数据存储结构生成:注明表字段、表索引、表的主键规则、Schema。自动生成数据表

2)业务配置生成:根据业务逻辑,设计配置数据表,通过配置数据表的接口生成业务配置规则

3)接口生成:基于业务配置数据,生成业务数据查询接口,如配置了指标项、指标计算规则及要生成的指标计算结果,入参为业务配置id,出参为指标计算结果(多为多条)

4)数据输出

​ a)数据文件生成:基于接口的出参生成excel文件,每个指标计算结果作为一列,

​ b)页面生成:封装web前端excel文件转化工具,将excel文件转化为Html页面

3、数据结构管理

七大数据类型的数据结构管理,包含字典、知识库、对象、关系、时序、图数据以及多维数据的数据表设计、数据增删改查接口管理。

(图数据的数据结构管理暂不考虑)

4、业务规则管理

进行业务规则数据表的设计,及业务规则数据的增删改查接口管理。

5、数据质量管理

数据管理主要是建立数据业务定义、融合、映射和版本管理的 处理模型

数据中台创建新的数据标准,在进行旧数据的迁移和第三方数据的接入时,需要考虑数据的兼容和数据的融合。

1)在做兼容和数据融合的处理时,我们引入数据映射的数据表,

2)将历史数据或者第三方数据与数据映射表建立业务定义的对应关系,主要包含数据表、字段、语义和精度等定义。

3)再数据映射表的数据映射到数据中台标准数据中,完成数据兼容和融合

4)还需在进行数据管理时,对数据的版本进行管理,必要时需要对不同版本的数据进行分表存储。

三、功能设计

1、功能服务架构

本次涉及的服务主要:数据字典、数据存储、数据查询、管理监控、人员组织权限、文件管理、报警中心、资产资料、统一收费管理

1.1基础数据涉及的服务

数据字典、数据存储、数据查询:用于7大基础数据类型的存储和查询

管理监控:在该服务上开发任务调度服务

1.2主数据涉及的服务

数据字典、数据存储、数据查询:为主数据存储和查询的基础服务

人员组织权限:为主数据-人员、组织结构、权限管理的业务服务

文件管理:为主数据-文件(合同等文件)的业务服务

资产资料:为主数据-供应商数据、耗材数据、工具数据的业务服务

统一收费:为主数据-租户数据的业务服务

1.3中控业务涉及的服务

数据字典、数据存储、数据查询:为中控业务数据存储和查询的基础服务,同时支持监测、控制业务,提供物理世界和IOT数据

报警中心:为中控报警业务数据的服务

1.4数据分层

1.5数据ER图

2、功能清单

功能分类 功能 需求点 备注
统一数据标准 字典数据管理 1、定义标准字典类型、定义标准字典数据结构、定义自定义字典数据映射结构
2、对字典数据进行增删改查,需提供相关字典数据接口
3、进行字典进行映射兼容管理,通过字典数据映射实现
知识库数据管理 1、定义标准知识库类型,定义标准知识库数据结构
2、对知识库进行增删改查,需提供相关的知识库数据接口
对象数据管理 1、对象属性管理,如a、物理世界对象,有对象的名称、编码、信息点等属性
b、业务对象,如报警对象,有报警类型、报警条目属性等
2、对象服务管理,添加业务对象数据结构
3、可对业务对象进行增删改查,需提供相关的业务对象管理接口
关系数据管理 1、物理世界对象关系管理,描述物理世界对象之间的关系,如空间下的对象、服务空间的系统,主要采用图类型和边类型进行管理,边类型为图类型的补充说明
2、业务对象的关系管理,描述业务对象之间的关系,与工单与报警的关系数据,并提供相关接口
图数据管理 无相关存储场景,暂不考虑
时序数据管理 1、时序数据属性管理,定义时序数据的数据结构,主要为IOT数据,IOT采集数据分时序存储,如分精度数据的存储
2、可对时序数据进行增删改查,需提供相关的时序数据接口
多维数据管理 1、维度管理,如时间维度、空间维度、人的维度、对象的维度、组织的维度等
2、指标管理,如工单、能源、环境等数据指标
3、多维数据结构管理,定义多维数据的数据结构,主要为报表、统计数据
4、对多维数据进行增删改查,需提供相关的多维数据管理接口
数据流向管理 1、数据字典文件excel生成
2、数据存储结构生成
3、业务配置项生成
4、根据业务配置项,输出接口
5、数据输出,包含数据文件生成和页面生成
数据质量 数据质量管理 1、在做兼容和数据融合的处理时,我们引入数据映射的数据表,
2、将历史数据或者第三方数据与数据映射表建立业务定义的对应关系,主要包含数据表、字段、语义和精度等定义。
3、数据映射表的数据映射到数据中台标准数据中,完成数据兼容和融合
4、还需在进行数据管理时,对数据的版本进行管理,必要时需要对不同版本的数据进行分表存储。
主数据数据结构定义 主数据-人员组织结构权限 1、定义人员组织管理的数据结构,数据模型包含:
1)集团(多租户)
2)项目
3)数据权限(集团、中心、区域、项目,用于管理项目权限,)
4)部门
5)岗位
6)部门模版
7)岗位模版
8)人员
9)账号
10)应用
11)功能
12)功能权限
2、集团与部门,每个集团下有一个顶级部门与集团对应,创建集团时会同时创建一个部门,部门名称默认与集团名称相同
3、部门与项目,为部门分配项目,只能分配上级部门已分配的项目,可将项目权限进行打包。
4、顶级部门默认配置了集团下的全部项目,新增项目时也同时将项目分配到顶级部门
5、功能权限集,集团与应用关系,描述集团是否开通应用,集团的应用权限及应用下功能权限集合
6、岗位配置功能,描述岗位具备的功能权限
7、人员组织岗位关系,将人员加到某个组织的某个岗位上,则用户具备组织已配置的项目的数据权限,同时具备岗位已配置的功能权限
主数据-租户数据 1、定义租户信息、租户配置、租户账单信息的数据结构,详见《finein_saas_web统一收费管理》
2、对租户数据进行管理,需提供相关的数据接口
主数据-供应商数据 1、对供应商数据进行主数据表结构梳理
1)供应商类型表
2)供应商类型扩展字段表
3)供应商表
4)供应商扩展表
5)供应商与供应商类型关系表
2、供应商数据的增删改查接口管理
主数据-库存数据 1、对库存数据进行主数据表结构梳理
1)系统类型常量表
2)仓库信息表:仓库数据主体表
3)仓库管理员表
4)工具清单表:工具数据主体表
5)工具箱表:工具箱数据主体表
6)工具箱清单表:工具箱清单的清单数据主体表
7)工具箱领用单:工具箱领用单的数据主体表
8)工具箱领用单详情:工具箱领用单内的工具箱详情数据主体表
9)公用工具表:公用工具数据主体表
10)公用工具借用单:公用工具借用单的数据主体表
11)公用工具借用单详情:公用工具借用单内的借用工具详情数据主体表
12)工具操作记录表
13)耗材出库详情表:耗材出库单内的耗材详情数据主体表
14)耗材出库表:耗材出库单的数据主体表
15)耗材入库详情表:耗材入库单内的耗材详情数据主体表
16)耗材入库表:耗材入库单的数据主体表
17)耗材表:耗材数据主体表
18)耗材模板、项目关联表
19)耗材模板表:记录耗材模版主体数据
20)工具转借单:工具转借单的数据主体表
2、库存数据的增删改查接口管理
主数据-物理世界数据字典 1、物理世界数据字典进行版本升级,对底层存储数据切换为mysql,
2、对信息点编码进行调整,使用驼峰命名
3、调整存储方式和分库分表方案,数据字典部分调整为平台字典单独一个库,集团数据和项目数据按集团进行分库,物理世界部分按集团进行分库,按项目进行分表
4、枚举型信息点修改为引用数据标准化定义的数据
5、提供可行的数据迁移方案
主数据-文件数据 1、定义文件的数据结构
2、提供文件的上传、下载功能,定义相关接口
中控业务 IOT数据-物联网数据 1、提供物理世界对象与关系数据结构,供设备对接与写入
2、提供物理世界对象信息点数据结构,以用于IOT数据的写入和存储
3、进行IOT数据质量处理,如分精度计算等
4、提供接口查询服务,可查询IOT数据
中控支持-报警系统 1、定义报警类型、报警条目数据接口,并提供报警类型与条目的增删改查管理接口
2、报警记录,用于描述一个发生的具体的报警,提供报警新建和查询接口
3、自动点位报警配置数据描述自动触发报警需要满足的类型、分类以及特定条件,以及报警时使用的报警条目
4、对象点位报警配置数据根据自动点位报警配置的类型自动生成,可以修改为开或者关
5、对象点位报警配置数据产生后,在接收到物联网采集数据后,系统自动根据配置的条件判断是否触发报警,如果触发报警则创建一条与配置条目对应的报警记录
中控支持-监控配置 1、定义监控配置的数据结构、控制指令的数据接口
2、对监控配置数据进行增删改查,需提供相关配置数据管理的数据接口
3、对监控指令数据进行增删改查,需提供相关监控指令数据管理的数据接口
中控支持-日志 1、定义日志类型的数据结构
2、定义日志的基础字段信息,并可对日志类型进行字段配置
2、对字典数据进行增与查,需提供相关日志的数据接口
任务调度 任务调度系统 1、任务配置,用于描述一个具体的任务配置信息
2、调度执行管理
1)读取配置的任务,进行,满足以下条件的任务会被触发:
a)状态为待执行且达到下次执行时间的
b)状态为执行中且达到上次执行的过期时间的
2)任务触发后更新任务的下次执行时间、本次任务的过期时间,
3)根据执行方式的配置来调起相关的服务,同时会将集团编码、应用编码、项目ID、任务编码、调起参数、任务ID等作为参数。
3、执行记录,用于描述一个任务的具体的一次执行过程
1)被调度方根据执行结果和任务ID来更新执行记录
4、任务调度的最小时间间隔是5秒,暂不支持频率要求快于5秒的场景

四、总体设计

1、技术选型

技术 约定 备注
Spark xx版本 计算引擎
Hbase xx版本 分布式数据库
MySQL xx版本 关系型数据库
Redis xx版本 缓存服务
ElasticSearch xx版本 搜索引擎ES
Zookeeper xx版本 分布式共享存储,保证数据中台计算调度一致性
HDFS xx版本 分布式文件系统(Hadoop)
Flume xx版本 IOT数据采集的服务
Kfaka xx版本 分布式发布订阅消息系统 ,消息中间件
rabbitmq xx版本 消息中间件

2、技术复用

功能 技术复用 备注
业务规则配置 技术复用 业务流程配置
权限配置
业务字段配置
数据接收 技术复用 DRS数据修复软件
通用数据上传工具ems-upload
通用数据导入工具mysql2hbase
通用数据分发工具ems-transfer
文件服务 技术复用 Image-service文件图片服务
计算任务 技术复用 Spark计算引擎
DRS数据修复软件
大数据实时存储计算
存储 技术复用 分布式数据库:hbase、mysql
Redis、Cache系统缓存服务
数据库访问中间件
Hbase数据监控-hbaseflow
调度管理 技术复用 分布式调度
PFK平台急救箱
数据查询 技术复用 分布式搜索引擎ES
metadata-web Hbase数据库查询
pdfreport PDF工具

3、关键技术

3.1接入层—大数据实时流处理技术

跨业务跨系统的实时数据处理统一管理平台,毫秒级响应,每秒10000条并发吞吐能力。

3.2数据层—基于数据标准的平台开发技术

4、总体逻辑

4.1数据种类与技术选型

5、数据表设计

详见:http://git.sagacloud.cn/persagy/persagy-dmp-doc

五、系统联调

1、内部联调

联调功能 联调方式 备注
数据写入 联调内部数据结构定义,通过统一数据标准来规范,避免出现差异化数据结构
查询接口 联调查询各种数据库,打通和各业务系统的联调

2、外部联调

联调功能 联调方式 备注
第三方接入数据联调 1、创建数据映射表,将第三方数据与数据映射表建立业务定义的对应关系,主要包含数据表、字段、语义和精度等定义
2、根据定义好的数据映射数据表结构进行第三方接入数据的写入。
IOT数据接入 联调 联调数字化交付采集的IOT数据包
数据查询接口联调 联调查询语言形式,进行查询语言兼容,正确输出查询结果