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

news2024/7/4 22:25:45

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.coloradmin.cn/o/1880241.html

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

相关文章

《昇思25天学习打卡营第17天 | 昇思MindSporeCycleGAN图像风格迁移互换》

17天 本节学习了CycleGAN图像风格迁移互换。 CycleGAN即循环对抗生成网络,该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。该模型一个重要应用领域是域迁移,可以通俗地理解为图像风格迁移。其实在 CycleGAN 之前&a…

力扣每日一题 6/30 记忆化搜索/动态规划

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 494.目标和【中等】 题目: 给你一个非负整数数组 nums 和一个…

⭐ UI自动化工具轻松实现微信消息提醒 ⚡

🌿🌿🌿🌿🌿🌿 演示效果 🌿🌿🌿🌿🌿🌿 😅😅😅😅😅😅 Python安装…

nvm安装以及idea下vue启动项目过程和注意事项

注意1:nvm版本不要太低,1.1.7会出现下面这个问题,建议1.1.10及其以上版本 然后安装这个教程安装nvm和node.js 链接: nvm安装教程(一篇文章所有问题全搞定,非常详细) 注意2:上面的教程有一步骤…

魔行观察-烤匠麻辣烤鱼-开关店监测-时间段:2011年1月 至 2024年6月

今日监测对象:烤匠麻辣烤鱼,监测时间段:2011年1月 至 2024年6月 本文用到数据源获取地址 魔行观察http://www.wmomo.com/ 品牌介绍: 2013年,第一家烤匠在成都蓝色加勒比广场开业,随后几年成都国金中心店…

《昇思25天学习打卡营第15天 | 昇思MindSpore基于MindSpore的红酒分类实验》

15天 本节学了通过MindSpore的完成红酒分类。 1.K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,是机器学习最基础的算法之一。 1.1分类问题 1.2回归问题 1.3距离的定义 2.数据处理 2.1 数据准备 2.2 数据读取与处…

Spark join数据倾斜调优

Spark中常见的两种数据倾斜现象如下 stage部分task执行特别慢 一般情况下是某个task处理的数据量远大于其他task处理的数据量,当然也不排除是程序代码没有冗余,异常数据导致程序运行异常。 作业重试多次某几个task总会失败 常见的退出码143、53、137…

【C语言 || 数据结构】快速排序

文章目录 前言快速排序1.快排的前后指针法1.1快排的前后指针法的代码实现1.2快排的前后指针法的注意事项 2.快排的挖坑法2.1快排的挖坑法的代码实现2.2快排的挖坑法的注意事项 3.快排的hoare法3.1快排的hoare法的代码实现3.2快排的hoare法的注意事项 4快排的优化4.1快排的三数取…

恢复机制-数据库系统中的故障(事务故障、系统故障、介质故障)、一致性错误、窃取但不强制的缓冲区管理策略

一、引言 数据库管理系统DBMS的事务处理技术实现的一个主要功能部分就是恢复机制,恢复机制完成的功能就是对发生故障后系统中事务的更新结果进行数据恢复,保证事务的原子性和持久性,从而进一步保证数据库的一致性。 数据库系统与其他计算机系…

办公开源利器:ONLYOFFICE

目录 0、引子:一、ONLYOFFICE协作空间1.可集成至Web应用程序2.多种协作方式3.快捷的AI助手4.公共房间:连接第三方存储空间5.集成6.开发人员工具7.用插件拓展功能 二、新增功能1.功能全面的PDF编辑2.PDF 表单3.文本文档编辑器4.电子表格编辑器 三、结语 0…

EasyExcel数据导入

前言: 我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。 看上了网页信息,怎么抓到&#x…

【操作系统】进程管理——进程的概念、组成和特征(个人笔记)

学习日期:2024.6.29 内容摘要:进程的基本概念和特征、状态和转换 进程的概念 程序与进程 程序:是静态的,是存放在磁盘里的可执行文件,就是一系列的指令集合 进程(Process):是动态…

一文带你了解乐观锁和悲观锁的本质区别!

文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题&#xff0…

primeflex overflow样式类相关的用法和案例

文档地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…

库存管理系统基于spingboot vue的前后端分离仓库库存管理系统java项目java课程设计java毕业设计

文章目录 库存管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 库存管理系统 一、项目演示 库存管理系统 二、项目介绍 基于spingboot和vue前后端分离的库存管理系统 功能模块&#xff…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中&#xff0c;常用到AHP-SWOT法进行定量分析&#xff0c;形成判断矩阵后&#xff0c;如何构造整洁的战略四边形是分析的最后一个环节&#xff0c;本文现将相关代码发布如下&#xff1a; import mpl_toolkits.axisartist as axisartist import …

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

java之命令执行审计思路

1 漏洞原理 因用户输入未过滤或净化不完全&#xff0c;导致Web应用程序接收用户输入&#xff0c;拼接到要执行的系统命令中执行。一旦攻击者可以在目标服务器中执行任意系统命令&#xff0c;就意味着服务器已被非法控制。 2 审计中常用函数 一旦攻击者可以在目标服务器中执行…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件&#xff0c;它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持&#xff0c;用户无需重新启动电脑即可在Mac上运行Windows应用程序&#xff0c;实现了真正的无缝切换。 二…