在我们的大数据平台(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. 方便和“智能助理”模块对接,获得基于大模型的问答获取数据的能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SA 注册流程

目录 1. UE开机后按照3GPP TS 38.104定义的Synchronization Raster搜索特定频点 2.UE尝试检测PSS/SSS,取得下行时钟同步,并获取小区的PCI;如果失败则转步骤1搜索下一个频点;否则继续后续步骤; 3.解析Mib,…

设计NOR Flash(SPI接口)的Flashloader(MCU: stm32f4)

目录 概述 1 软硬件 1.1 软硬件信息表 1.2 NOR Flash芯片(W25Q64BVSSI) 1.2.1 W25Q64BVSSI芯片介绍 1.2.2 NOR Flash接口 1.3 MCU与NOR Flash接口 2 SPI Flash功能实现 2.1 软件框架结构 2.2 代码实现 2.2.1 Dev_Inf文件 2.2.2 W25QXX驱动程…

区间动态规划——最长回文子串(C++)

难得心静。 ——2024年6月30日 什么是区间动态规划? 区间动态规划通常以连续区间的求解作为子问题,例如区间 [i, j] 上的最优解用dp[i][j]表示。先在小区间上进行动态规划得到子问题的最优解,再利用小区间的最优解合并产生大区间的最优解。 …

娱乐圈发生震动,AI大模型技术已经取代了SNH48的小偶像?

自2023年以来,全球都被包裹在AI的惊天大潮之中,所有行业都在主动或被动地迎接改变。目前,各行业已经有大量公司正在把AI作为自身发展的最佳路径。其中,娱乐行业作为最被人们熟知的行业也在面对AI的发展时,发生着巨大变…

视频共享融合赋能平台LntonCVS统一视频接入平台数字化升级医疗体系

医疗健康事关国计民生,然而,当前我国医疗水平的地区发展不平衡、医疗资源分布不均和医疗信息系统老化等问题,制约了整体服务能力和水平的提升。视频融合云平台作为推动数字医疗的关键工具,在医疗领域的广泛应用和普及,…

统计信号处理基础 习题解答11-1

题目 观测到的数据具有PDF 在μ给定的条件下,是相互独立的。均值具有先验PDF: 求μ的 MMSE 和 MAP 估计量。另外,当和时将发生什么情况? 解答 和两者都是独立高斯分布,与例题10.1一致,直接套用(10.11&am…

RedisAtomicInteger并发案例

🍰 个人主页:__Aurora__ 🍞文章有不合理的地方请各位大佬指正。 🍉文章不定期持续更新,如果我的文章对你有帮助➡️ 关注🙏🏻 点赞👍 收藏⭐️ RedisAtomicInteger 提供了对整数的原子性操作&a…

《昇思25天学习打卡营第14天 | 昇思MindSpore基于MindNLP+MusicGen生成自己的个性化音乐》

14天 本节学了基于MindNLPMusicGen生成自己的个性化音乐。 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本。 MusicGen模型基于Transformer结构,可以分解为三个不同的阶段…

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

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

等保主机测评防骗指南(资产调研)

你是否测评时常被运维给忽悠?是否觉得以下的对话耳熟? 你:您好,请问你们的主机资产有哪些,包括服务器、数据库、中间件、应用系统等。 甲:我们资产就这两台服务器,数据库什么的都这上面&#…

OpenGL3.3_C++_Windows(25)

阴影失真:阴影的不真实感 条纹样式: 首先理解采样原理:同光的视角下,渲染一张深度图,每个像素,存储同一射线下的深度值(不断更新深度缓冲的结果),即最近片段的深度。接着&#xff0…

hadoop词频统计

1 Hadoop 安装与伪分布的搭建 2 Hadoop词频统计 此文章基于搭建好hadoop之后做的词频统计实验,以上是链接为搭建hadoop的教程 目录 1 HDFS 文件系统常用命令 2 词频统计实验准备工作 2.1 启动hadoop 关闭防火墙 2.2 查看图形化界面 2.3 文件上传 3 词频统计…

isspace()方法——判断字符串是否只由空格组成

自学python如何成为大佬(目录): https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isspace()方法用于判断字符串是否只由空格组成。isspace()方法的语法格式如下: str.isspace() 如果字符串中只包含空格&…

【Unity设计模式】✨使用 MVC 和 MVP 编程模式

前言 最近在学习Unity游戏设计模式,看到两本比较适合入门的书,一本是unity官方的 《Level up your programming with game programming patterns》 ,另一本是 《游戏编程模式》 这两本书介绍了大部分会使用到的设计模式,因此很值得学习 本…

【算法】5分钟了解如何使用PCA主成份分析

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、什么是PCA1.1.PCA的思想1.2.PCA的数学表示 二、什么是PCA的主成份与方差2.1.主成份的方差2.2.主成份的命名 三、如何使用PCA3.1.主成份的代码实现 主成份分析全称为PCA Principle Component Analysis ,它的主…

Linux虚拟串口设置

VSPD虚拟串口软件安装及使用 一、软件安装 1、Configure Virtual Serial Port Driver(VSPD) 1.1 首先下载 Configure Virtual Serial Port Driver(VSPD) 软件 链接:https://pan.baidu.com/s/11aGc2aHGUew5QZ0XhaWXJw 提取码:rmd7 1.2 安装时注意将…

计算机基础之汇编语言学习笔记

学习来源:b站各种学习资料 前置知识:计算机组成原理等知识 学习参考的资源 汇编语言编程的速成指南[上]~从零开始的期末抢救计划 (8086汇编)_哔哩哔哩_bilibili 链接: https://pan.baidu.com/s/1tg_ZW7VD3TS_s1v_EjS89w?pwdak6…

2029年AI服务器出货量将突破450万台,AI推理服务器即将爆发式增长

在2020年,新冠疫情与远程办公模式的兴起推动了所有类型服务器的出货量达到峰值,随后几年里,除了AI服务器之外的所有类别都回归到了正常水平。 根据Omdia的研究数据,AI服务器的出货量在2020年急剧上升,并且至今未显示出…

运筹系列93:VRP精确算法

1. 基础版本 定义 x i j k x_{ijk} xijk​为边 i j ij ij是否由车辆 k k k去运输。如果有时间窗约束的话,再加上一个变量 c i k c_{ik} cik​即可,表示第k辆车到达节点i时的时间点。 第一类客户流量约束,要求每个点都有1个入度和1个出度&…

ios13多窗口(UIWindowScene)学习笔记

ios13引入了UIWindowScene类、UIWindowSceneDelegate协议以便支持多窗口功能,但其适用于ipad,不适用于iphone,因为iphone不支持多窗口功能。注意,这里说的窗口不是UIWindow,而是UIWindowScene。 ios13前后的app的UI架…