软件的概要设计又称为软件系统(程序系统)的设计,本文档应说明软件系统即程序系统设计的总体考虑,包括系统的基本处理流程、软件系统的组织结构、模块划分、功能分配、数据结构、接口、运行、出错处理和系统维护等方面的设计,为详细设计提供基础。
主要负责公司层面的持久化数据的定义。参考“数据架构”梳理中的数据字典excel、数据类型,设计数据统一标准的7类高级数据类型,七种高级数据类型分别为:字典、知识库、对象、关系、时序、图数据以及多维数据类型。
并在此基础上设计的统一数据模型进行管理:
1、包括模型的统一数据标准文件、数据结构、业务规则的管理,
2、包括数据模型、数据融合关系、数据模型映射、数据版本、数据业务含义的管理,
3、包括在数据模型基础上的实现代码,进行数据生成管理。
在数据中台的搭建中,采用统一数据标准管理,可以方便地规范数据资源,并向外提供统一的数据服务。管理行业标准、企业标准,对企业业务系统中涉及到的数据标准及其数据字典进行管理,包含数据标准的维护、查询、数据合理性和逻辑性核检。
统一数据标准文件可以批量导入数据中台,作为统一数据标准。
编写统一数据标准文件,用于管理七种数据类型的数据编码,对所有数据编码进行统一管理,是数据中台集成的基础,主要包含七种高级数据类型:字典、知识库、对象、关系、时序、图数据以及多维数据。
制定数据标准的库、表、字段等的命名规范,确保设计的正式和统一。
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)主数据只能由一个服务、一个业务模块生成和编辑。
2)涉及主数据的字典编码由数据字典管理员统一定义、管理,研发人员、客户经理禁止做任何修改,产品只提供编码别名配置,不提供编码用户自定义。
3)非主数据的字典编码可以提供用户自定义,但是作为一种平台扩展功能,系统默认提供的编码不能被删除、修改。
4)主数据的编码采用单一代码,只采用代理主键的方式(主数据编码不强制含有业务意义,只具有主键作用,比如 UUID,看情况区分要不要前缀。)所有业务意义和业务规则依赖下的关系都由业务字段定义。
4)时间、空间坐标作为通用统一技术形式,业务上可以互相之间映射融合。
5)主数据的编码规则整个系统一但确定,禁止改变。
1)主数据兼容
主数据通过编码规则,在分布式系统下,所有主数据编码不产生冲突。主数据编码规则不变,所有用户、集团、项目的主数据编码不产生冲突。
2)编码兼容
数据标准提供一套标准的编码,形成产品统一的编码语义。每个集团自定义编码采用编码映射表管理,提供自定义编码语义、别名语义。
3)非主数据的数据字典编码
项目可以自定义扩展。但原则上,新字典编码(非主数据默认字典编码),不提供项目上自定义扩展。
4)模板、产品知识等数据兼容
产品默认提供一套标准的模板(包括流程、默认参数值等)、知识等通用业务数据。在建立集团、项目时,提供标准的业务数据,并提供集团、项目自定义。系统升级时,不改变这部分数据。 高级七种数据类型的数据结构完全兼容,条目、数值、内容是不同的。
5)业务数据兼容
功能、权限点、版本、报警规则、控制指令等业务数据产品统一定义,客户禁止修改。系统升级时自动兼容。
6)接口兼容
产品标准接口兼容。客户自定义接口默认在产品标准接口基础上形成,从而系统尽可能自动兼容。未在产品标准接口上定制的接口,系统采取不兼容方式。
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” + “ 集团” + “项目”
1)数据存储结构生成:注明表字段、表索引、表的主键规则、Schema。自动生成数据表
2)业务配置生成:根据业务逻辑,设计配置数据表,通过配置数据表的接口生成业务配置规则
3)接口生成:基于业务配置数据,生成业务数据查询接口,如配置了指标项、指标计算规则及要生成的指标计算结果,入参为业务配置id,出参为指标计算结果(多为多条)
4)数据输出
a)数据文件生成:基于接口的出参生成excel文件,每个指标计算结果作为一列,
b)页面生成:封装web前端excel文件转化工具,将excel文件转化为Html页面
七大数据类型的数据结构管理,包含字典、知识库、对象、关系、时序、图数据以及多维数据的数据表设计、数据增删改查接口管理。
(图数据的数据结构管理暂不考虑)
进行业务规则数据表的设计,及业务规则数据的增删改查接口管理。
数据管理主要是建立数据业务定义、融合、映射和版本管理的 处理模型
数据中台创建新的数据标准,在进行旧数据的迁移和第三方数据的接入时,需要考虑数据的兼容和数据的融合。
1)在做兼容和数据融合的处理时,我们引入数据映射的数据表,
2)将历史数据或者第三方数据与数据映射表建立业务定义的对应关系,主要包含数据表、字段、语义和精度等定义。
3)再数据映射表的数据映射到数据中台标准数据中,完成数据兼容和融合
4)还需在进行数据管理时,对数据的版本进行管理,必要时需要对不同版本的数据进行分表存储。
本次涉及的服务主要:数据字典、数据存储、数据查询、管理监控、人员组织权限、文件管理、报警中心、资产资料、统一收费管理
数据字典、数据存储、数据查询:用于7大基础数据类型的存储和查询
管理监控:在该服务上开发任务调度服务
数据字典、数据存储、数据查询:为主数据存储和查询的基础服务
人员组织权限:为主数据-人员、组织结构、权限管理的业务服务
文件管理:为主数据-文件(合同等文件)的业务服务
资产资料:为主数据-供应商数据、耗材数据、工具数据的业务服务
统一收费:为主数据-租户数据的业务服务
数据字典、数据存储、数据查询:为中控业务数据存储和查询的基础服务,同时支持监测、控制业务,提供物理世界和IOT数据
报警中心:为中控报警业务数据的服务
功能分类 | 功能 | 需求点 | 备注 |
---|---|---|---|
统一数据标准 | 字典数据管理 | 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秒的场景 |
技术 | 约定 | 备注 |
---|---|---|
Spark | xx版本 | 计算引擎 |
Hbase | xx版本 | 分布式数据库 |
MySQL | xx版本 | 关系型数据库 |
Redis | xx版本 | 缓存服务 |
ElasticSearch | xx版本 | 搜索引擎ES |
Zookeeper | xx版本 | 分布式共享存储,保证数据中台计算调度一致性 |
HDFS | xx版本 | 分布式文件系统(Hadoop) |
Flume | xx版本 | IOT数据采集的服务 |
Kfaka | xx版本 | 分布式发布订阅消息系统 ,消息中间件 |
rabbitmq | xx版本 | 消息中间件 |
功能 | 技术复用 | 备注 |
---|---|---|
业务规则配置 技术复用 | 业务流程配置 | |
权限配置 | ||
业务字段配置 | ||
数据接收 技术复用 | DRS数据修复软件 | |
通用数据上传工具ems-upload | ||
通用数据导入工具mysql2hbase | ||
通用数据分发工具ems-transfer | ||
文件服务 技术复用 | Image-service文件图片服务 | |
计算任务 技术复用 | Spark计算引擎 | |
DRS数据修复软件 | ||
大数据实时存储计算 | ||
存储 技术复用 | 分布式数据库:hbase、mysql | |
Redis、Cache系统缓存服务 | ||
数据库访问中间件 | ||
Hbase数据监控-hbaseflow | ||
调度管理 技术复用 | 分布式调度 | |
PFK平台急救箱 | ||
数据查询 技术复用 | 分布式搜索引擎ES | |
metadata-web Hbase数据库查询 | ||
pdfreport PDF工具 |
跨业务跨系统的实时数据处理统一管理平台,毫秒级响应,每秒10000条并发吞吐能力。
详见:http://git.sagacloud.cn/persagy/persagy-dmp-doc
联调功能 | 联调方式 | 备注 |
---|---|---|
数据写入 | 联调内部数据结构定义,通过统一数据标准来规范,避免出现差异化数据结构 | |
查询接口 | 联调查询各种数据库,打通和各业务系统的联调 |
联调功能 | 联调方式 | 备注 |
---|---|---|
第三方接入数据联调 | 1、创建数据映射表,将第三方数据与数据映射表建立业务定义的对应关系,主要包含数据表、字段、语义和精度等定义 2、根据定义好的数据映射数据表结构进行第三方接入数据的写入。 |
|
IOT数据接入 联调 | 联调数字化交付采集的IOT数据包 | |
数据查询接口联调 | 联调查询语言形式,进行查询语言兼容,正确输出查询结果 |