元数据基础数据设计

元数据基础数据设计

解决问题:

1.基础数据公有化后,当需要新增业务,例如门店、商品模块,
这时后端无需开发,直接调用公共服务即可.

2.解决无限拓展的属性,比如商品的字段需要不停的添加,
每添加一次就要改代码和数据库,增加了很大的开发量.(mongo可直接扩展字段)

3.如果直接使用mysql的json字段来实现属性的无限拓展,
使用属性来做筛选,性能会非常的慢.

实现功能:

1.元数据
    例如门店、商品、公司、区域模块等
    
2.元数据配置属性
    元数据:商品
    属性:价格、是否可订货、sku、spu、规格等
    
3.元数据关联元数据
    元数据:商品、门店、公司
    公司下有哪些门店,门店下有哪些商品等
    
4.元数据A关联的元数据B需要单独的属性
    元数据:商品、单位
    毫克单位是商品A的订货单位、和盘点单位
    毫克单位是商品B的订货单位、和销售单位
    
5.值限制
    元数据的属性值做限制,类似于最大最小值,是否允许拼音搜索等
    元数据关系的属性值限制,类似于是否允许一对多,是否有属性.
    
6.用户关联元数据
    用户的财务报表关联到了门店、商品等信息.
    
7.任务
    通过任务的调度,来对数据做变更操作.
    控制数据执行的生命周期

mysql

metadata_schema 元数据名字等基本信息

    code         编号
    name         名称
    description  描述
    ignore_state 忽略状态
    allow_parent 允许父级

metadata_schema_attr 元数据的属性


    code         编号
    name         名称
    schema_code 
    description
    attr_type    字段类型
    constraints  值限制 详情如下:
    
        例如值: {"max": "50", "min": "1", "unique": true, "required": true, "allow_names": [], "allow_values": [], "pinyin_search": true}
        max : 最大长度
        min : 最小长度
        unique : 唯一
        required : 必填
        allow_names : 可选名称
        allow_names : 可选名称的值
        pinyin_search : 是否允许拼音搜索
        

metadata_schema_relation 元数据的关联


    code                 编号
    name                 名称
    description
    sourece_schema_id    原始schema元数据id
    target_schema_id     被关联目标schema元数据id
    constraints          值限制 详情如下:
    
        例如值: {"ignore_state": false ,"has_attr": false, "multiple": false}
        ignore_state : 是否忽略状态管理
        multiple : 是否是多连级,一对多
        has_attr : 是否有属性,比如克单位是某个商品的订货单位.
        
    

metadata_schema_relation_attr 元数据关联里的属性
    
    name                
    code                
    schema_relation_id  元数据的关联的id
    description
    attr_type           字段类型
    constraints         值限制 详情如下:
    
        和metadata_schema_attr表里的constraints字段一致

metadata_entity 元数据数据实体
    
    code                  数据code
    schema_code           元数据code
    state                 状态 是否可用
    content               内容 例如:{"code": "001", "name": "A店", "status": "enabled"}
    content_pending       等待内容
    process_status        同步状态 未同步、同步中、已同步、同步失败、同步异常等
    form                  属性的值 当查询不对里面的值做过滤时可以直接使用
    
    
metadata_relation 元数据关联数据实体

    code                  数据code
    soure_schema_code     元数据code
    target_schema_code    目标元数据code
    soure_entity_code     实体 code
    target_entity_code    目标实体code
    state                 状态 是否可用
    content               内容 对应的一些属性的值{},其他的在目标实体有 
    content_pending       等待内容
    process_status        同步状态 未同步、同步中、已同步、同步失败、同步异常等
    form                  属性的值 当查询不对里面的值做过滤时可以直接使用

user_relation   用户关联元数据(简化表)
    
    user_code             用户code
    relation_code         关联元数据实体的code

metadata_task   任务
    
    schema_type           类型:元数据、实体
    name
    source_code           源code
    target_code           目标code
    content               内容 对应的一些属性的值{},其他的在目标实体有 
    content_pending       等待内容
    process_status        同步状态 未同步、同步中、已同步、同步失败、同步异常等
    start                 开始时间
    end                   结束时间
    action                操作 crud
    retry                 重试次数
    message               最后的执行结果


metadata_task_log 任务执行的详情
    
    task_id               任务id
    action                操作 crud
    start                 开始时间
    end                   结束时间
    action                操作 crud
    message               最后的执行结果

mongo

    entity库: 专门存放 元数据数据实体
        
        表维度:按照一个元数据+租户 = 表
        表名::store_200  门店表 租户为200的
        字段为门店添加的所有属性
        字段:code(用于所有关联)、name、address、tel、status
    
    relation库: 专门存放 元数据数据实体
    
        表维度:按照两个元数据+租户 = 表
        元数据:门店、商品
        表:store_product_200 门店商品关系表 租户为200的
        字段为门店商品关系添加的所有属性
        字段:source_entity_i(商品id)、target_entity_id(商品id),关系所添加的属性.....

一.元数据

例如门店、商品、公司、区域模块等

crud全都使用metadata_schema表来新建一个商品模块.

二.元数据配置属性

元数据:商品
属性:价格、是否可订货、sku、spu、规格等

rud:
    1.使用:metadata_schema_attr表来新建商品模块的属性
    2.使用mongo的entity库来创建一个product商品表
    4.商品所有属性的rud操作直接使用product表即可.
c:
    1.通过schema表里的code,就能在attr表里查出门店有哪些属性
    2.通过attr里的code,在metadata_entity表里获取到实体的总code
    3.使用entity表code,就能在mongo的entity库product表查出属性的值

三.元数据关联元数据

元数据:商品、门店、公司
公司下有哪些门店,门店下有哪些商品等

crud:借助上个步骤,获取到实体code,
直接操作metadata_relation表即可(通过soure_entity_code筛选)

四.元数据A关联的元数据B需要单独的属性

元数据:商品、单位
毫克单位是商品A的订货单位、和盘点单位
毫克单位是商品B的订货单位、和销售单位

crud:借助上个步骤,获取到metadata_relation表code,
直接操作mongo的relation库,把对应的属性添加进去即可

五.值限制

1.元数据的属性值做限制,类似于最大最小值,是否允许拼音搜索等
    metadata_schema_attr表里获取constraints字段

2.元数据关系的属性值限制,类似于是否允许一对多,是否有属性.
    metadata_schema_relation表里获取constraints字段

六.用户关联元数据

用户的财务报表关联到了门店、商品等信息.

简化user_relation表,只是大概描述下大致意思
需求报表,里面包含数量,商品,门店,金额,用户
实现:那么就需要创建一个report表
重要字段:user_code,store_code,product_code
store_code、product_code对应的是metadata_entity表里的code

七.任务

通过任务的调度,来对数据做变更操作.
控制数据执行的生命周期

使用metadata_task表来做任务调度和控制生命周期
使用metadata_task_log来记录每个步骤详细的过程和结果.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值