在我们的大数据平台(XSailbaot)上进行企业级数据建模的思路

1. 背景

笔者所在的公司是差不多二十年前搞CIM(公共信息模型的)起家的。当时公司的前辈搞了基于CIS协议的模型服务器、数据服务器、模式编辑器等,形成了一套基于公共信息模型建模的平台系统。其中可视化建模,建好了模式类以后,就有一套面向对象的接口,可以对数据进行增删改查的特性,让我记忆深刻,与使用JDBC或者JPA开发代码操纵数据形成鲜明的对比。在我看来,随着时代的发展,那一套产品已经显得有些不合时宜了,在此处不想去例举太多理由,但我始终觉得其思想仍然有非常多闪光的地方。我一直认为产品可能会落伍、有时代和技术的局限性,但人类解决问题的思路和思想却不会过时。所以我很早就开始构思在大数据平台里面,借鉴这套思想实现一套能和大数据平台契合的“数据建模”模块。

恰好现在有这样一个项目机会,能让我可以开始把它实现出来。幸运的是,笔者构建整个大数据平台的产品,基本都是有相应的项目实践场景,能让我理论和实际相结合,避免造出一个空中楼阁。说实在的,这很累,一边做项目,带新人,一边还得开发大数据平台,作为项目和产品的负责人,很多东西并不总是有可以借鉴的,在真正把产品实现,把路走通之前,眼前经常是迷雾重重的。特别是在做可视化实时计算的时候,那真是一种绝望地坚持,还好走通了,让平台在流式计算、实时同步方面有了坚强的支柱。为数据资产的后台数据推送发布和同步提供了实时同步能力。

2. 数据建模的功能目标

  • 基础建模功能。包括以下功能点:
    • 基于关系数据库的物理层建模能力
    • 基于涛思库的时序数据物理层建模能力
    • 以物理层为基础轻度的业务层建模能力。包括提供基于单表、多表同对象id连接、关联连接的模式类定义能力。
    • 支持字典数据定义
    • 支持EventLog型模式类定义。
    • 支持将外部数据源引入进行,将其中的某些表定义为模式类,从而能利用系统基于模型的数据服务能力
      模型定义的通用数据访问接口
  • 基于模型的通用数据增、删、改、查接口。
    • 模型定义的接口(对模式类的操纵将自动作用于数据库表):
      • 创建模式类定义的接口
      • 修改模式类定义的接口
      • 删除模式类定义的接口
      • 分页过滤查找模式类接口
      • 取得指定id或名称的模式类接口
    • 对于关系型模型,提供以下接口:
      • 创建指定类型的对象
      • 更新指定对象
      • 删除指定对象
      • 分页取得指定类型对象的接口
      • 自动维护parentId(父节点id),pathName(路径名)、pathId(id路径)、createTime(创建时间)、createUserId(创建者Id)、lastEditTime(最近更新时间)、lastEditUserId(最近编辑者用户id)等特性的字段。
      • 对于有parentId特性字段的表,提供树形查询接口
  • 可视化建模能力。提供类似UML的可视化建模能力。能在上面增删改查模式类,查看模式类之间的关联关系。
  • 模型的操作审计、模型版本冻结、模型反演功能。对通过接口对模型进行的增删改操作,有以下能力:
    • 将记录操作内容。
    • 支持模型版本冻结。
    • 支持从某一冻结版本开始,根据操作内容反演出任一时刻、任一操作时的模型。
    • 模型实例数据的操作审计、模式类数据版本冻结、模式类数据反演功能
  • 在模型的版本冻结和模型反演能力基础上,支持对于完全通过接口进行增删改实例数据的某一类数据:
    • 支持操作内容记录
    • 支持某一类数据进行版本冻结
    • 支持从某一冻结版本开始,根据操作内容反演出任一时刻、任一操作时的数据。
  • 基于模型的定制化数据发布能力。基于模型中的模式类,勾选其中某些字段,生成过滤查找、搜索的接口。系统将自动根据选择的过滤查找字段,进行索引优化。分局需要会修改、创建索引。
  • 对于已建模的涛思时序数据,提供常用的通用时序数据访问接口。
  • 对于已建模的存储在关系数据库中的EventLog数据,提供通用的Event访问接口。

3. 数据建模的模块架构

数据建模的模块架构
在大数据平台里面的“数据建模”和CIM建模有些许不同。CIM(公共信息模型)建模是一种业务层数据建模,它有类,继承、属性、角色/关联的概念,注重类型,没有描述继承和关联该怎么建表。 而此处的“数据建模”是偏向物理层的建模,以更好地适应大数据平台环境下数据集成、数据分析所需,所以废除了继承,通过组合实现类似继承的效果,在一定程度上能表达业务层的类型概念。

在现在的数据平台上有一种现象,就是对于一对一关联,通常在实体表中建一个字段来存储;对于一对多关联,一般通过实体表的一个字段或关联表存储;对于多对多关联,通常用关联表存储,但以上情形都不会建外键约束。数据建模中通过定义关联,记录了这种关联关系,并没有建外键。

作为大数据平台中的数据建模,很重要的一点是保持它的开放性和包容性。开放性主要体现在偏物理层建模,方便数据集成和数据分析,包容性体现在可以将外部的数据源通过定义的方式引入到建模平台中,获得和自建模型相同的接口服务。当然引入的外部数据源,数据建模工具是不会修改其数据表的。

4. 数据建模的意义

主要有以下几点:

  1. “设计即开发”。建模的过程就获得了通常情况下已经够用的增、删、改、查接口。节省了接口开发时间,增加了可控性。
  2. 可以将其作为一种已定义的数据资产,在“数据资产”中,可以将其纳入到数据资产目录中,方便管控和发布。
  3. 方便和“智能助理”模块对接,获得基于大模型的问答获取数据的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin中对空的很多处理

代码图片直观效果 逐行解释Kotlin中对空的各种情况的使用 private fun testNull() {val flag 1var name: String? nullvar user: User? // 有警告, 因为下面的赋值可以和这一行定义合并var zhangUser: User? User()var wangUser: User User() // 提示Explicitly given t…

AttGAN实验复现 2024

AttnGAN 代码复现 2024 文章目录 AttnGAN 代码复现 2024简介环境python 依赖数据集TrainingPre-train DAMSMTrain AttnGAN SamplingB_VALIDATION 为 False (默认)B_VALIDATION 为 True 参考博客 简介 论文地址: https://arxiv.org/pdf/1711.10485.pdf 代码 python…

C++: 如何用C语言实现C++的虚函数机制?

前言 在 googletest的源码中,看到gtest-matchers.h 中实现的MatcherBase 类自定义了一个 VTable,这种设计实现了一种类似于C虚函数的机制。C中的虚函数机制实质上就是通过这种方式实现的,本文用c语言自定义虚函数表VTable实现了一下virtual的…

Workerman在线客服系统源码,附搭建教程

源码介绍: Workerman在线客服系统源码。 workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天…

微服务架构中的调试难题与分布式事务解决方案

微服务架构作为现代软件开发的一种主要趋势,因其灵活性、高可维护性和易于扩展的特点,得到了广泛的应用。然而,在享受微服务架构带来的诸多优点的同时,开发者也面临着一些新的挑战。调试的复杂性和分布式事务的处理是其中两个较为…

我的创作纪念日2024/07/01

机缘 最初成为创作者的初心,源于对知识的渴望和对分享的热爱。在多年的学习和工作过程中,我积累了大量的知识和经验,而这些经验和知识往往是通过实战项目和日常学习得来的。我发现,通过写作的方式将这些经验和知识记录下来&#…

掌握这五大要诀,轻松实现卓越管理

卓越的管理是团队取得成功的关键,要实现卓越管理,管理者需要明白卓越管理的秘诀。 一、定目标:明确方向,激发动力 卓越的管理必须有明确的目标。 一个清晰、具体、可衡量的目标能够为团队指明方向,激发成员的动力。…

240630_昇思学习打卡-Day12-Transformer中的Multiple-Head Attention

240630_昇思学习打卡-Day12-Transformer中的Multiple-Head Attention 以下为观看大佬课程及查阅资料总结所得,附大佬视频链接:Transformer中Self-Attention以及Multi-Head Attention详解_哔哩哔哩_bilibili,强烈建议先去看大佬视频&#xff…

【JavaScript脚本宇宙】从新手到专家:掌握主流JavaScript图表库的精髓

数据之美:探索六款不可错过的JavaScript图表库 前言 随着Web技术的快速发展,动画在网页设计中扮演着越来越重要的角色。不仅能够提升用户体验,还能使网站更加生动和吸引人。为了帮助开发者更轻松地实现各种动画效果,市面上出现了…

python解锁图片相似度的神奇力量

在这个信息爆炸的时代,图片成为了我们传递信息、表达情感和记录生活的重要方式。然而,面对海量的图片资源,如何快速准确地找到相似的图片,成为了一个亟待解决的问题。现在,让我们为您揭开图片相似度的神秘面纱,带您领略这一创新技术的魅力! 图片相似度技术,就像是一位…

修改uniapp中 input 的 placeholder 样式

使用placeholder-class增加类名&#xff08;这个可以&#xff09; <input type"text" class"search-input" placeholder-class"search-input-placeholder" placeholder"输入关键词搜索" /><style scoped> /deep/ .search…

docker harbor仓库搭建,主从库复制

背景&#xff1a;需要主机安装docker-ce和docer-compose #1.安装相关依赖. yum install -y yum-utils device-mapper-persistent-data lvm2 #2.下载官方的docker yum源文件 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo …

10款好用不火的PC软件,真的超好用!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/市场上有很多软件&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;它们的作用非常强大&#xff0c;简洁…

cJSON源码解析之add_item_to_object函数

文章目录 前言add_item_to_object函数是干什么的add_item_to_object代码解析函数实现函数原理解析开头的代码constant_key参数的作用最后的if判断 add_item_to_array函数 总结 前言 在我们的日常编程中&#xff0c;JSON已经成为了一种非常常见的数据交换格式。在C语言中&#…

MySQL 索引之外的相关查询优化总结

在这之前先说明几个概念&#xff1a; 1、驱动表和被驱动表&#xff1a;驱动表是主表&#xff0c;被驱动表是从表、非驱动表。驱动表和被驱动表并非根据 from 后面表名的先后顺序而确定&#xff0c;而是根据 explain 语句查询得到的顺序确定&#xff1b;展示在前面的是驱动表&am…

UI Toolkit系统学习

UI Toolkit 此文章用于学习UnityUI系统&#xff0c;手头的项目做完会来完善 官方文档 Unity上方菜单栏点击Window->UI Toolkit->Samples可以看UI Toolkit中的很多样例 使用 UI Toolkit 和 UI Builder 制作物品编辑器 在文件夹中右键->Create->UI Toolkit->Edi…

英特尔 Gaudi 加速辅助生成

随着模型规模的增长&#xff0c;生成式人工智能的实现需要大量的推理资源。这不仅增加了每次生成的成本&#xff0c;而且还增加了用于满足此类请求的功耗。因此&#xff0c;文本生成的推理优化对于降低延迟、基础设施成本以及功耗都至关重要&#xff0c;其可以改善用户体验并提…

leetCode-hot100-动态规划专题

动态规划 动态规划定义动态规划的核心思想动态规划的基本特征动态规划的基本思路例题322.零钱兑换53.最大子数组和72.编辑距离139.单词拆分62.不同路径63.不同路径Ⅱ64.最小路径和70.爬楼梯121.买卖股票的最佳时机152.乘积最大子数组 动态规划定义 动态规划&#xff08;Dynami…

【训练篇】MLU370-M8 完成 qwen1.5-7b-chat-lora训练及推理

文章目录 前言一、平台环境配置二、环境 or 模型准备1.模型下载2.环境准备2.1 modelscope2.2 transformers2.3 accelerate2.4 deepspeed2.5 peft2.6 环境代码修改 3训练代码准备4 代码修改 三&#xff0c;训练后推理验证四.推理效果展示1.微调前2.微调后 前言 本期我们采用魔塔…

【高考志愿】医学

目录 一、明确职业定位与兴趣 二、选择大学与专业 三、考虑身体条件 四、了解录取规则 五、考虑选科与成绩 六、注意志愿填报策略 七、关注就业前景 八、资深医生的建议 高考志愿填报学医时&#xff0c;考生需要综合考虑多个因素&#xff0c;确保自己能够做出明智的选择…